为了使问题尽可能简单,我在下面准备了一个简单的Qt设计器表单

左边是Tab Widget,右侧是空QWidget,QWidget是GroupBox。Groupbox有一个收音机和按钮(您也可以在对象检查器窗口上看到它们)。选项卡小部件有一个行编辑。中央小部件有一个网格布局,并使用水平qsplitter。
我的问题是,当我扩大窗口,所有的项目(线编辑,无线电按钮,按钮)是在固定位置。下面是我的一个例子:

我想要的是,当窗口扩大的时候,物品应该放在窗口的底部,或者如果它们在中间,那么它们就应该放在中间。(我不想改变按钮/线条的大小)。
我该怎么做呢?
发布于 2014-10-07 08:14:30
要动态移动的项(窗口调整大小)必须位于布局中。因此,在您已经发布的示例中,您需要两个布局;一个在选项卡小部件内,用于QLineEdit,另一个在GroupBox中,用于单选按钮和按钮。
如果希望单选和按钮水平对齐,可以先将它们放置在水平布局中,然后再将其放置在位于组框中的另一个布局中。
当您开始向布局中添加项目(如按钮)时,您将开始注意到它们可能会被拉伸,因此您可能需要设置小部件的大小策略。
发布于 2014-10-07 08:28:24
如果你想要线编辑是居中的水平,你将必须放置两个水平间隔在每边的线编辑和选择三个在一起,并设置“平地水平”。这可以在Qt设计器的顶部工具栏上找到。
若要始终将其放在选项卡小部件的底部,请在选项卡小部件的行编辑上方放置一个垂直间隔。然后为选项卡小部件选择"Lay垂直“选项。
你的单选按钮和按钮也是如此。将它们保持在水平布局中,必要时使用水平间隔,并将垂直间隔放置到组框中,并将组框的布局属性设置为“垂直放置”。
最重要的是,我建议您在继续之前先阅读一些基本教程。以下是youtube上一个好频道的链接。
发布于 2014-10-07 08:09:25
如果您的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。
https://stackoverflow.com/questions/26231319
复制相似问题