2

Qt の場合: widget-ui クラスを作成し、ウィジェットを 2 つの別個のベース ウィジェット (またはウィンドウ) の 2 つの異なるレイアウトで表示したいと考えています。だから私はしたい:

widget_based_class* inside = new widget_based_class(base_widget1);

QHBoxLayout *lay1=new QHBoxLayout(base_widget1);
base_widget->setLayout(lay1);
lay1->addWidget(inside);
base_widget1.show();

-------------------------------
base_widget1.hide();
QHBoxLayout *lay2=new QHBoxLayout(base_widget2);
base_widget->setLayout(lay2);
lay2->addWidget(inside);
base_widget2.show();

どうすればこれを達成できますか? (私のプログラムはもっと複雑で、コードが機能するのがわかりませんでした。) タンク ユー。

4

3 に答える 3

4

QWidget には、親ウィジェットが 1 つだけあり、その親にジオメトリ (位置とサイズ) が 1 つだけあります。QLayout::addWidget() のすべての呼び出しは、そのウィジェットをウィジェットに再親化し、レイアウトがインストールされます。

新しいレイアウト マネージャーを設定する前に、既存のレイアウト マネージャーを削除する必要があるため、setLayout の 2 回目の呼び出しは期待どおりに機能しません。

delete base_widget->layout();
base_widget->setLayout(lay2);

base_widget がまだレイアウト マネージャーを取得していない場合、レイアウト マネージャー lay2 は単純に親が変更されます。

于 2012-09-29T06:29:52.773 に答える
-2

1 つのウィジェットを作成し、各レイアウトでポインターを使用しますか?

于 2012-09-29T03:02:39.943 に答える