2009-03-04 10 views
0

今私は、アプリケーションの左側にQDockWidgetsをカスタマイズしました。アプリケーションを起動すると、それぞれが表示されますが、それぞれの表示が分かりやすいため、非常に小さくなります。QDockWidgetsのネスト

QDockWidgetsのうち3つがプライマリの1つの背後にネストして、その優先度と画面の左側全体を与えたいと思います。

作成時にQDockWidgetsをネストする方法を知っている人はいますか?

答えて

1

QDockWidgetsはQMainWindowと大きく統合されているため、これはおそらく不可能です。
舞台裏では、QMainWidowにはすべてのQDocksWidgets、QToolbars、およびメインウィジェットを含むメインレイアウトがあります。

QDockWidgetを他のものに置き換えたり、それらの上に描画したりすることは、可能な場合があります。これを行う方法を正確に見て、おそらくあなたがするべきではないことであるQDockWidgetから継承するためには、QMainWindowコードを掘り下げる必要があります。

0

あなたが何をしているのか正確にはわかりません。おそらく、DockウィジェットでQStackedWidgetのようなものを使用し、ドラッグ&ドロップイベントを使って新しいQDockWidgetsを作成したり、QDockWidgetの内容を新しいQStackedWidgetに移動したりすることができますか?

1

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から他人を削除するために信号を送ること

0

試してみてください。

QMainWindow ::(真)setDockNestingEnabled。