Qt Gridlayout不会重新对齐GUI元素

时间:2011-12-05 12:26:59

标签: c++ qt qgridlayout

我在我的主要窗口小部件的ctor中,在我的Qt应用程序中有以下代码。无论我如何对齐添加到QGridLayout的按钮,它们总是保持在左上角,彼此重叠。

任何人都可以告诉我我做错了什么,我找不到。

btn_File= new QPushButton("&File", this);
btn_Close = new QPushButton("&Close", this);
btn_File->setAutoFillBackground(true);
btn_Close->setAutoFillBackground(true);

QGridLayout * layout = new QGridLayout(this);
layout->setContentsMargins(20,20,10,10);
layout->setSpacing(5);
layout->addWidget(btn_File,2,2, Qt::AlignRight);
layout->addWidget(btn_Close,1,1);
this->setLayout(layout);

编辑:似乎只绘制了btn_Close。我只是尝试将QComboBox添加到网格中,但它没有显示出来。

3 个答案:

答案 0 :(得分:1)

问题是我的主窗口是从QMainWindow派生的,你需要在添加GUI元素之前添加一个CentralWidget。我将主窗口改为派生自QWidget,现在它可以正常工作。

答案 1 :(得分:0)

试图在最后调用this->adjustSize()

答案 2 :(得分:0)

qt布局非常糟糕! qgridlayout上的对齐取决于对象的大小,对象需要多少cols,以及插入的最大对象的大小..因此很难根据需要放置对象... 我建议使用setGeometry或改为移动!