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. QLayout: attempting to add QLayout "" to MainWindow, which already has a layout (solved)
Forum Updated to NodeBB v4.3 + New Features

QLayout: attempting to add QLayout "" to MainWindow, which already has a layout (solved)

Scheduled Pinned Locked Moved General and Desktop
17 Posts 7 Posters 35.7k Views 2 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.
  • H Offline
    H Offline
    houmingc
    wrote on last edited by
    #6

    The code is in github
    https://github.com/houmingc/HorizontalLayout1/blob/master/HorizontalLayout/mainwindow.cpp

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

      setCentralWidget as the name implies needs a QWidget not a QHBoxLayout.
      Put your Layout_page3 on a placeholder widget and then set it as central widget

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

      H 1 Reply Last reply
      0
      • SGaistS SGaist

        setCentralWidget as the name implies needs a QWidget not a QHBoxLayout.
        Put your Layout_page3 on a placeholder widget and then set it as central widget

        H Offline
        H Offline
        houmingc
        wrote on last edited by
        #8

        Layout_page3 = new QHBoxLayout(this);
        Layout_page3->addWidget(w);
        Layout_page3->addLayout(rightLayout2);
        setCentralWidget(Layout_page3);

        This doesn't work, neither is this
        this->setCentralWidget(Layout_page3);

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

          Again: setCentralWidget takes a QWidget not a QLayout as a parameter.

          Again 2:Put your Layout_page3 layout on a QWidget and then set that widget using setCentralWidget.

          QWidget *placeholderWidget = new QWidget;
          placeholderWidget->setLayout(Layout_page3);
          setCentralWidget(placeholderWidget);
          

          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
          1
          • H Offline
            H Offline
            houmingc
            wrote on last edited by
            #10

            git push my code. Thanks, although i got no error, but the warning is still there.

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

              Are you still trying to set a layout on your main window ?

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

              H 1 Reply Last reply
              0
              • SGaistS SGaist

                Are you still trying to set a layout on your main window ?

                H Offline
                H Offline
                houmingc
                wrote on last edited by houmingc
                #12

                @SGaist
                yes sir

                http://picpaste.com/019a8b1d437063802a66d05904e663a6.jpg

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

                  So again: you can not do that as the error message says. As already stated: QMainWindow already has a layout. The one that handles dock widgets, menu bar, status bar etc. You can't replace it. The central content of a QMainWindow is a QWidget, so create one widget that does what you want and set it using setCentralWidget.

                  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
                  1
                  • Narasimha Reddy MVN Offline
                    Narasimha Reddy MVN Offline
                    Narasimha Reddy MV
                    wrote on last edited by Narasimha Reddy MV
                    #14

                    You are Creating Layout inside a widget so Don't use (Parent Instance) 'this' pointer.

                    Layout_page3 = new QHBoxLayout;

                    try this it will work

                    1 Reply Last reply
                    0
                    • Qterry.wangQ Offline
                      Qterry.wangQ Offline
                      Qterry.wang
                      wrote on last edited by
                      #15

                      Good afternoon every one!
                      I encour this issue too, Msg is:

                      18:28:21: Debugging starts
                      QLayout: Attempting to add QLayout “” to MainWindow “MainWindow”, which already has a layout

                      Reason:
                      I used the following In QMainwindow:
                      ====error code=> QGridLayout *t_gridLayout_map = new QGridLayout(this);
                      Solution:
                      remove "this" as the following:
                      ====OK code=> QGridLayout *t_gridLayout_map = new QGridLayout();

                      That's OK!
                      have a good day!

                      Have a good day !

                      JonBJ D 2 Replies Last reply
                      1
                      • Qterry.wangQ Qterry.wang

                        Good afternoon every one!
                        I encour this issue too, Msg is:

                        18:28:21: Debugging starts
                        QLayout: Attempting to add QLayout “” to MainWindow “MainWindow”, which already has a layout

                        Reason:
                        I used the following In QMainwindow:
                        ====error code=> QGridLayout *t_gridLayout_map = new QGridLayout(this);
                        Solution:
                        remove "this" as the following:
                        ====OK code=> QGridLayout *t_gridLayout_map = new QGridLayout();

                        That's OK!
                        have a good day!

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

                        @Qterry-wang said in QLayout: attempting to add QLayout "" to MainWindow, which already has a layout (solved):

                        QGridLayout *t_gridLayout_map = new QGridLayout();

                        This does not address the issue. It merely creates a currently-unparented QGridLayout, it depends what you then do with that. You cannot then add it directly to this, the MainWindow, since that already has a layout.

                        1 Reply Last reply
                        1
                        • Qterry.wangQ Qterry.wang

                          Good afternoon every one!
                          I encour this issue too, Msg is:

                          18:28:21: Debugging starts
                          QLayout: Attempting to add QLayout “” to MainWindow “MainWindow”, which already has a layout

                          Reason:
                          I used the following In QMainwindow:
                          ====error code=> QGridLayout *t_gridLayout_map = new QGridLayout(this);
                          Solution:
                          remove "this" as the following:
                          ====OK code=> QGridLayout *t_gridLayout_map = new QGridLayout();

                          That's OK!
                          have a good day!

                          D Offline
                          D Offline
                          Diaxion
                          wrote on last edited by
                          #17

                          @Qterry-wang wow I was also getting similar warning and i deleted parameter like you, warning was gone. THX !

                          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