2011-12-05 34 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或改爲移動!