2014-10-07 24 views
1

爲了使問題儘可能的簡單,我準備下面Qt的設計師放大窗口不會取代我的項目

enter image description here

一個簡單的Qt設計形式有一個標籤控件左側並在右側清空QWidget,將QWidget作爲GroupBox。 Groupbox有一個收音機和按鈕(你也可以在照片上的Object inspector窗口看到它們)。選項卡小部件具有行編輯。中央小部件具有網格佈局,並使用水平qsplitter。

我的問題是,當我放大窗口時,所有項目(lineedit,radiobutton,按鈕)都處於固定位置。這裏有一個例子我的意思:

enter image description here

我想要的是,當被放大窗口中的物品應放置在窗口的底部,或者如果他們在中間,那麼就應該留在中間。 (我不想要改變按鈕/ lineedits的大小)。

我該怎麼辦?

+0

我錯了,或者你沒有爲'tab','tab_2','widget'和'groupBox'佈局設置? – 2014-10-07 08:17:32

回答

2

要調整窗口大小的動態項目必須在佈局中。 因此,在您發佈的示例中,您需要兩種佈局;一個在標籤小部件內部,QLineEdit至少一個在GroupBox中用於單選按鈕和按鈕。

如果您希望無線電和按鈕水平對齊,您可以先將它們置於水平佈局中,然後再將該佈局放置在另一個佈局中,這些佈局都位於組合框中。

當您開始將項目添加到佈局(例如按鈕)時,您會注意到它們可能會拉長,因此您可能需要設置窗口小部件的尺寸策略。

1

如果你沒有在你的tabWidget或組框佈局:

您必須設置標籤控件內的佈局(例如QVBoxLayout)和組框。

它可以使用QtDesigner完成。它也可以在代碼就像這樣:

QWidget *window = new QWidget; 
QPushButton *button1 = new QPushButton("One"); 
QPushButton *button2 = new QPushButton("Two"); 
QPushButton *button3 = new QPushButton("Three"); 
QPushButton *button4 = new QPushButton("Four"); 
QPushButton *button5 = new QPushButton("Five"); 

QHBoxLayout *layout = new QHBoxLayout; 
layout->addWidget(button1); 
layout->addWidget(button2); 
layout->addWidget(button3); 
layout->addWidget(button4); 
layout->addWidget(button5); 

window->setLayout(layout); 

但是,如果你這樣做,然後你希望你的按鈕留在底部:

然後,你必須嘗試setRowStretch方法http://qt-project.org/doc/qt-4.8/qgridlayout.html#setRowStretch或採取看看QSpacerItem。

2

如果您想讓水平編輯水平居中,您必須在水平線編輯的每一邊放置兩個水平隔離片,並將三者一起選擇並設置「水平佈置」。這可以在Qt Designer的頂部工具欄找到。

要始終將其放在標籤小部件的底部,請在標籤小部件的行編輯上方放置一個垂直間隔器。然後爲選項卡小部件選擇選項「垂直佈局」。

您的單選按鈕和按鈕也是如此。將它們保持在水平佈局中,如果需要,可以使用水平間隔符,並將垂直間隔符放入組合框中,並將組合框的佈局屬性設置爲「垂直佈局」。

最重要的是,我建議你在繼續之前閱讀一些基本的教程。這裏是YouTube上一個很好的頻道的鏈接。

https://www.youtube.com/playlist?list=PL2D1942A4688E9D63

+0

+1 for VoidRealms :) – 2014-10-07 11:39:32

+0

VoidRealms是我對Qt編程感興趣的原因。 :) – nnb 2014-10-07 14:25:11