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. Problem in Connecting ctkDoubleSpinBox
Forum Updated to NodeBB v4.3 + New Features

Problem in Connecting ctkDoubleSpinBox

Scheduled Pinned Locked Moved Unsolved General and Desktop
23 Posts 5 Posters 2.6k 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.
  • M Offline
    M Offline
    Meera Hadid
    wrote on last edited by Meera Hadid
    #1
    • I am trying to add an action listener to ctkDoubleSpinBox of qMRMLSliceControllerWidget and change QLabel value in qMRMLSliceWidget.
    • I am able to access ctkDoubleSpinBox inside qMRMLSliceWidget and add a connection as shown below.
    connect(this->SliceController->spinBox, SIGNAL(valueChanged(double)), this, SLOT(updateLabel()));
    
    void qMRMLSliceWidget::updateLabel()
    {
        Q_D(qMRMLSliceWidget);
        d->SpinBoxVal->setText(d->SliceController->spinBox->cleanText());
    }
    
    • Error:
    'QMetaObject::Connection QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)': cannot convert argument 1 from 'ctkDoubleSpinBox *' to 'const QObject *'
    
    • How can I add a connection to ctkDoubleSpinBox?
    jsulmJ 1 Reply Last reply
    0
    • M Meera Hadid
      • I am trying to add an action listener to ctkDoubleSpinBox of qMRMLSliceControllerWidget and change QLabel value in qMRMLSliceWidget.
      • I am able to access ctkDoubleSpinBox inside qMRMLSliceWidget and add a connection as shown below.
      connect(this->SliceController->spinBox, SIGNAL(valueChanged(double)), this, SLOT(updateLabel()));
      
      void qMRMLSliceWidget::updateLabel()
      {
          Q_D(qMRMLSliceWidget);
          d->SpinBoxVal->setText(d->SliceController->spinBox->cleanText());
      }
      
      • Error:
      'QMetaObject::Connection QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)': cannot convert argument 1 from 'ctkDoubleSpinBox *' to 'const QObject *'
      
      • How can I add a connection to ctkDoubleSpinBox?
      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

      ctkDoubleSpinBox

      Is it derived from QObject?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Meera Hadid
        wrote on last edited by
        #3

        Yes.
        ctkDoubleSpinBox class:

        class CTK_WIDGETS_EXPORT ctkDoubleSpinBox : public QWidget
        
        jsulmJ 1 Reply Last reply
        0
        • M Meera Hadid

          Yes.
          ctkDoubleSpinBox class:

          class CTK_WIDGETS_EXPORT ctkDoubleSpinBox : public QWidget
          
          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Meera-Hadid Does it also have Q_OBJECT macro? Like

          class MyClass : public QObject
          {
              Q_OBJECT
          

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Meera Hadid
            wrote on last edited by
            #5

            Yes.

            class CTK_WIDGETS_EXPORT ctkDoubleSpinBox : public QWidget
            {
              Q_OBJECT
              Q_ENUMS(SetMode)
              Q_FLAGS(DecimalsOption DecimalsOptions)
              Q_ENUMS(SizeHintPolicy)
            
              Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment)
              Q_PROPERTY(bool frame READ hasFrame WRITE setFrame)
              Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
              Q_PROPERTY(QString prefix READ prefix WRITE setPrefix)
              Q_PROPERTY(QString suffix READ suffix WRITE setSuffix)
              Q_PROPERTY(QString cleanText READ cleanText)
             ....
            
            1 Reply Last reply
            0
            • Christian EhrlicherC Offline
              Christian EhrlicherC Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

              ctkDoubleSpinBox

              Did you also include the header for this class where you do the connect?

              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
              Visit the Qt Academy at https://academy.qt.io/catalog

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Meera Hadid
                wrote on last edited by
                #7

                Yes I Did.

                #include <ctkDoubleSpinBox.h>
                
                
                jsulmJ 1 Reply Last reply
                0
                • M Meera Hadid

                  Yes I Did.

                  #include <ctkDoubleSpinBox.h>
                  
                  
                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  @Meera-Hadid Try to do the connect using new connect syntax https://doc.qt.io/qt-5/signalsandslots.html

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  M 1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    ChrisW67
                    wrote on last edited by
                    #9

                    I think Christian meant, did you add the header ctkDoubleSpinBox.h to the HEADERS variable in your PRO file?

                    Did you run qmake after doing that?
                    Have you tried a clean rebuild of everything?

                    1 Reply Last reply
                    0
                    • jsulmJ jsulm

                      @Meera-Hadid Try to do the connect using new connect syntax https://doc.qt.io/qt-5/signalsandslots.html

                      M Offline
                      M Offline
                      Meera Hadid
                      wrote on last edited by
                      #10

                      @jsulm

                      • do you mean this syntax?
                       Counter a, b;
                          QObject::connect(&a, &Counter::valueChanged,
                                           &b, &Counter::setValue);
                      
                      • I am getting a syntax error when I use this: this->SliceController->&spinBox
                      JonBJ 1 Reply Last reply
                      0
                      • M Meera Hadid

                        @jsulm

                        • do you mean this syntax?
                         Counter a, b;
                            QObject::connect(&a, &Counter::valueChanged,
                                             &b, &Counter::setValue);
                        
                        • I am getting a syntax error when I use this: this->SliceController->&spinBox
                        JonBJ Offline
                        JonBJ Offline
                        JonB
                        wrote on last edited by JonB
                        #11

                        @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

                        I am getting a syntax error when I use this: this->SliceController->&spinBox

                        This is not legal C++. It should be:

                        &this->SliceController->spinBox
                        

                        Whether you want the & depends on whether spinbox is already a pointer or not (I think yours is a pointer, in which case you would not want it?)

                        M 1 Reply Last reply
                        1
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          @JonB said in Problem in Connecting ctkDoubleSpinBox:

                          &this->SliceController->spinBox

                          But according to the error message

                          cannot convert argument 1 from 'ctkDoubleSpinBox *' to 'const QObject *

                          It's already a pointer so the & is wrong.
                          I still think the header for this class is not included where the connect is done so the compiler doesn't know that ctkDoubleSpinBox is derived from QObject.

                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                          Visit the Qt Academy at https://academy.qt.io/catalog

                          M 1 Reply Last reply
                          2
                          • Christian EhrlicherC Christian Ehrlicher

                            @JonB said in Problem in Connecting ctkDoubleSpinBox:

                            &this->SliceController->spinBox

                            But according to the error message

                            cannot convert argument 1 from 'ctkDoubleSpinBox *' to 'const QObject *

                            It's already a pointer so the & is wrong.
                            I still think the header for this class is not included where the connect is done so the compiler doesn't know that ctkDoubleSpinBox is derived from QObject.

                            M Offline
                            M Offline
                            Meera Hadid
                            wrote on last edited by
                            #13

                            @Christian-Ehrlicher

                            • I did include #include <ctkDoubleSpinBox.h>
                            jsulmJ 1 Reply Last reply
                            0
                            • M Meera Hadid

                              @Christian-Ehrlicher

                              • I did include #include <ctkDoubleSpinBox.h>
                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #14

                              @Meera-Hadid Fix your connect as suggested by @JonB and try again

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              0
                              • JonBJ JonB

                                @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

                                I am getting a syntax error when I use this: this->SliceController->&spinBox

                                This is not legal C++. It should be:

                                &this->SliceController->spinBox
                                

                                Whether you want the & depends on whether spinbox is already a pointer or not (I think yours is a pointer, in which case you would not want it?)

                                M Offline
                                M Offline
                                Meera Hadid
                                wrote on last edited by
                                #15

                                @JonB

                                • Yes when I tried without using & it was raising an error that cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                @jsulm

                                • The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'
                                JonBJ jsulmJ 3 Replies Last reply
                                0
                                • M Meera Hadid

                                  @JonB

                                  • Yes when I tried without using & it was raising an error that cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                  @jsulm

                                  • The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'
                                  JonBJ Offline
                                  JonBJ Offline
                                  JonB
                                  wrote on last edited by
                                  #16

                                  @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

                                  @JonB

                                  Yes when I tried without using & it was raising an error that cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                  @jsulm

                                  The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                  Inserting a & randomly will not help. The message already tells that pointer-ness is not the issue.

                                  1 Reply Last reply
                                  0
                                  • M Meera Hadid

                                    @JonB

                                    • Yes when I tried without using & it was raising an error that cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                    @jsulm

                                    • The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'
                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #17

                                    @Meera-Hadid said in Problem in Connecting ctkDoubleSpinBox:

                                    The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                    Do you mean you get same error message if you use new connect syntax?

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    1 Reply Last reply
                                    1
                                    • M Meera Hadid

                                      @JonB

                                      • Yes when I tried without using & it was raising an error that cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'

                                      @jsulm

                                      • The issue is not getting pointer the issue is it cannot convert from 'ctkDoubleSpinBox *' to 'const QObject *'
                                      JonBJ Offline
                                      JonBJ Offline
                                      JonB
                                      wrote on last edited by JonB
                                      #18

                                      @Meera-Hadid
                                      Please do the following:

                                      • First, delete all the files from the build output directory. Do a fresh qmake followed by a build. Does the error still occur?
                                      • From the line number in the error message, are you quite sure it is on the connect() statement you have shown, and not some other?
                                      • I believe I already advised this before in answer to the same problem from you in another thread: on the line above the connect() put in
                                      const QObject *temp = this->SliceController->spinBox;
                                      

                                      Does that error (show message)?

                                      M 1 Reply Last reply
                                      0
                                      • JonBJ JonB

                                        @Meera-Hadid
                                        Please do the following:

                                        • First, delete all the files from the build output directory. Do a fresh qmake followed by a build. Does the error still occur?
                                        • From the line number in the error message, are you quite sure it is on the connect() statement you have shown, and not some other?
                                        • I believe I already advised this before in answer to the same problem from you in another thread: on the line above the connect() put in
                                        const QObject *temp = this->SliceController->spinBox;
                                        

                                        Does that error (show message)?

                                        M Offline
                                        M Offline
                                        Meera Hadid
                                        wrote on last edited by
                                        #19

                                        @JonB

                                        • const QObject *temp = this->SliceController->spinBox;
                                          this works
                                        • But the signal SIGNAL(valueChanged(double)) doesn't get activated (QLabel value doesn't change). Is it because temp is returing nullptr?
                                        JonBJ 1 Reply Last reply
                                        0
                                        • M Meera Hadid

                                          @JonB

                                          • const QObject *temp = this->SliceController->spinBox;
                                            this works
                                          • But the signal SIGNAL(valueChanged(double)) doesn't get activated (QLabel value doesn't change). Is it because temp is returing nullptr?
                                          JonBJ Offline
                                          JonBJ Offline
                                          JonB
                                          wrote on last edited by
                                          #20

                                          @Meera-Hadid

                                          Is it because temp is returing nullptr?

                                          Pardon? Are you saying this->SliceController->spinBox == nullptr at the time you execute the connect() statement?

                                          Separately, put a qDebug() statement as the first thing in your void qMRMLSliceWidget::updateLabel().

                                          M 1 Reply Last reply
                                          0

                                          • Login

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