Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt DoubleSpin Box value changed slot has called twice
Forum Updated to NodeBB v4.3 + New Features

Qt DoubleSpin Box value changed slot has called twice

Scheduled Pinned Locked Moved Unsolved General and Desktop
qt creatorqt 5.5c++slotsdebugger
22 Posts 6 Posters 12.2k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mrjj
    Lifetime Qt Champion
    wrote on 9 Aug 2017, 11:00 last edited by
    #11

    Hi
    Tried with 5.5.1 in default GUI project
    Cannot reproduce.
    alt text

    1 Reply Last reply
    0
    • S Offline
      S Offline
      Sowmiya R
      wrote on 9 Aug 2017, 11:00 last edited by
      #12

      I have created a sample application, it contains only QtdoubleSpinbox.
      I have not overridden any methods.

      below is my CPP code

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include "qdebug.h"
      #include <qspinbox.h>
      
      MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
      {
      
          ui->setupUi(this);
          connect(ui->doubleSpinBox, SIGNAL(valueChanged(QString)), this, SLOT(on_doubleSpinBox_valueChanged1(QString)));
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      void MainWindow::on_doubleSpinBox_valueChanged1(const QString &arg1)
      {
          qDebug()<<"doubleSpinBox value changed: "<<arg1;
      }
      
      M 1 Reply Last reply 9 Aug 2017, 11:03
      0
      • S Sowmiya R
        9 Aug 2017, 11:00

        I have created a sample application, it contains only QtdoubleSpinbox.
        I have not overridden any methods.

        below is my CPP code

        #include "mainwindow.h"
        #include "ui_mainwindow.h"
        #include "qdebug.h"
        #include <qspinbox.h>
        
        MainWindow::MainWindow(QWidget *parent) :
            QMainWindow(parent),
            ui(new Ui::MainWindow)
        {
        
            ui->setupUi(this);
            connect(ui->doubleSpinBox, SIGNAL(valueChanged(QString)), this, SLOT(on_doubleSpinBox_valueChanged1(QString)));
        }
        
        MainWindow::~MainWindow()
        {
            delete ui;
        }
        
        void MainWindow::on_doubleSpinBox_valueChanged1(const QString &arg1)
        {
            qDebug()<<"doubleSpinBox value changed: "<<arg1;
        }
        
        M Offline
        M Offline
        mrjj
        Lifetime Qt Champion
        wrote on 9 Aug 2017, 11:03 last edited by
        #13

        @Sowmiya-R
        Must be something in your Qt/compiler I guess ??
        Can you try this test
        https://www.dropbox.com/s/9eftxqghndn2bhw/myspinbox.zip?dl=0

        S 1 Reply Last reply 9 Aug 2017, 11:24
        0
        • V Offline
          V Offline
          Vinod Kuntoji
          wrote on 9 Aug 2017, 11:12 last edited by
          #14

          @Sowmiya-R ,
          Hi,
          You can use Qt::UniqueConnection in Connect statement.

          C++, Qt, Qt Quick Developer,
          PthinkS, Bangalore

          1 Reply Last reply
          0
          • M mrjj
            9 Aug 2017, 11:03

            @Sowmiya-R
            Must be something in your Qt/compiler I guess ??
            Can you try this test
            https://www.dropbox.com/s/9eftxqghndn2bhw/myspinbox.zip?dl=0

            S Offline
            S Offline
            Sowmiya R
            wrote on 9 Aug 2017, 11:24 last edited by
            #15

            @mrjj

            I have tested your code.

            I am able to reproduce the same in debug mode.
            Can you please put a break point in slot function and run it in debug mode and see.

            M 1 Reply Last reply 9 Aug 2017, 11:41
            0
            • S Sowmiya R
              9 Aug 2017, 11:24

              @mrjj

              I have tested your code.

              I am able to reproduce the same in debug mode.
              Can you please put a break point in slot function and run it in debug mode and see.

              M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 9 Aug 2017, 11:41 last edited by
              #16

              @Sowmiya-R
              Ahh, now i see.
              Yes the debugger seems to interfere with event loop so it does indeed call it twice on one click
              if u place break point there. Else Not.

              void MainWindow::on_doubleSpinBox_valueChanged(const QString &arg1)
              {
                 static int hmm=0;
                  qDebug() << arg1;
                  hmm++;
                  qDebug() << hmm;
              }
              

              "1,00"
              1
              "2,00"
              2

              I would guess that pausing it triggers the repeat feature and since it dont get an mouse release event its why.

              1 Reply Last reply
              0
              • S Offline
                S Offline
                Sowmiya R
                wrote on 10 Aug 2017, 05:25 last edited by
                #17

                I have developed a application using Qt, there regardless of debug mode or release mode value changed slot has called twice only on spinbox box up/down controls.
                I try to reproduce the same in sample application, but its happening only in debug mode.

                There is something missing in my application. I will check it out.
                Thank you guys for you suggestions.

                M 1 Reply Last reply 10 Aug 2017, 06:47
                0
                • S Sowmiya R
                  10 Aug 2017, 05:25

                  I have developed a application using Qt, there regardless of debug mode or release mode value changed slot has called twice only on spinbox box up/down controls.
                  I try to reproduce the same in sample application, but its happening only in debug mode.

                  There is something missing in my application. I will check it out.
                  Thank you guys for you suggestions.

                  M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 10 Aug 2017, 06:47 last edited by
                  #18

                  @Sowmiya-R

                  But it ONLY happens for me if i set break point.
                  Never, ever else.

                  Do it happen for you if yo have NO break points ?

                  S 1 Reply Last reply 10 Aug 2017, 07:28
                  0
                  • M mrjj
                    10 Aug 2017, 06:47

                    @Sowmiya-R

                    But it ONLY happens for me if i set break point.
                    Never, ever else.

                    Do it happen for you if yo have NO break points ?

                    S Offline
                    S Offline
                    Sowmiya R
                    wrote on 10 Aug 2017, 07:28 last edited by
                    #19

                    @mrjj

                    yeah!

                    Without break point also its calling twice.

                    M 1 Reply Last reply 10 Aug 2017, 08:16
                    0
                    • S Sowmiya R
                      10 Aug 2017, 07:28

                      @mrjj

                      yeah!

                      Without break point also its calling twice.

                      M Offline
                      M Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 10 Aug 2017, 08:16 last edited by
                      #20

                      @Sowmiya-R
                      Ok, that does not happen for me.
                      Without break point it works correctly here.

                      I have no idea what could be wrong with your Qt.

                      Since you are using a clean project to test, i assume is something with your pc or Qt.

                      1 Reply Last reply
                      0
                      • W Offline
                        W Offline
                        Wael11
                        wrote on 22 Dec 2020, 09:59 last edited by
                        #21

                        The double call to slot happened in my case only with a breakpoint in the slot function, otherwise it is called once only. The second call was triggered by a timer event

                        JonBJ 1 Reply Last reply 22 Dec 2020, 10:41
                        0
                        • W Wael11
                          22 Dec 2020, 09:59

                          The double call to slot happened in my case only with a breakpoint in the slot function, otherwise it is called once only. The second call was triggered by a timer event

                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on 22 Dec 2020, 10:41 last edited by JonB
                          #22

                          @Wael11
                          For anyone reading this: This is known behaviour, which I stumbled across a long time ago and it was infuriating.

                          With a QSpinbox Qt Internal code uses a timer on clicks/presses. If you step through in debugger you exceed the timeout and get bad/double behaviour.

                          Simplest: change all connect() to QSpinbox click/key to pass Qt::QueuedConnection as last parameter for connection type, not default Qt::DirectConnection. Now you can use debugger breakpoints and all will be well. I wrote a method to connect all my spinboxes like this.

                          1 Reply Last reply
                          4

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved