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.
  • 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 Online
                                  JonBJ Online
                                  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