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

how to setAlignment of QGroupBox

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 4 Posters 15.9k Views 3 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.
  • RatzzR Offline
    RatzzR Offline
    Ratzz
    wrote on last edited by
    #2

    @cerr
    can you show me what u get using image ?

    --Alles ist gut.

    cerrC 1 Reply Last reply
    1
    • p3c0P Offline
      p3c0P Offline
      p3c0
      Moderators
      wrote on last edited by
      #3

      @cerr The default alignment is already Qt::AlignLeft.
      http://doc.qt.io/qt-5/qgroupbox.html#alignment-prop

      157

      1 Reply Last reply
      1
      • RatzzR Ratzz

        @cerr
        can you show me what u get using image ?

        cerrC Offline
        cerrC Offline
        cerr
        wrote on last edited by
        #4

        @Ratzz said in how to setAlignment of QGroupBox:

        @cerr
        can you show me what u get using image ?

        https://postimg.org/image/dc7rd4ub9/

        1 Reply Last reply
        0
        • p3c0P Offline
          p3c0P Offline
          p3c0
          Moderators
          wrote on last edited by
          #5

          @cerr Looks like you have added the groupbox in a layout?
          Can you post the relevant code ?

          157

          cerrC 1 Reply Last reply
          1
          • p3c0P p3c0

            @cerr Looks like you have added the groupbox in a layout?
            Can you post the relevant code ?

            cerrC Offline
            cerrC Offline
            cerr
            wrote on last edited by
            #6

            @p3c0 said in how to setAlignment of QGroupBox:

            @cerr Looks like you have added the groupbox in a layout?
            Can you post the relevant code ?

            Correct,

            Okay, so let's see:
            My groupBox is here, in addTerminal() which gets called with a QSplitter as parent... - not sure if that's enough...

            
            Terminal* Session::addTerminal(QWidget* parent)
            {
                Terminal* terminal = new Terminal(parent);
                connect(terminal, SIGNAL(activated(int)), this, SLOT(setActiveTerminal(int)));
                connect(terminal, SIGNAL(manuallyActivated(Terminal*)), this, SIGNAL(terminalManuallyActivated(Terminal*)));
                connect(terminal, SIGNAL(titleChanged(int,QString)), this, SLOT(setTitle(int,QString)));
                connect(terminal, SIGNAL(keyboardInputBlocked(Terminal*)), this, SIGNAL(keyboardInputBlocked(Terminal*)));
                connect(terminal, SIGNAL(silenceDetected(Terminal*)), this, SIGNAL(silenceDetected(Terminal*)));
                connect(terminal, SIGNAL(destroyed(int)), this, SLOT(cleanup(int)));
            
                m_terminals.insert(terminal->id(), terminal);    
                
                QGroupBox *groupBox = new QGroupBox(tr("Test"), parent);
                groupBox->setAlignment(Qt::AlignLeft);
                QWidget* terminalWidget = terminal->terminalWidget();
                QVBoxLayout *vbox = new QVBoxLayout;
                vbox->addWidget(terminalWidget);
                groupBox->setLayout(vbox);
                terminalWidget ->show();
                if (/*terminalWidget*/groupBox) /*terminalWidget*/groupBox->setFocus();
                groupBox->show();
            
                return terminal;
            }
            

            and then, the constructor for Terminal() looks like this:

            Terminal::Terminal(QWidget* parent) : QObject(parent)
            {
                m_terminalId = m_availableTerminalId;
                m_availableTerminalId++;
            
                m_keyboardInputEnabled = true;
            
                m_monitorActivityEnabled = false;
                m_monitorSilenceEnabled = false;
            
                m_part = NULL;
                m_terminalInterface = NULL;
                m_partWidget = NULL;
                m_terminalWidget = NULL;
                m_parentSplitter = parent;
            
                KPluginFactory* factory = 0;
                KService::Ptr service = KService::serviceByDesktopName("konsolepart");
                if( service )
                {
                    factory = KPluginLoader(service->library()).factory();
            
                m_part = factory ? (factory->create<KParts::Part>(parent)) : 0;
            
                if (m_part)
                {
                    connect(m_part, SIGNAL(setWindowCaption(QString)), this, SLOT(setTitle(QString)));
                    connect(m_part, SIGNAL(overrideShortcut(QKeyEvent*,bool&)), this, SLOT(overrideShortcut(QKeyEvent*,bool&)));
                    connect(m_part, SIGNAL(destroyed()), this, SLOT(deleteLater()));
            
                    m_partWidget = m_part->widget();
            
                    m_terminalWidget = m_part->widget()->focusWidget();
            
                    if (m_terminalWidget)
                    {
                        m_terminalWidget->setFocusPolicy(Qt::WheelFocus);
                        m_terminalWidget->installEventFilter(this);
                    }
            
                    disableOffendingPartActions();
            
                    m_terminalInterface = qobject_cast<TerminalInterface*>(m_part);
                    if (m_terminalInterface) m_terminalInterface->showShellInDir(QDir::homePath());
                }
                else
                    displayKPartLoadError();
                }
            }
            
            1 Reply Last reply
            0
            • p3c0P Offline
              p3c0P Offline
              p3c0
              Moderators
              wrote on last edited by
              #7

              @cerr This part looks odd:

              QVBoxLayout *vbox = new QVBoxLayout;
              vbox->addWidget(terminalWidget);
              groupBox->setLayout(vbox);
              

              You should set layout (vbox) to your main widget and in this layout add widgets groupBox and terminalWidget.

              157

              cerrC 1 Reply Last reply
              2
              • p3c0P p3c0

                @cerr This part looks odd:

                QVBoxLayout *vbox = new QVBoxLayout;
                vbox->addWidget(terminalWidget);
                groupBox->setLayout(vbox);
                

                You should set layout (vbox) to your main widget and in this layout add widgets groupBox and terminalWidget.

                cerrC Offline
                cerrC Offline
                cerr
                wrote on last edited by
                #8

                @p3c0 said in how to setAlignment of QGroupBox:

                @cerr This part looks odd:

                QVBoxLayout *vbox = new QVBoxLayout;
                vbox->addWidget(terminalWidget);
                groupBox->setLayout(vbox);
                

                You should set layout (vbox) to your main widget and in this layout add widgets groupBox and terminalWidget.

                Hmm, I don't get this, so are you saying this should look something like:

                    QVBoxLayout *vbox = new QVBoxLayout;
                    vbox->addWidget(terminalWidget);
                    vbox->addWidget(groupBox);
                    parent->setTerminalLayout(vbox); // vbox->setLayout() would be called within this method
                    terminalWidget ->show();
                    if (groupBox) groupBox->setFocus();
                

                but I don't see what a differnce it'll make to call setLayout from within another wrapper , I must not understand you properly - can you clarify, please?

                Thanks!

                1 Reply Last reply
                0
                • p3c0P Offline
                  p3c0P Offline
                  p3c0
                  Moderators
                  wrote on last edited by
                  #9

                  @cerr What I imagined was that you are trying to create a main widget and in that you want to add a groupbox and terminalwidget so I suggested to add this layout(vbox) to the main widget and in that you add these 2 widgets so that they are arranged vertically. Is this the requirement ?

                  157

                  cerrC 1 Reply Last reply
                  0
                  • p3c0P p3c0

                    @cerr What I imagined was that you are trying to create a main widget and in that you want to add a groupbox and terminalwidget so I suggested to add this layout(vbox) to the main widget and in that you add these 2 widgets so that they are arranged vertically. Is this the requirement ?

                    cerrC Offline
                    cerrC Offline
                    cerr
                    wrote on last edited by
                    #10

                    @p3c0 said in how to setAlignment of QGroupBox:

                    @cerr What I imagined was that you are trying to create a main widget and in that you want to add a groupbox and terminalwidget so I suggested to add this layout(vbox) to the main widget and in that you add these 2 widgets so that they are arranged vertically. Is this the requirement ?

                    By main widget you understand a "mother widget" that would contain the groupbox & the terminal widget, right? What I want to do is, to nest the terminalwidget within a groupbox so that there is an ability to assign the terminalwidget some kind of membership (that makes visually sense, too). If you have a better idea on how to solve this, please don't be shy to let me know! Thanks!

                    1 Reply Last reply
                    0
                    • p3c0P Offline
                      p3c0P Offline
                      p3c0
                      Moderators
                      wrote on last edited by
                      #11

                      @cerr

                      By main widget you understand a "mother widget" that would contain the groupbox & the terminal widget, right?

                      Yes.

                      So now where do you add this groupbox ? You should add this groupbox inside another layout so that it is laid properly.

                      157

                      cerrC 1 Reply Last reply
                      1
                      • p3c0P p3c0

                        @cerr

                        By main widget you understand a "mother widget" that would contain the groupbox & the terminal widget, right?

                        Yes.

                        So now where do you add this groupbox ? You should add this groupbox inside another layout so that it is laid properly.

                        cerrC Offline
                        cerrC Offline
                        cerr
                        wrote on last edited by
                        #12

                        @p3c0 said in how to setAlignment of QGroupBox:

                        Yes.

                        So now where do you add this groupbox ? You should add this groupbox inside another layout so that it is laid properly.

                        So I currently have something lke groupBox(vbox(terminalWidget())) and I think from what you're saying, I should have something like ContainerWidget(vbox(groupBox(terminalWidget))), is that correct? Any idea what kind of container widget I can use for this? Or better, vbox(groupBox(terminalWidget)) should do as well, shouldn't it?

                        cerrC 1 Reply Last reply
                        0
                        • p3c0P Offline
                          p3c0P Offline
                          p3c0
                          Moderators
                          wrote on last edited by
                          #13

                          @cerr

                          ContainerWidget(vbox(groupBox(terminalWidget))), is that correct?

                          Yes. You can use QDialog as the container widget.

                          157

                          1 Reply Last reply
                          0
                          • cerrC cerr

                            @p3c0 said in how to setAlignment of QGroupBox:

                            Yes.

                            So now where do you add this groupbox ? You should add this groupbox inside another layout so that it is laid properly.

                            So I currently have something lke groupBox(vbox(terminalWidget())) and I think from what you're saying, I should have something like ContainerWidget(vbox(groupBox(terminalWidget))), is that correct? Any idea what kind of container widget I can use for this? Or better, vbox(groupBox(terminalWidget)) should do as well, shouldn't it?

                            cerrC Offline
                            cerrC Offline
                            cerr
                            wrote on last edited by cerr
                            #14

                            @p3c0 said in how to setAlignment of QGroupBox:

                            @cerr

                            ContainerWidget(vbox(groupBox(terminalWidget))), is that correct?

                            Yes. You can use QDialog as the container widget.

                            But I don't want it to be in abother dialog and it already is in a QTabWidget....I should use that as the outer most layer probably...

                            1 Reply Last reply
                            0
                            • p3c0P Offline
                              p3c0P Offline
                              p3c0
                              Moderators
                              wrote on last edited by
                              #15

                              @cerr Ok. But remember to add that groupbox inside a layout.

                              157

                              cerrC 1 Reply Last reply
                              0
                              • p3c0P p3c0

                                @cerr Ok. But remember to add that groupbox inside a layout.

                                cerrC Offline
                                cerrC Offline
                                cerr
                                wrote on last edited by
                                #16

                                @p3c0 said in how to setAlignment of QGroupBox:

                                @cerr Ok. But remember to add that groupbox inside a layout.

                                So what actually happens in my application is:
                                MainWindow->QTabWidget->session->setupSession->addTerminal->QVBoxWidget(QGroupBox->terminalWidget) and you suggest i'd better be like mainwindow->QVBoxWidget(QTabWidget->session->setupSession->addTerminal->QGroupBox->terminalWidget) ?
                                Will that change things?

                                1 Reply Last reply
                                0
                                • p3c0P Offline
                                  p3c0P Offline
                                  p3c0
                                  Moderators
                                  wrote on last edited by p3c0
                                  #17

                                  @cerr No. The earlier one.
                                  MainWindow->QTabWidget->session->setupSession->addTerminal->QVBoxWidget(QGroupBox->terminalWidget)

                                  But I dont see that happening in your original code.

                                  QGroupBox *groupBox = new QGroupBox(tr("Test"), parent); //<--- This should be added in a layout too.
                                  groupBox->setAlignment(Qt::AlignLeft);
                                  
                                  QWidget* terminalWidget = terminal->terminalWidget();
                                  
                                  QVBoxLayout *vbox = new QVBoxLayout;
                                  vbox->addWidget(terminalWidget);
                                  groupBox->setLayout(vbox); // <--- This sets layout inside it
                                  
                                  terminalWidget ->show();
                                  if (/*terminalWidget*/groupBox) /*terminalWidget*/groupBox->setFocus();
                                     groupBox->show();
                                  

                                  157

                                  cerrC 1 Reply Last reply
                                  0
                                  • p3c0P p3c0

                                    @cerr No. The earlier one.
                                    MainWindow->QTabWidget->session->setupSession->addTerminal->QVBoxWidget(QGroupBox->terminalWidget)

                                    But I dont see that happening in your original code.

                                    QGroupBox *groupBox = new QGroupBox(tr("Test"), parent); //<--- This should be added in a layout too.
                                    groupBox->setAlignment(Qt::AlignLeft);
                                    
                                    QWidget* terminalWidget = terminal->terminalWidget();
                                    
                                    QVBoxLayout *vbox = new QVBoxLayout;
                                    vbox->addWidget(terminalWidget);
                                    groupBox->setLayout(vbox); // <--- This sets layout inside it
                                    
                                    terminalWidget ->show();
                                    if (/*terminalWidget*/groupBox) /*terminalWidget*/groupBox->setFocus();
                                       groupBox->show();
                                    
                                    cerrC Offline
                                    cerrC Offline
                                    cerr
                                    wrote on last edited by
                                    #18

                                    @p3c0 said in how to setAlignment of QGroupBox:

                                    @cerr No. The earlier one.
                                    MainWindow->QTabWidget->session->setupSession->addTerminal->QVBoxWidget(QGroupBox->terminalWidget)

                                    But I dont see that happening in your original code.

                                    QGroupBox *groupBox = new QGroupBox(tr("Test"), parent); //<--- This should be added in a layout too.
                                    groupBox->setAlignment(Qt::AlignLeft);
                                    
                                    QWidget* terminalWidget = terminal->terminalWidget();
                                    
                                    QVBoxLayout *vbox = new QVBoxLayout;
                                    vbox->addWidget(terminalWidget);
                                    groupBox->setLayout(vbox); // <--- This sets layout inside it
                                    
                                    terminalWidget ->show();
                                    if (/*terminalWidget*/groupBox) /*terminalWidget*/groupBox->setFocus();
                                       groupBox->show();
                                    

                                    Sorry,

                                    Yeah, I had changed it in the meantime to:

                                        QGroupBox *groupBox = new QGroupBox(tr("Test"), parent);
                                        groupBox->setAlignment(Qt::AlignLeft);
                                        QWidget* terminalWidget = terminal->terminalWidget();
                                        QVBoxLayout *vbox = new QVBoxLayout;
                                        vbox->addWidget(terminalWidget);
                                        vbox->addWidget(groupBox);
                                        //groupBox->setLayout(vbox);  <- if i remove the comment, it won't start my application at all...
                                        terminalWidget ->show();
                                        if (/*terminalWidget*/groupBox) /*terminalWidget*/groupBox->setFocus();
                                    
                                    1 Reply Last reply
                                    0
                                    • p3c0P Offline
                                      p3c0P Offline
                                      p3c0
                                      Moderators
                                      wrote on last edited by
                                      #19

                                      @cerr So now set vbox as a layout to its parent widget.

                                      157

                                      cerrC 1 Reply Last reply
                                      0
                                      • p3c0P p3c0

                                        @cerr So now set vbox as a layout to its parent widget.

                                        cerrC Offline
                                        cerrC Offline
                                        cerr
                                        wrote on last edited by
                                        #20

                                        @p3c0 said in how to setAlignment of QGroupBox:

                                        @cerr So now set vbox as a layout to its parent widget.

                                        Did you mean like?

                                        QVBoxLayout *vbox = new QVBoxLayout;
                                            vbox->addWidget(terminalWidget);
                                            vbox->addWidget(groupBox);
                                            vbox->addWidget(parent);
                                            groupBox->setLayout(vbox);
                                            terminalWidget ->show();
                                        ``` - that doesn't let me open my application...
                                        1 Reply Last reply
                                        0
                                        • p3c0P Offline
                                          p3c0P Offline
                                          p3c0
                                          Moderators
                                          wrote on last edited by
                                          #21

                                          @cerr Probably something like this. Assuming QDialog is my main widget which contains groupbox.

                                          QVBoxLayout *mainLayout = new QVBoxLayout;
                                          myDialog->setLayout(mainLayout);
                                          
                                          //Now add widgets into this layout
                                          
                                          mainLayout->addWidget(groupBox);// groupbox first
                                          mainLayout->addWidget(terminalWidget);
                                          

                                          Now in your case if you want to add terminalWidget inside a groupbox's layout you can create new one and add into it keeping mainLayout as it is.

                                          157

                                          cerrC 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