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 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