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. Layout issue in the window.

Layout issue in the window.

Scheduled Pinned Locked Moved General and Desktop
13 Posts 4 Posters 4.3k 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.
  • N Offline
    N Offline
    N.Sumi
    wrote on last edited by N.Sumi
    #1

    Hi all,

    I have a problem in making layout to my MainWindow. Mainwinbdow is having manu bar , tool bar on the top and the rest space has to be occupied by three things. I planned to keep fixed postion tabwidget on left side, next to it I need to show multiple docks in using grid layout and the property dock widget at the right side. I added a image so that to get good imagination on my problem.Can some please the best way to make a suitable layout. I tried HBoxlayout, VBoxLayout,GridLAyout. Might be am on wrong trck..Someone please suggest to do this.
    [https://www.dropbox.com/s/1b1fgt8g8cj88h2/mainlayout image.PNG?dl=0 ](link url)

    thanks,
    Sumi

    1 Reply Last reply
    0
    • M Offline
      M Offline
      maximus
      wrote on last edited by
      #2

      Hi there,

      Instead of a QTabWidget on the left side, you could use a QListView linked to a QStackedLayout
      Not sure this is what you need, but you can achieve this kind of interface:
      https://www.dropbox.com/s/bu56ww44y9du3is/QStacked1.png?dl=0

      Basically you can hide/show multiple QWidget on the QStackLayout depending on the selection of the QListView.
      Good luck!


      Free Indoor Cycling Software - https://maximumtrainer.com

      1 Reply Last reply
      0
      • N Offline
        N Offline
        N.Sumi
        wrote on last edited by
        #3

        Hi Mr.Maximus,

        I need a Tabwidget with two tabs, each tab holds different controls. Could you please have a look on my link.'SO that you will get an idea.
        thanks for your advice.
        Please have look on the image attached here.

        https://www.dropbox.com/s/803li7jw83j7kwk/mainlayoutopengl.PNG?dl=0

        thanks,
        Sumi.

        1 Reply Last reply
        0
        • M Offline
          M Offline
          maximus
          wrote on last edited by
          #4

          Thank you for the picture.

          You could have a ListView on the left replacing the TabWidget, then 2 QStackWidget on the right.
          Would be best if you could show the interaction with the 3 UI at the bottom so we can understand better what you need. Hand written UI works fine for saving time :)


          Free Indoor Cycling Software - https://maximumtrainer.com

          1 Reply Last reply
          1
          • N Offline
            N Offline
            N.Sumi
            wrote on last edited by N.Sumi
            #5

            Thank you Mr. Maximus,

            In the moment I don't have full stuff to show. But I can explain the whole thing for better understanding of my problem. But approximately I will going to some stuff some like this. Please have a look on controls and visualization window. In my case I also will be having another dock on Right side. Thid right side dock will also make communication Visualization screen,

            https://www.dropbox.com/s/99tf0o2o86u4kte/Mainlayout.PNG?dl=0

            Might after end of the code.It might look this stuff

            https://www.dropbox.com/s/ovepkozf07nw2lc/threeclusters_.bmp?dl=0

            thank in advance,
            Sumi

            1 Reply Last reply
            0
            • N Offline
              N Offline
              N.Sumi
              wrote on last edited by N.Sumi
              #6

              Here is part of my code:
              mainwindow::mainwindow()
              {
              Qwidget *window = new Qwidget;
              size
              title
              creat Actions();
              createmenubar();
              createtoolbar();

              Q**** mainlayout = new Q***; ////////////////////////how to give the layout like in the linkof the above post
              mainlayout->addwidget/layout (tabwidget goes here);
              mainlayout->addlayout(gridodopengldocks);
              mainlayout->addLayout(property_dock);
              windows->setlayout(mainlayout)

              }
              void mainwindow:: createmenubar()
              {
              //menu stuff file edit blah etc
              }
              void mainwindow::createtoolbar()
              {
              fonttoolbar->addaction***** blah
              }
              void mainwindow::create_tabW_widget_container()
              {
              }
              void mainwindow::createdocks_for_opengl()
              {
              Qgridlayout *gridodopengldocks = new QGridlayout;
              Qdockwidget 'dock = new Qdockwidget;
              QOpenGLWidget *glwidget = new QopenglWidget;
              dock->addwidget(glWidget);
              }

              void mainwindow::createporperty()
              {
              Qdockwidget 'prop_ock = new Qdockwidget;
              property_dock->setpositon (Right..)

              }

              1 Reply Last reply
              0
              • M Offline
                M Offline
                maximus
                wrote on last edited by maximus
                #7

                Oh I see now.

                You only need a QHorizontalLayout a the bottom for your 3 QWidgets

                So basically:

                1. Set Main Layout to a Vertical Layout
                2. Insert Menu Bar, Tool, bar, specifiy a maximum height so it doesn't take too much
                3. Create a Horizontal Layout, insert your 3 QWidget there
                4. Insert the Horizontal Layout(3) in the Vertical Layout

                You can do all this in the Designer just for testing
                Good luck,
                Max


                Free Indoor Cycling Software - https://maximumtrainer.com

                1 Reply Last reply
                0
                • N Offline
                  N Offline
                  N.Sumi
                  wrote on last edited by
                  #8
                  This post is deleted!
                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    N.Sumi
                    wrote on last edited by SGaist
                    #9

                    Hi Maximus ,

                    I was trying this as you told.But it is giving me the crash. I don't know Where I did mistake.
                    It is giving error :: QLayout: Cannot add a null layout to QHBoxLayout/

                    And here is code clip..

                    MainWindow:: MainWindow()
                    {
                        QWidget *window = new QWidget();
                        setCentralWidget(window);
                    
                    
                        QHBoxLayout *HLayout = new QHBoxLayout;
                        HLayout->addLayout(tabbox );
                        HLayout->addLayout(grid);
                        HLayout->addLayout(docks);
                    
                        QVBoxLayout *mainLayout = new QVBoxLayout;
                        mainLayout->addLayout(HLayout);
                        window->setLayout(mainLayout);
                    
                    
                        createActions();
                        createMenus();
                        createToolBar();
                       createPropertyDock();
                        createtabwidget();
                       createDockWidget();
                    
                    
                        QString message = tr("A context menu is available by right-clicking");
                        statusBar()->showMessage(message);
                    
                        setWindowTitle(tr("Mainwindow"));
                        setMinimumSize(160, 160);
                        resize(1200, 800);
                    }
                    
                    void MainWindow :: createPropertyDock()
                    {
                       QHBoxLayout *docks =new QHBoxLayout;
                        QDockWidget *dock = new QDockWidget(tr("Properties"), this);
                        docks->addWidget(dock);
                    
                        dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
                    
                        addDockWidget(Qt::RightDockWidgetArea, dock);
                    
                    }
                     void MainWindow :: createtabwidget()
                      {
                        QHBoxLayout *tabbox = new QHBoxLayout;
                        QTabWidget *tabWidget = new QTabWidget;
                        tabbox->addWidget(tabWidget);
                        tabWidget->setTabPosition(QTabWidget::West);
                    
                        tabWidget->setSizePolicy(QSizePolicy ::Fixed , QSizePolicy ::Fixed);
                             //tabWidget->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
                        tabWidget->setMinimumSize(256,1160);
                        tabWidget->setMaximumSize(256,1160);
                    }
                    void MainWindow::createDockWidget()
                    {
                       QGridLayout *grid = new QGridLayout;
                        QDockWidget *dw = new QDockWidget;
                        grid->addWidget(dw);
                        dw->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
                            dw->setWidget(new QOpenGLWidget);
                    }
                    

                    thnaks in advance ,
                    Sumi

                    [edit: Added missing coding tags ``` SGaist]

                    1 Reply Last reply
                    0
                    • mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #10

                      @N.Sumi said:
                      Hi, just a question.
                      in
                      void MainWindow :: createtabwidget()
                      you create the local variable:
                      QHBoxLayout *tabbox = new QHBoxLayout;
                      and in
                      MainWindow:: MainWindow()
                      Layout->addLayout(tabbox );

                      If they are the same ?, then tabbox should live in MainWindow class and it should be
                      tabbox = new QHBoxLayout;
                      in createtabwidget()
                      My guess is that you did declare them in .h but made a local var by accident. ?

                      1 Reply Last reply
                      0
                      • N Offline
                        N Offline
                        N.Sumi
                        wrote on last edited by
                        #11

                        Hi mrjj,

                        you are right. They both are same. But I have changed them to as you said. But it's stilling not working. I dont know what the mistake am doing here.

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          maximus
                          wrote on last edited by
                          #12

                          Good way to find where it crash it put qDebug message here and there, or use the debugger.


                          Free Indoor Cycling Software - https://maximumtrainer.com

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            Hi,

                            If it crashes, a simple run through the debugger will tell you where exactly it misbehave

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            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