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

ui detect mouse event on objects

Scheduled Pinned Locked Moved Unsolved General and Desktop
26 Posts 6 Posters 3.7k 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.
  • 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
                                      • P Pfanne

                                        @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 Offline
                                        Christian EhrlicherC Offline
                                        Christian Ehrlicher
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #24

                                        @Pfanne said in ui detect mouse event on objects:

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

                                        But you should switch to the pmf syntax for your own sake.

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

                                        P 1 Reply Last reply
                                        1
                                        • Christian EhrlicherC Christian Ehrlicher

                                          @Pfanne said in ui detect mouse event on objects:

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

                                          But you should switch to the pmf syntax for your own sake.

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

                                          @Christian-Ehrlicher

                                          should I use the pmf syntax only for object events or also for function events too?

                                          Pl45m4P 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