2013-11-22 63 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