私は次の配置を得ました(元はこちら):
5 つの型破りなサイズのボタン (w:400、h:300) が次のように配置されています。他の 4 つのボタンの交差。ウィンドウを展開、最大化、最小化するときにこの配置を維持するために使用できるレイアウト (グリッドレイアウト、フォーム レイアウトなど) があるかどうかを知りたいです。助けてくれてありがとう。
私は次の配置を得ました(元はこちら):
5 つの型破りなサイズのボタン (w:400、h:300) が次のように配置されています。他の 4 つのボタンの交差。ウィンドウを展開、最大化、最小化するときにこの配置を維持するために使用できるレイアウト (グリッドレイアウト、フォーム レイアウトなど) があるかどうかを知りたいです。助けてくれてありがとう。
(宿題の質問のように聞こえます。)
私の最初のアプローチは、グリッド レイアウトを設定した後、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();
}
グリッドのサイズを調整するときにグリッド要素を中央に配置し、隙間がないようにしたい場合は、外側にバッファ行/列を追加し、ストレッチ値を設定してください。この例のように。
それが役立つことを願っています。
サイズ 4x4 の QGridLayout を使用します。QGridLayout::addWidget()
次に、各ボタンが 2x2 グリッド レイアウト セルを使用するようにします。これは、適切なオーバーロードを使用して使用できます。そこに与えるcolumnSpan
とrowSpan
2.