アプリケーションを Qt 4.8.4 から Qt 5.2.1 に移植しました。Qt ドキュメントの FlowLayout サンプル コードでFlowLayout
提供されているクラスに問題があります。
中央のウィジェットの下部に がドッキングされていますQMainWindow
。QDockWidget
にQDockWidget
は、FlowLayout
いくつかの子ウィジェットがあります。Qt 4.8 では、これは魅力的に機能し、子ウィジェットのサイズはDockWidget
. ただし、Qt 5.2 では、DockWidget
はそのサイズを最大にしようとします (中央のウィジェットから取って代わります)。レイアウトを変更すると、この望ましくない動作を防ぐことができます。もちろんFlowLayout
わざと使ってるけど。
問題を説明するために、最小限の例を作成しました。
のコンストラクターDockWidget
:
QGroupBox *generalBox = new QGroupBox("");
generalBoxLayout = new FlowLayout;
generalBox->setLayout(generalBoxLayout);
for(int i=0; i<10; ++i)
{
QPushButton *button = new QPushButton("Test", this);
button->setMinimumWidth(100);
button->setMinimumHeight(100);
generalBoxLayout->addWidget(button);
}
this->setWidget(generalBox);
誰かが問題の内容と解決方法を知っていますか?
編集 新しい最小限の作業例を作成しましたが、残念ながらQt 4.8とQt 5.2の間の不一致を再現できません。Qt 4.8 でも同じ問題が発生するので、ここで紹介したいと思います。
垂直方向のスペース全体を占有する下部にドッキングされたドックウィジェットを示す初期ビュー:
ドックウィジェットをマウスでリサイズして表示
マウスでメインウィンドウのサイズを変更した後の表示
これらのスクリーンショットは、ドックウィジェットのサイズを手動で変更した後、ドックウィジェットが期待どおりに動作することを示しています。ただし、初期化時に、ウィジェットは使用可能なすべてのスペースを中央のウィジェットから取得しますが、これは望ましくありません。
誰かが解決策/回避策を知っていますか?