16

を使用して起動時にタブ化される 3 つの QDockWidgets がありますQMainWindow.tabifyDockWidget

メイン ウィンドウで、すべてのaddDockWidget呼び出しの後:

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

特定のアクションに基づいて、これらのタブの 1 つを選択してフォーカスするか、まだ表示されていない場合は他の 2 つの上に移動します。と を使用してみましsetVisiblesetWindowState(Qt.WindowActive)が、何も変わりません。

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

4

6 に答える 6

24

qt-interestメーリングリストの回答のおかげで、これは非常に簡単に行うことができますQWidget.raise()

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

PyQtでは、それはQWidget.raise_()

http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#raise

于 2009-08-19T18:16:30.353 に答える
9

私のため:

Dock2.show();

Dock2.raise();

で十分でした。しかし、はい、両方が必要です!

于 2013-03-04T13:53:12.743 に答える
2

私はこれをテストしていませんが、Qt 4.5以降で試すことは次のとおりです(PyQtの変換はあなたに任せます):

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()

于 2009-08-18T00:06:46.610 に答える
0

これは私にはうまくいきませんでした:

dock2.raise_() 

私はそれをうまく動かすことができました:

dock2.show()
parent.tabifyDockWidget(dock1, dock2)
于 2014-02-25T23:54:57.603 に答える
0

私のために働いている解決策は次のとおりです。

tabifyDockWidget(dock1, dock2)
dock2.setVisible(True)
dock2.setFocus()
dock2.raise_()

その3つの機能が必要なようです。

于 2010-12-08T11:30:34.030 に答える