2011-12-05 313 views
0

我在我的主窗口小部件的ctor中,在我的Qt应用程序中有以下代码。不管我如何对齐添加到QGridLayout的按钮,他们总是停留在左上角,彼此重叠。Qt Gridlayout不重新对齐GUI元素

有人可以告诉我我做错了什么,我找不到它。

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到网格中,并没有显示出来。

+0

这应该很好。你确定你没有在设计师中使用过不同的布局吗? – pnezis

+0

@webclectic我没有使用设计师。我使用VS2008从代码中完成所有工作。 –

回答

0

最后尝试拨打this->adjustSize()

+0

是的,我刚刚做到了。似乎不会有所作为。 –

1

问题是我的主窗口来自QMainWindow,其中您需要在添加GUI元素之前添加一个CentralWidget。我改变了我的主窗口,而不是从QWidget派生,现在它可以工作。

+0

您可以将此添加为您原始帖子的评论。 – timwoj

0

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