2

I'm having a huge problem with unwanted padding on one of my Widgets. This is how its set up:

First I have a MainWindow which has a QGridLayout with margin, padding and contentsMargins all set to 0. In that I put a QGroupBox on position 0,0 and on 0,1 I put a QWidget I made. The QWidget is made continas a QGridLayout (with the same margins etc, all set to 0) and in that layout I place a QGroupBox on 0,0(which contains a layout where i put all the buttons) and another View on the 1,0. The MainMenu QGroupBox and the "test" should in theory be aligned since I removed all padding and margins to 0. The reason why the right hand side is a widget is so that I easily can replace it with something else.

The weirdest this is that on the bottom of the windows, the MainMenu GroupBox and the right hand sides widget are aligned. Is just at the top they dont meet up. Would be really thankful if anyone could solve my problem. My last resort is to but the MainMenu into its own Widget. It feels like the box feels like its a child and the MainMenu is higher up on the hierarchy. But that doesnt explain why they are aligned on the bottom.

chikuba
  • 4,229
  • 6
  • 43
  • 75

1 Answers1

2

It certainly looks like the layout containing the "test" group box has a top margin set, so I would definitely check that again carefully. And then check it again :)

Could you possibly have set the font for the "test" group box to some font type or size that may be throwing things off?

Are you applying a style sheet that may be affecting things?

Edit:

I've included the .ui and resulting code in .h from my experiment with the layouts you describe as requested in comments.

mainwindow.ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>376</width>
    <height>433</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QGridLayout" name="gridLayout" columnstretch="0,0">
    <property name="margin">
     <number>0</number>
    </property>
    <property name="spacing">
     <number>0</number>
    </property>
    <item row="0" column="0">
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>GroupBox</string>
      </property>
      <property name="flat">
       <bool>false</bool>
      </property>
     </widget>
    </item>
    <item row="0" column="1">
     <widget class="QWidget" name="widget" native="true">
      <layout class="QGridLayout" name="gridLayout_2">
       <property name="margin">
        <number>0</number>
       </property>
       <property name="spacing">
        <number>0</number>
       </property>
       <item row="0" column="0">
        <widget class="QGroupBox" name="groupBox_2">
         <property name="title">
          <string>GroupBox</string>
         </property>
         <property name="alignment">
          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
         </property>
         <property name="flat">
          <bool>false</bool>
         </property>
        </widget>
       </item>
       <item row="1" column="0">
        <widget class="QWidget" name="widget_2" native="true"/>
       </item>
      </layout>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>376</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

..interesting part of ui_mainwindow.h

public:
    QWidget *centralWidget;
    QGridLayout *gridLayout;
    QGroupBox *groupBox;
    QWidget *widget;
    QGridLayout *gridLayout_2;
    QGroupBox *groupBox_2;
    QWidget *widget_2;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(376, 433);
        centralWidget = new QWidget(MainWindow);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        gridLayout = new QGridLayout(centralWidget);
        gridLayout->setSpacing(0);
        gridLayout->setContentsMargins(0, 0, 0, 0);
        gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
        groupBox = new QGroupBox(centralWidget);
        groupBox->setObjectName(QString::fromUtf8("groupBox"));
        groupBox->setFlat(false);

        gridLayout->addWidget(groupBox, 0, 0, 1, 1);

        widget = new QWidget(centralWidget);
        widget->setObjectName(QString::fromUtf8("widget"));
        gridLayout_2 = new QGridLayout(widget);
        gridLayout_2->setSpacing(0);
        gridLayout_2->setContentsMargins(0, 0, 0, 0);
        gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2"));
        groupBox_2 = new QGroupBox(widget);
        groupBox_2->setObjectName(QString::fromUtf8("groupBox_2"));
        QFont font;
        font.setFamily(QString::fromUtf8("MS Shell Dlg 2"));
        font.setPointSize(8);
        font.setBold(false);
        font.setWeight(50);
        font.setKerning(true);
        groupBox_2->setFont(font);
        groupBox_2->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter);
        groupBox_2->setFlat(false);

        gridLayout_2->addWidget(groupBox_2, 0, 0, 1, 1);

        widget_2 = new QWidget(widget);
        widget_2->setObjectName(QString::fromUtf8("widget_2"));

        gridLayout_2->addWidget(widget_2, 1, 0, 1, 1);


        gridLayout->addWidget(widget, 0, 1, 1, 1);

        MainWindow->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(MainWindow);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 376, 21));
        MainWindow->setMenuBar(menuBar);
        mainToolBar = new QToolBar(MainWindow);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(MainWindow);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        MainWindow->setStatusBar(statusBar);

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi
Arnold Spence
  • 21,942
  • 7
  • 74
  • 67
  • everything is set to 0. I realized that i must have something to do with the hierarchy of the windows. I now but the left hand side in a widget, together with some other stuff. They now end up on the same level in the window. – chikuba Feb 04 '12 at 23:30
  • I tried to duplicate your layout as you describe it using QtCreator and I didn't have that vertical offset problem. – Arnold Spence Feb 05 '12 at 06:55
  • could you please show me the code for that? really want to try to find out what i did wrong :) – chikuba Feb 05 '12 at 10:41
  • I've included the .ui and generated .h from QtDesigner. – Arnold Spence Feb 05 '12 at 18:24
  • have you tried to do this programatically? I have set eveything to 0, even dubbelchecked. Nothing to indicate why the spacing would occur. I still belive that is has something to do with that the QBoxWidget inside of the right main widget ends up lower down on the hierarchy compared to the one on the left side which only is a direct child to the centralWidget (instead of a "grandchild"). This must have some impact to the way the widgets are displayed since the QGroupBox gets smaller and smaller if you start putting them inside each other. – chikuba Feb 08 '12 at 23:00
  • Well the code in the .h file above is generated from the .ui file and that is how the UI is actually "programatically" constructed. – Arnold Spence Feb 08 '12 at 23:08