Qt设计师:放大窗口不会取代我的物品

时间:2014-10-07 08:03:55

标签: qt user-interface qt-designer

为了使问题尽可能简单,我在

下准备了一个简单的Qt设计师表格

enter image description here

左侧有一个Tab Widget,右侧有空QWidget,QWidget是GroupBox。 Groupbox有一个收音机和按钮(您也可以在照片上的对象检查器窗口中看到它们)。选项卡小部件具有行编辑。中央窗口小部件有一个gridlayout,使用水平qsplitter。

我的问题是,当我放大窗口时,所有项目(lineedit,radiobutton,按钮)都在固定位置。以下是我的意思:

enter image description here

我想要的是,当窗户放大时,物品应放在窗户的底部,或者如果它们在中间,那么它们应该留在中间。 (我不希望改变按钮/线条的大小)。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

要动态移动的项目,窗口大小调整必须在布局中。 因此,在您发布的示例中,您需要两个布局;选项卡小部件中的一个用于QLineEdit,而在GroupBox中至少有一个用于单选按钮和按钮。

如果您想要将收音机和按钮水平对齐,您可以先将它们放在水平布局中,然后再将该布局放在另一个布局中,这些布局都位于组框中。

当您开始向布局添加项目(例如按钮)时,您会开始注意到它们可能会被拉伸,因此您可能需要设置窗口小部件的大小策略。

答案 1 :(得分:2)

如果您想要将线条编辑水平居中,则必须在线条编辑的每一侧放置两个水平间隔物并一起选择三个并设置"水平布局"。这可以在Qt Designer的顶部工具栏中找到。

要始终将其放在选项卡小部件的底部,请在选项卡小部件中的行编辑上方放置一个垂直间隔符。然后选择选项"垂直布局"对于标签小部件。

您的单选按钮和按钮也是如此。将它们保持水平布局,如果需要,使用水平隔离物并将垂直间隔物放入组框中,并将组框的布局属性设置为"垂直布置"。

最重要的是,我建议您在继续之前先阅读一些基本教程。这是youtube上一个好频道的链接。

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

答案 2 :(得分:1)

如果tabWidget或GroupBox中没有布局:

您必须在标签窗口小部件和组框内设置布局(例如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。