1

次のレイアウトのウィジェットを作成しようとしました。

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

私はいくつかのアプローチを試しましたが、最初のアプローチでは、QVBoxLayoutを使用して、QGridLayoutを使用するさまざまなウィジェットを追加しました(したがって、水平方向のサイズを希望どおりに変更します)。

//pseudo code, just to show what I tried... 
myHeaderWidget::myHeaderWidget() {
    QGridLayout* layout = new QGridLayout;

    layout->addWidget(new QCheckBox(), 0, 0, 1, -1, Qt::AlignRight | Qt::AlignTop);
    setLayout(layout);
}


oneOfMyOtherWidgets::oneOfMyOtherWidgets() {
    QGridLayout* layout = new QGridLayout;

    layout->addWidget(new QCheckBox(), 0, 0, 1, 1, Qt::AlignLeft | Qt::AlignTop);
    layout->addWidget(new QPushButton(), 0, 1, 1, -1, Qt::AlignLeft | Qt::AlignTop);

    setLayout(layout);
}


mydialog::mydialog() {
    QVBoxLayout* layout = new QVBoxLayout;
    setLayout(layout);

    layout->addWidget(new myHeaderWidget, 0, Qt::AlignRight);
    //here was the third widget containing Descr1 and Description2, as
    //drawn in image above
    layout->addWidget(new oneOfMyOtherWidgets, 0, Qt::AlignLeft);
}    

2番目のアプローチはmydialogのレイアウトとしてQGridWidgetを使用することであり、私の3番目のアプローチはmydialogの同じQGridWidgetにそれらすべてのアイテムを追加することでした。

これらの結果はすべて同じで、私にとっては奇妙な動作になります。これらのダイアログを作成してshow()を呼び出すと、次のいずれかが発生する可能性があります。

  1. すべてのアイテムは私が望む方法で描かれました。
  2. 左側のチェックボックスが表示されましたが、右側のボタンはチェックボックスの説明をカバーしていました
  3. 左側のチェックボックスは正しかったのですが、ボタンが見つかりませんでした。
  4. ボタンがすべてのスペースを占め、チェックボックスがまったく表示されませんでした。

誰かが私にヒント、私が間違ったことを教えてくれますか、または私が画像に描いたレイアウトを作成する方法を教えてもらえますか?

4

1 に答える 1

1

自分で見つけた:

setColumnStretch(0,1);

行方不明でした。追加されたウィジェットはセル内のスペース全体を占有しましたが、セルは成長しませんでした。

于 2013-03-19T09:02:41.397 に答える