現在QDockWidgets
、アプリケーションの左側に 4 つのカスタマイズがあります。アプリケーションを起動すると、それぞれが表示されますが、それぞれの可視性のために非常に小さいです。
そのうちの 3 つをQDockWidgets
1 つの主要な 1 つの背後にネストして、その 1 つの優先順位と画面の左側全体を指定したいと考えています。
QDockWidgets
作成時にネストする方法を知っている人はいますか?
現在QDockWidgets
、アプリケーションの左側に 4 つのカスタマイズがあります。アプリケーションを起動すると、それぞれが表示されますが、それぞれの可視性のために非常に小さいです。
そのうちの 3 つをQDockWidgets
1 つの主要な 1 つの背後にネストして、その 1 つの優先順位と画面の左側全体を指定したいと考えています。
QDockWidgets
作成時にネストする方法を知っている人はいますか?
これは次の方法で実現できますQMainWindow.tabifyDockWidget
。
http://doc.qt.io/archives/4.6/qmainwindow.html#tabifyDockWidget
これによりタブが自動的に作成され、必要に応じて各ドック ウィジェットを選択できます。
brianz のソリューションを使用して QDockWidgets をタブ化したくない場合は、removeDockWidget と addDockWidget を交互に使用して、表示されるドック ウィジェットを設定します。
例: Dock1 と Dock2 がある場合:
起動時:
g_Main->addDockWidget(Qt::LeftDockWidgetArea, dock1);
いくつかのメニューアクションで:
void MainWnd::ShowDock2(){
g_Main->removeDockWidget(dock1);
g_Main->addDockWidget(Qt::LeftDockWidgetArea, dock2);
dock2->show();
}
別のメニュー アクション:
void MainWnd::ShowDock1(){
g_Main->removeDockWidget(dock2);
g_Main->addDockWidget(Qt::LeftDockWidgetArea, dock1);
dock1->show();
}
QMainWindow から派生し、ドック ウィジェットの親クラスを使用して、ドックに追加されたときにシグナルを自動的に送信し、ドックから他のウィジェットを削除すると、簡略化できます。
QDockWidgets は QMainWindow と高度に統合されているため、これはおそらく不可能です。
舞台裏で何が起こっているかというと、QMainWidow には、すべての QDocsWidgets、QToolbars、およびメイン ウィジェットを含むメイン レイアウトがあります。
可能なことは、何らかの方法で 1 つの QDockWidget を他のものに置き換えるか、それらの上に描画することです。これを行う方法を正確に確認するには、QMainWindow コードを少し掘り下げる必要があります。おそらく、通常は行うべきではない QDockWidget から継承する必要があります。
試す:
QMainWindow :: setDockNestingEnabled(true);
あなたが何を求めているのか正確にはわかりません。ドック ウィジェットで QStackedWidget のようなものを使用し、ドラッグ アンド ドロップ イベントを使用して新しい QDockWidget を作成したり、QDockWidget の内容を新しい QStackedWidget に移動したりできますか?