1

次のように配置された特定の行を持つ QGridLayout があります。

+---------------------------+
|     |                |    |
|  A  |       B        |  C |
|     |                |    |
+---------------------------+

「B」と示されている QWidget (QLabel) が非表示になることがあります。これが発生した場合、ウィジェット「A」と「C」(2 つの QButton) を 50/50 に再分配する必要があります。後で、「B」をフローに戻し、20/60/20 のようなレイアウトにしたいと思います。

試してみましB->hide() B->setVisible(false) layout->removeWidget(B)たが、これらのケースのそれぞれで、'B' のスペースがまだ画面上に予約されています。

4

2 に答える 2

1

レイアウトを変更する必要があります (これは « グリッド » であるため、すべての列を縮小する必要があります)。

3つすべてをGridLayoutに入れる代わりに、追加するQHBoxLayoutにそれらを追加します gridLayout->addLayout(vLayout, 0, row, 1, -1)

于 2013-02-14T03:01:29.880 に答える
0

colspan 10 があるとすると、A は 2 つの列、B - 6 および C - 2 を使用します。

次のようにウィジェットをレイアウトに追加します。

layout->addWidget(A,0,0,1,2); // 2 - is rowspan
layout->addWidget(B,0,2,1,6); // 6 - is rowspan
layout->addWidget(C,0,8,1,2); // 2 - is rowspan

そこ: 20-60-20 ですが、50 x 50 の A と C のみが必要な場合は、レイアウトから A、B、C を削除し、次のように再度追加する必要があります。

layout->addWidget(A,0,0,1,5); // 5 - is rowspan
layout->addWidget(C,0,5,1,5); // 5 - is rowspan
于 2013-02-14T11:39:40.720 に答える