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
QtWS25 Last Chance

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 11.8k Views
  • 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.
  • S Offline
    S Offline
    Sowmiya R
    wrote on 9 Aug 2017, 07:17 last edited by
    #7

    @raven-worx

    Can you please elaborate your answer.

    thanks,
    Sowmiya

    R 1 Reply Last reply 9 Aug 2017, 07:18
    0
    • S Sowmiya R
      9 Aug 2017, 07:17

      @raven-worx

      Can you please elaborate your answer.

      thanks,
      Sowmiya

      R Offline
      R Offline
      raven-worx
      Moderators
      wrote on 9 Aug 2017, 07:18 last edited by
      #8

      @Sowmiya-R
      simply try to rename the on_doublespinbox_valuechaged() slot

      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
      If you have a question please use the forum so others can benefit from the solution in the future

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

        @raven-worx

        I have renamed the slot and connected in following way,

        connect(ui->doubleSpinBox, SIGNAL(valueChanged(QString)), this, SLOT(doubleSpinBoxvalueChanged1(QString)));

        Now also, the slot has called twice only if I click Qt doublespinbox up/down control.

        If I press keyboard up/down key or mouse scroll up/down button, the slot has called once.

        Thanks,
        Sowmiya

        R 1 Reply Last reply 9 Aug 2017, 10:50
        0
        • S Sowmiya R
          9 Aug 2017, 10:44

          @raven-worx

          I have renamed the slot and connected in following way,

          connect(ui->doubleSpinBox, SIGNAL(valueChanged(QString)), this, SLOT(doubleSpinBoxvalueChanged1(QString)));

          Now also, the slot has called twice only if I click Qt doublespinbox up/down control.

          If I press keyboard up/down key or mouse scroll up/down button, the slot has called once.

          Thanks,
          Sowmiya

          R Offline
          R Offline
          raven-worx
          Moderators
          wrote on 9 Aug 2017, 10:50 last edited by
          #10

          @Sowmiya-R
          there must be anything in your code causing this misbehavior.
          Did you reimplement any event-handlers, event-filters, widgets, etc. in your application?

          --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
          If you have a question please use the forum so others can benefit from the solution in the future

          1 Reply Last reply
          0
          • 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
                • Vinod KuntojiV Offline
                  Vinod KuntojiV 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