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. ui detect mouse event on objects

ui detect mouse event on objects

Scheduled Pinned Locked Moved Unsolved General and Desktop
26 Posts 6 Posters 4.9k 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 medyakovvit

    @Pfanne

    for (int i = 0; i < 48; i++) 
    {
        QString cbName = "IO_";
        cbName.append(QString::number(i + 1));
         QCheckBox* cb = ui->SITIPEMaster->findChild<QCheckBox*>(cbName);
    
        cb->setChecked(sitipe_master.ptm.id[id].io[i].value);
        // you can use toggled() or clicked()
        connect(cb, &QCheckBox::toggled, cb, [id, i](bool checked)) {
            // here you have 'i' 
        });
    }
    
    P Offline
    P Offline
    Pfanne
    wrote on last edited by
    #4

    @medyakovvit

     // you can use toggled() or clicked()
        connect(cb, &QCheckBox::toggled, cb, [id, i](bool checked)) {
            // here you have 'i' 
    

    what exactly happend here?
    you connect the checkbox toggled/clicked event to ???
    Where can I catch this event for further use?

    M JonBJ 2 Replies Last reply
    0
    • P Pfanne

      @medyakovvit

       // you can use toggled() or clicked()
          connect(cb, &QCheckBox::toggled, cb, [id, i](bool checked)) {
              // here you have 'i' 
      

      what exactly happend here?
      you connect the checkbox toggled/clicked event to ???
      Where can I catch this event for further use?

      M Offline
      M Offline
      mpergand
      wrote on last edited by
      #5

      @Pfanne said in ui detect mouse event on objects:

      what exactly happend here?

      It is a lambda expression, see HERE

      1 Reply Last reply
      0
      • P Pfanne

        @medyakovvit

         // you can use toggled() or clicked()
            connect(cb, &QCheckBox::toggled, cb, [id, i](bool checked)) {
                // here you have 'i' 
        

        what exactly happend here?
        you connect the checkbox toggled/clicked event to ???
        Where can I catch this event for further use?

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #6

        @Pfanne
        It's a C++ lambda, like an "anonymous function". Search for lambda on https://wiki.qt.io/New_Signal_Slot_Syntax. @mpergand uses it here to pass the i value from the for loop for you to use in the lambda code, which identifies which checkbox has been toggled.

        1 Reply Last reply
        0
        • M mpergand

          @Pfanne
          You may have a look at QButtonGroup or QGroupBox

          P Offline
          P Offline
          Pfanne
          wrote on last edited by
          #7

          @mpergand

          I take a look at QButtonGroup, this look like the right object for my usecase.
          I tryed this:

          *.h

          private slots:
              void on_ioGroup_clicked(int id);
          
          MainWindow::MainWindow(QWidget* parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
          
          {
              ui->setupUi(this);
              QButtonGroup* ioGroup = new QButtonGroup(this);
              ioGroup->addButton(ui->IO_1, 1;
              ioGroup->addButton(ui->IO_2, 2);
              
              connect(ioGroup, SIGNAL(buttonClicked(int)), this, SLOT(on_ioGroup_clicked(int)));
          }
          
          ----
          
          void MainWindow::on_ioGroup_clicked(int id) {
              qDebug() << "id clicked" << id;
          }
              ```
          
          but "on_ioGroup-clicked" will not be executed by clicking on  IO_1 or IO_2.
          JonBJ 1 Reply Last reply
          0
          • P Pfanne

            @mpergand

            I take a look at QButtonGroup, this look like the right object for my usecase.
            I tryed this:

            *.h

            private slots:
                void on_ioGroup_clicked(int id);
            
            MainWindow::MainWindow(QWidget* parent) :
                QMainWindow(parent),
                ui(new Ui::MainWindow)
            
            {
                ui->setupUi(this);
                QButtonGroup* ioGroup = new QButtonGroup(this);
                ioGroup->addButton(ui->IO_1, 1;
                ioGroup->addButton(ui->IO_2, 2);
                
                connect(ioGroup, SIGNAL(buttonClicked(int)), this, SLOT(on_ioGroup_clicked(int)));
            }
            
            ----
            
            void MainWindow::on_ioGroup_clicked(int id) {
                qDebug() << "id clicked" << id;
            }
                ```
            
            but "on_ioGroup-clicked" will not be executed by clicking on  IO_1 or IO_2.
            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #8

            @Pfanne
            Use the "modern" syntax for yourconnect()s and you would see there is no buttonClicked(int) with int parameter signal. OTOH there is a QButtonGroup::idClicked(int id) signal.

            P 1 Reply Last reply
            1
            • JonBJ JonB

              @Pfanne
              Use the "modern" syntax for yourconnect()s and you would see there is no buttonClicked(int) with int parameter signal. OTOH there is a QButtonGroup::idClicked(int id) signal.

              P Offline
              P Offline
              Pfanne
              wrote on last edited by
              #9

              @JonB

              yes, I also saw that "buttonClicked(int)" is not up to date!

              this worked:

              connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
              

              this not:

                  connect(ioGroup, &QButtonGroup::idClicked(int id), this, MainWindow::on_ioGroup_clicked(int id));
              
              P JonBJ M 3 Replies Last reply
              0
              • P Pfanne

                @JonB

                yes, I also saw that "buttonClicked(int)" is not up to date!

                this worked:

                connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                

                this not:

                    connect(ioGroup, &QButtonGroup::idClicked(int id), this, MainWindow::on_ioGroup_clicked(int id));
                
                P Offline
                P Offline
                Pfanne
                wrote on last edited by
                #10

                @Pfanne

                finaly this worked:

                    connect(ioGroup, SIGNAL(idClicked(int)), this, SLOT(on_ioGroup_clicked(int)));
                
                
                void MainWindow::on_ioGroup_clicked(int id) {
                    qDebug() << "id clicked" << id;
                    QAbstractButton* cb = ioGroup->button(id);
                    qDebug() << "Object" << cb->objectName();
                }
                
                1 Reply Last reply
                0
                • P Pfanne

                  @JonB

                  yes, I also saw that "buttonClicked(int)" is not up to date!

                  this worked:

                  connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                  

                  this not:

                      connect(ioGroup, &QButtonGroup::idClicked(int id), this, MainWindow::on_ioGroup_clicked(int id));
                  
                  JonBJ Offline
                  JonBJ Offline
                  JonB
                  wrote on last edited by JonB
                  #11

                  @Pfanne said in ui detect mouse event on objects:

                  this worked:
                  connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                  Correct.

                  finaly this worked:
                  connect(ioGroup, SIGNAL(idClicked(int)), this, SLOT(on_ioGroup_clicked(int)));

                  Since you had it correct first why change it?

                  P 1 Reply Last reply
                  0
                  • P Pfanne

                    @JonB

                    yes, I also saw that "buttonClicked(int)" is not up to date!

                    this worked:

                    connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                    

                    this not:

                        connect(ioGroup, &QButtonGroup::idClicked(int id), this, MainWindow::on_ioGroup_clicked(int id));
                    
                    M Offline
                    M Offline
                    mpergand
                    wrote on last edited by
                    #12

                    @Pfanne said in ui detect mouse event on objects:

                    connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                    You must specify an adress (&) here:
                    &MainWindow::on_ioGroup_clicked);

                    JonBJ 1 Reply Last reply
                    3
                    • M mpergand

                      @Pfanne said in ui detect mouse event on objects:

                      connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                      You must specify an adress (&) here:
                      &MainWindow::on_ioGroup_clicked);

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by
                      #13

                      @mpergand said in ui detect mouse event on objects:

                      &MainWindow::on_ioGroup_clicked);

                      OIC I missed that when OP said it was correct.

                      M JonBJ 2 Replies Last reply
                      0
                      • JonBJ JonB

                        @mpergand said in ui detect mouse event on objects:

                        &MainWindow::on_ioGroup_clicked);

                        OIC I missed that when OP said it was correct.

                        M Offline
                        M Offline
                        mpergand
                        wrote on last edited by mpergand
                        #14

                        Hi @JonB

                        Off topic question :
                        How to set text color as you do in red in your posts ?

                        Pl45m4P JonBJ 2 Replies Last reply
                        0
                        • M mpergand

                          Hi @JonB

                          Off topic question :
                          How to set text color as you do in red in your posts ?

                          Pl45m4P Offline
                          Pl45m4P Offline
                          Pl45m4
                          wrote on last edited by
                          #15

                          @mpergand said in ui detect mouse event on objects:

                          How to set text color as you do in red in your posts ?

                          ` Text ` = Text


                          If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                          ~E. W. Dijkstra

                          M 1 Reply Last reply
                          0
                          • M mpergand

                            Hi @JonB

                            Off topic question :
                            How to set text color as you do in red in your posts ?

                            JonBJ Offline
                            JonBJ Offline
                            JonB
                            wrote on last edited by
                            #16

                            @mpergand said in ui detect mouse event on objects:

                            How to set text color as you do in red in your posts ?

                            Interesting. I don't know and have never set a text color in any of my posts! :) @Pl45m4 post above with red text for Text is the first time I have seen any color.

                            Oh, hang on! Like buttonClicked()? LMAO, until today's forum update that was in green, no wonder I didn't know about red! The "color" is just up to the forum style. The important thing is that code is in monospace font. Use the Code icon (</>) when you are typing in. Or

                            `in-line codecharacters`
                            

                            ```

                            multiline code
                            multiline code
                            

                            ```
                            First one is single-backtick inline, second one is triple-backtick above and below block.

                            Pl45m4P 1 Reply Last reply
                            0
                            • JonBJ JonB referenced this topic on
                            • JonBJ JonB

                              @mpergand said in ui detect mouse event on objects:

                              How to set text color as you do in red in your posts ?

                              Interesting. I don't know and have never set a text color in any of my posts! :) @Pl45m4 post above with red text for Text is the first time I have seen any color.

                              Oh, hang on! Like buttonClicked()? LMAO, until today's forum update that was in green, no wonder I didn't know about red! The "color" is just up to the forum style. The important thing is that code is in monospace font. Use the Code icon (</>) when you are typing in. Or

                              `in-line codecharacters`
                              

                              ```

                              multiline code
                              multiline code
                              

                              ```
                              First one is single-backtick inline, second one is triple-backtick above and below block.

                              Pl45m4P Offline
                              Pl45m4P Offline
                              Pl45m4
                              wrote on last edited by Pl45m4
                              #17

                              @JonB said in ui detect mouse event on objects:

                              Interesting. I don't know and have never set a text color in any of my posts! :) @Pl45m4 post above with red text for Text is the first time I have seen any color.

                              I use this text format every time I mention some Qt term or class. QPushButton, QObject, Q_OBJECT.
                              So did/do you ;-)
                              I don't know what exactly you did when writing these posts, but I used single backticks (don't know how they are called)
                              ` QPushButton ` (now escaped to make them visible)

                              LMAO, until today's forum update that was in green, no wonder I didn't know about red

                              I could swear it was red before, with some kind of red-ish background.
                              At least when used outside of a code section in regular paragraphs.


                              If debugging is the process of removing software bugs, then programming must be the process of putting them in.

                              ~E. W. Dijkstra

                              JonBJ 1 Reply Last reply
                              0
                              • Pl45m4P Pl45m4

                                @JonB said in ui detect mouse event on objects:

                                Interesting. I don't know and have never set a text color in any of my posts! :) @Pl45m4 post above with red text for Text is the first time I have seen any color.

                                I use this text format every time I mention some Qt term or class. QPushButton, QObject, Q_OBJECT.
                                So did/do you ;-)
                                I don't know what exactly you did when writing these posts, but I used single backticks (don't know how they are called)
                                ` QPushButton ` (now escaped to make them visible)

                                LMAO, until today's forum update that was in green, no wonder I didn't know about red

                                I could swear it was red before, with some kind of red-ish background.
                                At least when used outside of a code section in regular paragraphs.

                                JonBJ Offline
                                JonBJ Offline
                                JonB
                                wrote on last edited by
                                #18

                                @Pl45m4 Maybe. Whatever I thought the original question was how to write in red, rather than in monospace which happens to show as red!

                                1 Reply Last reply
                                1
                                • Pl45m4P Pl45m4

                                  @mpergand said in ui detect mouse event on objects:

                                  How to set text color as you do in red in your posts ?

                                  ` Text ` = Text

                                  M Offline
                                  M Offline
                                  mpergand
                                  wrote on last edited by mpergand
                                  #19

                                  @Pl45m4
                                  Thanks for the tip :)

                                  I finally found the Help button I was looking for yesterday that describes the markdown syntax.

                                  1 Reply Last reply
                                  0
                                  • JonBJ JonB

                                    @Pfanne said in ui detect mouse event on objects:

                                    this worked:
                                    connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                                    Correct.

                                    finaly this worked:
                                    connect(ioGroup, SIGNAL(idClicked(int)), this, SLOT(on_ioGroup_clicked(int)));

                                    Since you had it correct first why change it?

                                    P Offline
                                    P Offline
                                    Pfanne
                                    wrote on last edited by Pfanne
                                    #20

                                    @JonB
                                    the first version:

                                    connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                                    

                                    is without the object ID, implementing the ID in this version a error occurse.

                                    M 1 Reply Last reply
                                    0
                                    • P Pfanne

                                      @JonB
                                      the first version:

                                      connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                                      

                                      is without the object ID, implementing the ID in this version a error occurse.

                                      M Offline
                                      M Offline
                                      mpergand
                                      wrote on last edited by
                                      #21

                                      @Pfanne said in ui detect mouse event on objects:

                                      connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                                      As I said earlier, you have to pass an address:

                                      connect(ioGroup, &QButtonGroup::idClicked, this, &MainWindow::on_ioGroup_clicked);

                                      1 Reply Last reply
                                      2
                                      • JonBJ JonB

                                        @mpergand said in ui detect mouse event on objects:

                                        &MainWindow::on_ioGroup_clicked);

                                        OIC I missed that when OP said it was correct.

                                        JonBJ Offline
                                        JonBJ Offline
                                        JonB
                                        wrote on last edited by
                                        #22

                                        @Pfanne

                                        @JonB said in ui detect mouse event on objects:

                                        @mpergand said in ui detect mouse event on objects:

                                        &MainWindow::on_ioGroup_clicked);

                                        OIC I missed that when OP said it was correct.

                                        You can see for yourself (when it's written in monospace) that in your
                                        connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                                        one method reference has a preceding & and the other does not, and thereby tell what you had is not correct.

                                        P 1 Reply Last reply
                                        0
                                        • JonBJ JonB

                                          @Pfanne

                                          @JonB said in ui detect mouse event on objects:

                                          @mpergand said in ui detect mouse event on objects:

                                          &MainWindow::on_ioGroup_clicked);

                                          OIC I missed that when OP said it was correct.

                                          You can see for yourself (when it's written in monospace) that in your
                                          connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);

                                          one method reference has a preceding & and the other does not, and thereby tell what you had is not correct.

                                          P Offline
                                          P Offline
                                          Pfanne
                                          wrote on last edited by
                                          #23

                                          @JonB

                                          connect(ioGroup, &QButtonGroup::idClicked, this, MainWindow::on_ioGroup_clicked);
                                          

                                          OK, I think I understand, but this try worked, without ID but it creates a event on every click.
                                          Without the reference (&) to MainWindow....

                                          But it´s OK, this try:

                                          connect(ioGroup, SIGNAL(idClicked(int)), this, SLOT(on_ioGroup_clicked(int)));
                                          

                                          is exactly the way that I use (SIGNAL -> SLOT) for my other connections.

                                          Thanks for your support!

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