2

main のQMainWindowとしてa を使用します。これにより、ドッキング可能なウィジェットに使用できる別の領域が得られます ( )。QMainWindowQDockWidget

次の投稿によると、これは問題ありません。私にとっても完全に機能します。

  1. https://qt-project.org/forums/viewthread/17519
  2. http://www.qtcentre.org/threads/12569-QMainWindow-as-a-child-of-QMainWindow

通常のウィジェットとして動作させるためにQMainWindow、ウィンドウ フラグの設定を解除します。このトリックは、上記の投稿の 1 つに記載されています。

QMainWindowここで、ドッキングされたすべてのウィジェットでこの子をフロートできるようにしたいと考えています。つまり、「通常のウィジェットにする」というステップを元に戻したいのです。残念ながら、これは機能しません。メイン ウィンドウからは消えていますが、まったく表示されません。

それを解決する方法はありますか?

// this is the child QMainWindow
if (this->m_infoAreaFloating)
{
    // this should give me a floating window besides the main window
    this->setWindowFlags(Qt::Desktop);
    this->show();
}
else
{
    // make this compliant as QWidget
    this->setWindowFlags(this->windowFlags() & ~Qt::Window);
}

関連: a , b

4

1 に答える 1

3

フラグは、Qt::Desktop自分で設定するものではありません。

Qt::Windowフラグを設定する必要があります。

setWindowFlags(m_infoAreaFloating ? Qt::Window : Qt::Widget);
show();

意味がありませんthis->windowFlags() & ~Qt::Window: 孤独なQt::Windowフラグを設定するときに、他のすべてのウィンドウ フラグをクリアしました。フラグを完全に制御できます。「その他の」フラグを保持する必要はありません。何もありません。

于 2014-07-23T18:05:22.223 に答える