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();
}

コードを実行すると、次のようになります。

ここに画像の説明を入力してください

baz2行にまたがるボタンを取得するためにレイアウトを変更すると、失敗します。

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

以下を追加しました。その後、すべてがうまくいきました。

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

ありがとう

于 2012-10-24T13:36:45.133 に答える
4

レイアウトは問題ありません。baz ボタンは 2 行にまたがっています。問題は、利用可能なすべてのスペースを使用していないことです。ボタンの垂直方向のサイズ変更ポリシーを Fixed から MinimumExpanding に変更する必要があります。

于 2012-10-23T22:05:29.727 に答える