0

現在QDockWidgets、アプリケーションの左側に 4 つのカスタマイズがあります。アプリケーションを起動すると、それぞれが表示されますが、それぞれの可視性のために非常に小さいです。

そのうちの 3 つをQDockWidgets1 つの主要な 1 つの背後にネストして、その 1 つの優先順位と画面の左側全体を指定したいと考えています。

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

4

5 に答える 5

5

これは次の方法で実現できますQMainWindow.tabifyDockWidget

http://doc.qt.io/archives/4.6/qmainwindow.html#tabifyDockWidget

これによりタブが自動的に作成され、必要に応じて各ドック ウィジェットを選択できます。

于 2009-08-17T19:39:48.007 に答える
1

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 から派生し、ドック ウィジェットの親クラスを使用して、ドックに追加されたときにシグナルを自動的に送信し、ドックから他のウィジェットを削除すると、簡略化できます。

于 2010-04-27T10:41:40.293 に答える
1

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

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

于 2009-03-04T00:44:28.290 に答える
0

試す:

QMainWindow :: setDockNestingEnabled(true);

于 2010-08-21T02:58:33.083 に答える
0

あなたが何を求めているのか正確にはわかりません。ドック ウィジェットで QStackedWidget のようなものを使用し、ドラッグ アンド ドロップ イベントを使用して新しい QDockWidget を作成したり、QDockWidget の内容を新しい QStackedWidget に移動したりできますか?

于 2009-03-04T14:14:15.113 に答える