如何在QGridLayout中排列项目如图所示?

时间:2012-03-02 11:59:50

标签: qt qgridlayout

------------  ------
|          |  | 2  |
|          |  |    |
|     1    |  ------
|          |  ------  
|          |  |  3 |
------------  ------

如何排列上面的QGridLayout

我试过了:

QGridLayout *layout = new QGridLayout();
centralWidget->setLayout (layout);

layout->addWidget (objOne, 0, 0);
layout->addWidget (objTwo, 0, 1);
layout->addWidget (objThree, 1, 1);

但失败了。

2 个答案:

答案 0 :(得分:22)

查看addWidget文档。您可以提供rowSpancolumnSpan

QGridLayout *layout = new QGridLayout();
centralWidget->setLayout (layout);

layout->addWidget (objOne, 0, 0, -1, 1);
layout->addWidget (objTwo, 0, 1, 1, 1);
layout->addWidget (objThree, 1, 1, 1, 1);

请注意,使用QtDesigner创建所需的布局要容易得多。查看this Qt documentation page了解详情

答案 1 :(得分:18)

出于某种原因,您是否必须使用QGridLayout?对于像这样的简单布局,我发现使用一个QHBoxLayout和一个QVBoxLayout的组合更容易。

QVBoxLayout* vlayout = new QVBoxLayout();
vlayout->addWidget(objTwo);
vlayout->addWidget(objThree);

QHBoxLayout* hlayout = new QHBoxLayout();
hlayout->addWidget(objOne);
hlayout->addLayout(vlayout);