4

さて、基本的に、以下に示すように、QWidgetと2つのボタンを備えた単純なテーブルがあります。

QGridLayout *layout = new QGridLayout;
layout->addWidget(viewcontainer,0,0,1,2);
layout->addWidget(reset,1,0);
layout->addWidget(done,1,1);

これは基本的に私が欲しいもので、「リセット」と「完了」はボタンです。基本的に、これはQWidget、viewcontainerであり、ボタンの高さは同じままで、ユーザーがウィンドウサイズを変更するとサイズが変更されます。ただし、gridlayoutのデフォルトでは、コンテンツを左に揃えます。これを次のように変更した場合:

layout->addWidget(viewcontainer,0,0,1,2, Qt::AlignCenter);

それは私が望むようなものですが、graphicssceneのサイズは変更されなくなりました(小さな一定のサイズのままです)。ウィジェットを中央に揃えるだけで、サイズ変更を維持したいと思います。ありがとう。

4

2 に答える 2

4

クリーンなソリューションを提供する最も簡単なソリューションは、2 つのレイアウトをネストすることだと思います。

「外側」(親) レイアウトは QHBoxLayout である必要があり、addLayout ()を使用して QGridLayout を「内側」(子) レイアウトとして追加できます。

私の経験に基づいて、可能な限り Qt::Alignment を設定することは避けてください。レイアウトがめちゃくちゃになる可能性があります。単純なレイアウトの場合は機能しますが、より複雑なレイアウトの場合は避ける必要があります。また、将来レイアウトを拡張する必要があるかどうかもわからないため、ネストされたレイアウトを使用することをお勧めします。

もちろん、「外側」レイアウトと「内側」レイアウトの QWidget を作成することもできますが、ほとんどの場合、2 つのレイアウトをネストするだけで問題ありません。

また、QSpacerItemを使用してレイアウトを微調整することもできます。

于 2012-05-30T15:08:59.213 に答える