2009-08-17 27 views
10

起動時にQMainWindow.tabifyDockWidgetを使用してタブ付けされる3つのQDockWidgetsがあります。メインウィンドウで PyQtのタブ付きQDockWidgetを中心に

addDockWidgetのすべてのコールの後:

self.tabifyDockWidget(self.dock_widget1, self.dock_widget2) 
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3) 

特定のアクションに基づいて、私はの上に、これらのタブのいずれかを選択し、集中することを持参、またはしたいのですが他の2つは、まだ見えていない場合。私はsetVisiblesetWindowState(Qt.WindowActive)を使ってみましたが、何も変わりません。

プログラムでタブ付きドックウィジェットを選択して前面に表示する方法はありますか?

答えて

2

私はこれをテストしたが、ここで私は(私はあなたにPyQtは変換を残しておきます)4.5+のQtにしようと何していない。

class MyMainWindow ; // A QMainWindow 

void MyMainWindow::bringToFront(QDockWidget* dockIn) 
{ 
    QList<QDockWidget*> docks = tabifiedDockWidgets(dockIn) ; 
    foreach(QDockWidget* dock, docks) 
    { 
     // Move second dock on top of first dock widget. 
     tabifyDockWidget(dock, dockIn) ; 
    } 
} 

QMainWindow::tabifiedDockWidgets()QMainWindow::tabifyDockWidget()を参照してください。

http://qt-project.org/doc/qt-4.8/qwidget.html#raise

PyQtはでは、それはQWidget.raise_()です:QT-関心メーリングリストの答えに

+0

をこれは間違いなく動作しますが、唯一の問題は、それがあるタブを並べ替えることである非理想的。これまでのところ、これは唯一の解決策であるようです...スニペットに感謝します。 – brianz

0

A私のために働いているソリューションは:

tabifyDockWidgら(dock1、DOCK2)

dock2.setVisible(TRUE)

dock2.setFocus()

dock2.raise_()3つの機能が必要に見えること

。私にとって

3

dock2.show();

dock2.raise();

で十分でした。しかし、はい、どちらも必要です!

0

これは私のために動作しませんでした。私はそれを使用して作業を取得するために管理

dock2.raise_() 

dock2.show() 
parent.tabifyDockWidget(dock1, dock2) 
関連する問題