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

how to setAlignment of QGroupBox

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 4 Posters 15.8k 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.
  • 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