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

Inheritance of GroupBox

Scheduled Pinned Locked Moved Unsolved General and Desktop
17 Posts 5 Posters 1.3k Views 1 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.
  • B buzz_lightzyear

    Hello! :-)

    I have a simple example GUI-Application with a Group Box in the Tab 1 (see Screenshot). What I want now is the same Group Box in Tab 2 and I don't want to copy-paste the Group Box because if I want to do a change in the Group Box in Tab 1, the change should also be visible in Tab 2. I think inheritance is the solution. Can someone tell me where I should declare the second Group Box for Tab2?

    Screenshot_20221216_181106.png

    Thank you :-)

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

    @buzz_lightzyear said in Inheritance of GroupBox:

    I think inheritance is the solution

    No, it's not.
    You can't have same instance of a widget in two different locations at the same time.
    You will have to use two different instances, one for tab1 and one for tab2 and synchronise the changes between them.

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

    1 Reply Last reply
    3
    • B Offline
      B Offline
      buzz_lightzyear
      wrote on last edited by
      #8

      @jsulm
      ok thx... in the meantime I already thought thats not the right way... because I found nothing with google.

      But now I have the next problem... here is my mainwindow.cpp:

      #include "mainwindow.h"
      #include "groupboxwithbuttons.h"
      #include "ui_mainwindow.h"
      
      
      MainWindow::MainWindow(QWidget *parent)
          : QMainWindow(parent)
          , ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
          GroupBoxWithButtons* gbwb = new GroupBoxWithButtons(this->ui->tab);
          GroupBoxWithButtons* gbwb2 = new GroupBoxWithButtons(this->ui->tab_2);
      
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      

      I know the delete is missing ;-)
      This shows me the buttons on my two tabs but how can I access the elements? For example I want to give a button another name... I hope anyone knows what I mean :-D

      thx :-)

      M jsulmJ 2 Replies Last reply
      0
      • B buzz_lightzyear

        @jsulm
        ok thx... in the meantime I already thought thats not the right way... because I found nothing with google.

        But now I have the next problem... here is my mainwindow.cpp:

        #include "mainwindow.h"
        #include "groupboxwithbuttons.h"
        #include "ui_mainwindow.h"
        
        
        MainWindow::MainWindow(QWidget *parent)
            : QMainWindow(parent)
            , ui(new Ui::MainWindow)
        {
            ui->setupUi(this);
        
            GroupBoxWithButtons* gbwb = new GroupBoxWithButtons(this->ui->tab);
            GroupBoxWithButtons* gbwb2 = new GroupBoxWithButtons(this->ui->tab_2);
        
        }
        
        MainWindow::~MainWindow()
        {
            delete ui;
        }
        

        I know the delete is missing ;-)
        This shows me the buttons on my two tabs but how can I access the elements? For example I want to give a button another name... I hope anyone knows what I mean :-D

        thx :-)

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

        @buzz_lightzyear said in Inheritance of GroupBox:

        I know the delete is missing ;-)

        There's no need to ...

        Do the two groupbox instances share functionalities ?

        1 Reply Last reply
        0
        • B Offline
          B Offline
          buzz_lightzyear
          wrote on last edited by
          #10

          Hello,

          no, they do not. The idea behind that is a simple biking/hiking logger in which I can enter the data from my gps device. In one tab the bike tours, in the other tab the hiking tour. The gui is the same (with minimal text change on labels), but the data is stored in a different table. so there is no shared functionality.

          good bye

          1 Reply Last reply
          0
          • B buzz_lightzyear

            @jsulm
            ok thx... in the meantime I already thought thats not the right way... because I found nothing with google.

            But now I have the next problem... here is my mainwindow.cpp:

            #include "mainwindow.h"
            #include "groupboxwithbuttons.h"
            #include "ui_mainwindow.h"
            
            
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                ui->setupUi(this);
            
                GroupBoxWithButtons* gbwb = new GroupBoxWithButtons(this->ui->tab);
                GroupBoxWithButtons* gbwb2 = new GroupBoxWithButtons(this->ui->tab_2);
            
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            

            I know the delete is missing ;-)
            This shows me the buttons on my two tabs but how can I access the elements? For example I want to give a button another name... I hope anyone knows what I mean :-D

            thx :-)

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

            @buzz_lightzyear said in Inheritance of GroupBox:

            how can I access the elements?

            Simply make gbwb and gbwb2 member variables in MainWindow...

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

            1 Reply Last reply
            0
            • B Offline
              B Offline
              buzz_lightzyear
              wrote on last edited by
              #12

              Thank you, but how do I give for example the button another name? If I make a member of the groupbox in the main window it only shows me the functions and members of groupbox... but I want to access the elements IN the group box.

              thx :-)

              jsulmJ 1 Reply Last reply
              0
              • B buzz_lightzyear

                Thank you, but how do I give for example the button another name? If I make a member of the groupbox in the main window it only shows me the functions and members of groupbox... but I want to access the elements IN the group box.

                thx :-)

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

                @buzz_lightzyear said in Inheritance of GroupBox:

                but how do I give for example the button another name?

                Why do you need this?
                And why do you want to access internal implementation details of your group boxes outside of GroupBoxWithButtons? This is bad practise...

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

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  buzz_lightzyear
                  wrote on last edited by
                  #14

                  The idea is to overwrite. Lets say there is a label with "biking" for tab 1 and a label for "hiking" on tab2. And for the future another tab with... for example... climbing ;-) but I want the same group box on all three tabs, but with little changes. Do you know what I mean? For this the first idea was to inherite the group box and overwrite.

                  thx :-)

                  jsulmJ JonBJ 2 Replies Last reply
                  0
                  • B buzz_lightzyear

                    The idea is to overwrite. Lets say there is a label with "biking" for tab 1 and a label for "hiking" on tab2. And for the future another tab with... for example... climbing ;-) but I want the same group box on all three tabs, but with little changes. Do you know what I mean? For this the first idea was to inherite the group box and overwrite.

                    thx :-)

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

                    @buzz_lightzyear said in Inheritance of GroupBox:

                    Do you know what I mean?

                    Not really. Now you're talking about labels.
                    If you mean you want to trigger specific actions if a button in one of the groups is pressed then do it like is always done in Qt: emit a signal in GroupBoxWithButtons if a button is pressed and connect this signal to a slot in MainWindow to do what ever you need:

                    MainWindow::MainWindow(QWidget *parent)
                        : QMainWindow(parent)
                        , ui(new Ui::MainWindow)
                    {
                        ui->setupUi(this);
                    
                        gbwb = new GroupBoxWithButtons(this->ui->tab);
                        connect(gbwb, &GroupBoxWithButtons::button1Pressed, this, &MainWindow::doWhateverYouWant);
                    

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

                    1 Reply Last reply
                    1
                    • B buzz_lightzyear

                      The idea is to overwrite. Lets say there is a label with "biking" for tab 1 and a label for "hiking" on tab2. And for the future another tab with... for example... climbing ;-) but I want the same group box on all three tabs, but with little changes. Do you know what I mean? For this the first idea was to inherite the group box and overwrite.

                      thx :-)

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

                      @buzz_lightzyear said in Inheritance of GroupBox:

                      but I want the same group box on all three tabs, but with little changes.

                      Firstly, everything as @jsulm has replied. Secondly, so far as I can see, you don't really want the "same" group box anywhere. You have different buttons with different actions, and so on. I don't know why you are not just using two quite separate QGroupBoxes, no inheritance or special class, which have their own buttons, and that's it. Especially if using the Designer it's easier than trying to write code.

                      M 1 Reply Last reply
                      1
                      • JonBJ JonB

                        @buzz_lightzyear said in Inheritance of GroupBox:

                        but I want the same group box on all three tabs, but with little changes.

                        Firstly, everything as @jsulm has replied. Secondly, so far as I can see, you don't really want the "same" group box anywhere. You have different buttons with different actions, and so on. I don't know why you are not just using two quite separate QGroupBoxes, no inheritance or special class, which have their own buttons, and that's it. Especially if using the Designer it's easier than trying to write code.

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

                        @JonB said in Inheritance of GroupBox:

                        I don't know why you are not just using two quite separate QGroupBox

                        That's why I asked if they share functionality,
                        and the reponse was no,
                        therefore I don't see the need of the GroupBoxWithButtons class at all.

                        I don't understand why the OP simply don't create the two tabs in the Designer.
                        Or at least with a simple method in MainWindow:

                        createTab(int no)
                        {
                        // create tab 1
                        if( no==2)
                        // create or modify elements for tab2
                        }

                        1 Reply Last reply
                        1

                        • Login

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