今私は、アプリケーションの左側にQDockWidgets
をカスタマイズしました。アプリケーションを起動すると、それぞれが表示されますが、それぞれの表示が分かりやすいため、非常に小さくなります。QDockWidgetsのネスト
QDockWidgets
のうち3つがプライマリの1つの背後にネストして、その優先度と画面の左側全体を与えたいと思います。
作成時にQDockWidgets
をネストする方法を知っている人はいますか?
今私は、アプリケーションの左側にQDockWidgets
をカスタマイズしました。アプリケーションを起動すると、それぞれが表示されますが、それぞれの表示が分かりやすいため、非常に小さくなります。QDockWidgetsのネスト
QDockWidgets
のうち3つがプライマリの1つの背後にネストして、その優先度と画面の左側全体を与えたいと思います。
作成時にQDockWidgets
をネストする方法を知っている人はいますか?
QDockWidgetsはQMainWindowと大きく統合されているため、これはおそらく不可能です。
舞台裏では、QMainWidowにはすべてのQDocksWidgets、QToolbars、およびメインウィジェットを含むメインレイアウトがあります。
QDockWidgetを他のものに置き換えたり、それらの上に描画したりすることは、可能な場合があります。これを行う方法を正確に見て、おそらくあなたがするべきではないことであるQDockWidgetから継承するためには、QMainWindowコードを掘り下げる必要があります。
あなたが何をしているのか正確にはわかりません。おそらく、DockウィジェットでQStackedWidgetのようなものを使用し、ドラッグ&ドロップイベントを使って新しいQDockWidgetsを作成したり、QDockWidgetの内容を新しいQStackedWidgetに移動したりすることができますか?
これはQMainWindow.tabifyDockWidget
で実現することができます。
http://doc.qt.io/archives/4.6/qmainwindow.html#tabifyDockWidget
これは自動的にタブを作成し、必要に応じて、各ドックウィジェットを選択することができます。
brianzのソリューションを使用してQDockWidgetsをタブリスト化したくない場合は、removeDockWidgetとaddDockWidgetを区別なく使用して、表示可能なDockウィジェットを設定してください。
あなたはdock1とDOCK2がある場合:
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();
}
場合に簡略化することでした一部のメニューアクションで
g_Main->addDockWidget(Qt::LeftDockWidgetArea, dock1);
:starupで
をQMainWindowから派生し、Dockウィジェットの親クラスを使ってautomatica一つはドックに追加されたときにLLYから他人を削除するために信号を送ること
試してみてください。
QMainWindow ::(真)setDockNestingEnabled。