2

下面是如何绘制一个跨越 2 列的按钮:

#include <QtGui>

int main(int argv, char **args)
{
    QApplication app(argv, args);

    QPushButton *foo = new QPushButton("foo");
    QPushButton *bar = new QPushButton("bar");
    QPushButton *baz = new QPushButton("baz");

    QGridLayout *layout = new QGridLayout();
    layout->addWidget(foo, 0, 0);
    layout->addWidget(bar, 0, 1);
    layout->addWidget(baz, 1, 0, 1, 2); // span 2 columns

    QWidget window;
    window.setLayout(layout);
    window.setWindowTitle("test");
    window.show();

    return app.exec();
}

运行代码给了我:

在此处输入图像描述

如果我更改布局以获取一个baz跨越 2 行的按钮,我将失败:

layout->addWidget(foo, 0, 0);
layout->addWidget(bar, 1, 0);
layout->addWidget(baz, 0, 1, 2, 1); // (try to) span 2 rows

这是我得到的:

在此处输入图像描述

4

2 回答 2

4

您的布局很好,baz 按钮跨越两行。问题是它没有使用所有可用空间。您必须将按钮的垂直调整大小策略从 Fixed 更改为 MinimumExpanding。

于 2012-10-23T22:05:29.727 回答
4

我添加了以下内容,之后一切都很好:

 foo->setSizePolicy(QSizePolicy::MinimumExpanding,
                    QSizePolicy::MinimumExpanding);
 bar->setSizePolicy(QSizePolicy::MinimumExpanding,
                    QSizePolicy::MinimumExpanding);
 baz->setSizePolicy(QSizePolicy::MinimumExpanding,
                    QSizePolicy::MinimumExpanding);

谢谢

于 2012-10-24T13:36:45.133 回答