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. Connecting buttons of one page to label of another page

Connecting buttons of one page to label of another page

Scheduled Pinned Locked Moved Unsolved General and Desktop
14 Posts 4 Posters 2.3k 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.
  • Thank YouT Offline
    Thank YouT Offline
    Thank You
    wrote on last edited by
    #1

    Re: Multiple Windows Desktop application
    I want to connect button from one form to another form.
    I have a button in one form named "a.h". In the mainwindow I have created widget which is promoted to "a.h". How can I connect the signal of button in a.h to the label in mainwindow

    Let's make QT free or It will go forever

    TRUE AND FALSE <3

    JonBJ 1 Reply Last reply
    0
    • Thank YouT Thank You

      Re: Multiple Windows Desktop application
      I want to connect button from one form to another form.
      I have a button in one form named "a.h". In the mainwindow I have created widget which is promoted to "a.h". How can I connect the signal of button in a.h to the label in mainwindow

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

      @Thank-You
      Much like it shows in the link you reference.

      MainWindow::MainWindow()
      {
          connect(formA->button, &QPushButton::clicked, this, &MainWindow::formAButtonClicked);
      }
      
      void MainWindow::formAButtonClicked(bool checked /*= false*/)
      {
          Q_UNUSED(checked);
          label->setText("Form A button was clicked");
      }
      

      Having said this, you will have to "expose" button in FormA class so that it is accessible from MainWindow. (I did it directly by making the button public for FormA::button, you could instead wrap that into a public method returning the button which is a bit nicer.) This is not ideal, but doable. Over time you might want to change that to, say, having FormA raise a custom signal when its button is clicked which you slot onto: that way the main window does not have to know about the internals of FormA, it won't have to access its button directly.

      1 Reply Last reply
      1
      • Thank YouT Offline
        Thank YouT Offline
        Thank You
        wrote on last edited by Thank You
        #3

        b6d33ef0-3d93-4eee-b6e0-7be5991f3b6e-image.png image url)

        @JonB This is what i want to create.
        The navigation is promoted to "navigation.h" where navigation is made. When I click on any button I want to change the text of label in the right side of the form.

        I understood what you said but I am beginner at Qt and I dont know how to make the button public and assign ui->pushbutton in the "navigation.h"

        Can we do it with friend function?????
        Thank you

        Let's make QT free or It will go forever

        TRUE AND FALSE <3

        JonBJ 1 Reply Last reply
        0
        • Thank YouT Thank You

          b6d33ef0-3d93-4eee-b6e0-7be5991f3b6e-image.png image url)

          @JonB This is what i want to create.
          The navigation is promoted to "navigation.h" where navigation is made. When I click on any button I want to change the text of label in the right side of the form.

          I understood what you said but I am beginner at Qt and I dont know how to make the button public and assign ui->pushbutton in the "navigation.h"

          Can we do it with friend function?????
          Thank you

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

          @Thank-You
          No, we really do not want to start using friend here! At least I don't think so.

          If you really want to do it this way: Since you are using a designer-generated ui->pushbutton it won't be public. You might do something like:

          // In a.h
          public:
              QPushButton *aButton() { return ui->aButton; }
          
          // In mainwindow.cpp
          connect(formA->aButton(), &QPushButton::clicked, this, &MainWindow::formAButtonClicked);
          

          Though, as I said earlier, I would actually raise a custom signal from FormA instead. Which I could show you, but it may not be necessary because...

          ...Having said this: your picture looks like you should be using some kind of QMenu, plus QAction::trigger(), within your MainWindow class. If you do that you won't have a different source file with QPushButtons to connect to, and your problem will go away.

          Thank YouT 1 Reply Last reply
          2
          • JonBJ JonB

            @Thank-You
            No, we really do not want to start using friend here! At least I don't think so.

            If you really want to do it this way: Since you are using a designer-generated ui->pushbutton it won't be public. You might do something like:

            // In a.h
            public:
                QPushButton *aButton() { return ui->aButton; }
            
            // In mainwindow.cpp
            connect(formA->aButton(), &QPushButton::clicked, this, &MainWindow::formAButtonClicked);
            

            Though, as I said earlier, I would actually raise a custom signal from FormA instead. Which I could show you, but it may not be necessary because...

            ...Having said this: your picture looks like you should be using some kind of QMenu, plus QAction::trigger(), within your MainWindow class. If you do that you won't have a different source file with QPushButtons to connect to, and your problem will go away.

            Thank YouT Offline
            Thank YouT Offline
            Thank You
            wrote on last edited by
            #5

            @JonB Ya I actually did this But It is not working
            No I am not using any QMenu. I am using QWidget which is just promoted to 'a.h'

               formA  n;
                connect(n.homeButton() , &QPushButton::clicked,this,&mainwindow::connect_home);
            
            // and in  a.h
            QPushButton *homeButton();
            //in a.cpp
            QPushButton *navigation::homeButton()
            {
                return ui->home;
            }
            

            I just want to connect these two things. Is it good to use custom signal here.

            Let's make QT free or It will go forever

            TRUE AND FALSE <3

            jsulmJ JonBJ 2 Replies Last reply
            0
            • Thank YouT Thank You

              @JonB Ya I actually did this But It is not working
              No I am not using any QMenu. I am using QWidget which is just promoted to 'a.h'

                 formA  n;
                  connect(n.homeButton() , &QPushButton::clicked,this,&mainwindow::connect_home);
              
              // and in  a.h
              QPushButton *homeButton();
              //in a.cpp
              QPushButton *navigation::homeButton()
              {
                  return ui->home;
              }
              

              I just want to connect these two things. Is it good to use custom signal here.

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Thank-You said in Connecting buttons of one page to label of another page:

              Is it good to use custom signal here

              Yes, you can use a custom signal here to hide the internal widgets from the outside world (tip: you can connect a signal to another signal).

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

              Thank YouT 1 Reply Last reply
              4
              • jsulmJ jsulm

                @Thank-You said in Connecting buttons of one page to label of another page:

                Is it good to use custom signal here

                Yes, you can use a custom signal here to hide the internal widgets from the outside world (tip: you can connect a signal to another signal).

                Thank YouT Offline
                Thank YouT Offline
                Thank You
                wrote on last edited by Thank You
                #7

                @jsulm Thank you for your answer.
                If your are ok please say me what I did wrong and you flagged me to Qt_code_of_conduct. Please say me so that I wont make mistake that like in future posts.
                I read all the code of conducts there but I don't think I have done mistakes.
                Thank you for suggesting me.. 😃

                Let's make QT free or It will go forever

                TRUE AND FALSE <3

                jsulmJ 1 Reply Last reply
                0
                • Thank YouT Thank You

                  @JonB Ya I actually did this But It is not working
                  No I am not using any QMenu. I am using QWidget which is just promoted to 'a.h'

                     formA  n;
                      connect(n.homeButton() , &QPushButton::clicked,this,&mainwindow::connect_home);
                  
                  // and in  a.h
                  QPushButton *homeButton();
                  //in a.cpp
                  QPushButton *navigation::homeButton()
                  {
                      return ui->home;
                  }
                  

                  I just want to connect these two things. Is it good to use custom signal here.

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

                  @Thank-You said in Connecting buttons of one page to label of another page:

                  Ya I actually did this But It is not working

                  I don't know why it's not working, it should from what I can see (assuming it compiles in your code, and you mean it doesn't work at runtime).

                  I think it's a shame you don't want to change over to main window having a QMenu and doing it that way, avoiding all this issue. Up to you.

                  Then as I & @jsulm have said, it would be nicer if in a.h you declare a custom signal, in a.cpp you connect the button click to emit() that signal, and in mainwindow.cpp you connect(formA, &FormA::customSignal, this, &MainWindow::formACustomSlot).

                  1 Reply Last reply
                  1
                  • Thank YouT Thank You

                    @jsulm Thank you for your answer.
                    If your are ok please say me what I did wrong and you flagged me to Qt_code_of_conduct. Please say me so that I wont make mistake that like in future posts.
                    I read all the code of conducts there but I don't think I have done mistakes.
                    Thank you for suggesting me.. 😃

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    @Thank-You said in Connecting buttons of one page to label of another page:

                    and you flagged me to Qt_code_of_conduct

                    I did not :-)
                    It is done automatically for all.

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

                    Thank YouT 1 Reply Last reply
                    1
                    • jsulmJ jsulm

                      @Thank-You said in Connecting buttons of one page to label of another page:

                      and you flagged me to Qt_code_of_conduct

                      I did not :-)
                      It is done automatically for all.

                      Thank YouT Offline
                      Thank YouT Offline
                      Thank You
                      wrote on last edited by
                      #10

                      @jsulm Sorry
                      Thank You

                      Let's make QT free or It will go forever

                      TRUE AND FALSE <3

                      Pl45m4P 1 Reply Last reply
                      0
                      • Thank YouT Thank You

                        @jsulm Sorry
                        Thank You

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

                        @Thank-You

                        It's his signature :)


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

                        ~E. W. Dijkstra

                        jsulmJ 1 Reply Last reply
                        1
                        • Pl45m4P Pl45m4

                          @Thank-You

                          It's his signature :)

                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          @Pl45m4 You're right! I didn't realise that actually. No idea why I have it as signature, can't remember setting it.

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

                          Thank YouT 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @Pl45m4 You're right! I didn't realise that actually. No idea why I have it as signature, can't remember setting it.

                            Thank YouT Offline
                            Thank YouT Offline
                            Thank You
                            wrote on last edited by
                            #13

                            Wooow That's awesome

                            Let's make QT free or It will go forever

                            TRUE AND FALSE <3

                            1 Reply Last reply
                            0
                            • Thank YouT Offline
                              Thank YouT Offline
                              Thank You
                              wrote on last edited by
                              #14

                              This is solved one. if anyone need the answer

                              https://forum.qt.io/topic/120765/connecting-buttons-with-custom-signals-and-slots/11

                              Let's make QT free or It will go forever

                              TRUE AND FALSE <3

                              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