如何正确使用Qt布局

时间:2013-11-22 19:41:38

标签: qt layout qlayout

我正在尝试使用GUI布局,看看我能用它做些什么。这是我希望实现的:小部件的上半部分有一个标题框,它应该如下所示:

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

徽标应位于框架的中央,并且左侧没有任何内容。 LOGO右侧还有一个按钮。 LOGO具有固定的大小。

我可以在没有按钮的情况下在中心设置LOGO,但是一旦我添加它,LOGO的位置就会改变。

所以我目前的解决方案是在LOGO的左边添加一个没有文本的测试标签,这样框架就会与中间的LOGO对称。

但我仍然对这种布局的正确方法感到好奇,有人可以帮忙吗?非常感谢

1 个答案:

答案 0 :(得分: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