我的一个Widgets上有不必要的填充问题。这是它的设置方式:
首先我有一个MainWindow,它有一个带边距,填充和contentsMargins的QGridLayout都设置为0.在那里我把QGroupBox放在0,0位置和0,1我放了一个QWidget。 QWidget继续作为QGridLayout(具有相同的边距等,全部设置为0)并且在该布局中我将QGroupBox放置在0,0(其中包含我放置所有按钮的布局)和另一个View放在1上, 0。 MainMenu QGroupBox和“test”理论上应该对齐,因为我将所有填充和边距都删除为0.右侧是一个小部件的原因是我可以轻松地用其他东西替换它。
最奇怪的是,在窗口的底部,MainMenu GroupBox和右侧小部件是对齐的。只是在顶部,他们没有见面。如果有人能解决我的问题,真的很感激。我的最后一招是将MainMenu变成自己的Widget。感觉盒子感觉像是一个孩子,MainMenu在层次结构上更高。但这并不能解释为什么他们在底层对齐。
答案 0 :(得分:2)
看起来包含“测试”组框的布局看起来有一个上边距设置,所以我肯定会再次仔细检查。然后再检查一下:)
您是否可以将“测试”组框的字体设置为可能会丢弃某些字体的字体类型或大小?
您是否正在应用可能影响事物的样式表?
修改强>
我在.h中包含了.ui和结果代码。我在实验中使用了您在评论中要求描述的布局。
<强> 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>
.. 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