2013-11-22 94 views
0

我試圖玩弄GUI佈局,看看我能用它做什麼。這是我想達到的目的:有在widget的上半部分標題框,它應該是這樣的:如何正確使用Qt佈局

***************************** 
*  [LOGO]  [button]* 
***************************** 

標誌應在框架的中心,並沒有什麼的它的左邊。 LOGO右側還會有一個按鈕。 LOGO具有固定大小。

我可以在沒有按鈕的情況下將LOGO放在中央,但是一旦我添加它,LOGO的位置就會改變。

因此,我現在的解決方案是在LOGO的左側添加一個沒有文字的測試標籤,這樣框架就會與中間的LOGO對稱。

但我仍然對這種佈局的正確方式感到好奇,任何人都可以幫忙嗎?非常感謝

回答

0

您可能會考慮使用QGridLayout並致電QGridLayout::setColumnStrech將優先級分配給相應的列。您也可以使用QSpacerItem在您的小部件之間添加空間。

下面是一些示例代碼:

QGridLayout *gridLayout = new QGridLayout; 
// Set the minimum widths for all three columns of the grid 
gridLayout->setColumnMinimumWidth(0, 100); 
gridLayout->setColumnMinimumWidth(1, 300); 
gridLayout->setColumnMinimumWidth(2, 100); 

// use width 100 to fill the first column 
QSpacerItem *spacer = new QSpacerItem(100, 0); 
QLabel *logo = new QLabel; 
QButton *button = new QButton; 

gridLayout->addWidget(spacer, 0, 0); 
gridLayout->addWidget(logo, 0, 1); 
gridLayout->addWidget(button, 0, 2); 

此外,一看便知這個問題的更多信息:QGridLayout, 3 panes, not expanding properly

+0

感謝您的答覆!我已經嘗試了這兩種方法,但他們不像我預期的那樣工作。我可以有3個水平網格的網格佈局,但如果我沒有在最左邊的網格內放置任何東西,那麼qt設計器中的小部件看起來是正確的,但是當我運行該應用時,LOGO位於不同的位置。由於右側的按鈕,使用LOGO左側和右側的墊片會導致LOGO稍微靠近中間的左側。 – user2178705

+0

您需要確保第一列和第三列的寬度相同。然後你的第二列將被集中。 –

+0

有沒有辦法讓我設置列的寬度?在我看來,列的寬度是根據該列中的小部件大小自動設置的。我試圖在設計師內部調整它,但失敗了。 – user2178705