0

私は次の配置を得ました(元はこちら):

test_image

5 つの型破りなサイズのボタン (w:400、h:300) が次のように配置されています。他の 4 つのボタンの交差。ウィンドウを展開、最大化、最小化するときにこの配置を維持するために使用できるレイアウト (グリッドレイアウト、フォーム レイアウトなど) があるかどうかを知りたいです。助けてくれてありがとう。

4

2 に答える 2

0

(宿題の質問のように聞こえます。)

私の最初のアプローチは、グリッド レイアウトを設定した後、2 番目のウィジェットを最初のウィジェットの親にすることでした。次に、2 番目のウィジェットを最初のウィジェットのサイズに合わせてサイズ変更する必要があります。私は過去に iOS のポップアップダイアログでそれを行いました。

@hydeのソリューションは、この問題に対してはるかにエレガントです。すべてをヒープに配置しましたが、このような単純なアプリケーションでは、代わりにすべてをスタックに配置できます ( QWidget * w = new QWidget();=> QWidget w;)。

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QList>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget * w = new QWidget();

    QGridLayout * grid = new QGridLayout();

    QList <QPushButton *> buttons;
    for(int i = 0; i< 5; i++)
    {
        buttons.append(new QPushButton("Button "+ QString::number(i+1)));
        buttons.last()->setFixedSize(400, 300);
    }

    grid->addWidget(buttons.at(0),0,0,2,2);// upper left
    grid->addWidget(buttons.at(1),0,2,2,2);// upper right
    grid->addWidget(buttons.at(2),2,0,2,2);// lower left
    grid->addWidget(buttons.at(3),2,2,2,2);// lower right
    grid->addWidget(buttons.at(4),1,1,2,2);// centered

    w->setLayout(grid);

    w->show();

    return a.exec();
}

グリッドのサイズを調整するときにグリッド要素を中央に配置し、隙間がないようにしたい場合は、外側にバッファ行/列を追加し、ストレッチ値を設定してください。こののように。

それが役立つことを願っています。

于 2015-08-27T08:17:04.703 に答える
0

サイズ 4x4 の QGridLayout を使用します。QGridLayout::addWidget()次に、各ボタンが 2x2 グリッド レイアウト セルを使用するようにします。これは、適切なオーバーロードを使用して使用できます。そこに与えるcolumnSpanrowSpan2.

于 2015-08-27T06:03:35.180 に答える