专注于 PyQt 中的选项卡式 QDockWidget
我有三个 QDockWidget,它们在启动时使用 QMainWindow.tabifyDockWidget 进行选项卡化。
在主窗口中,在所有 addDockWidget
调用之后:
self.tabifyDockWidget(self.dock_widget1, self.dock_widget2)
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3)
基于某些操作,我想选择这些选项卡之一并将其置于焦点上,或者,在其他两个选项卡之上,如果它还不可见。 我尝试使用 setVisible 和 setWindowState(Qt.WindowActive) ,但没有任何变化。
有没有办法以编程方式选择选项卡式停靠小部件并将其置于前面?
I have three QDockWidgets which are tabbed at startup using QMainWindow.tabifyDockWidget
.
In the main window, after all of the addDockWidget
calls:
self.tabifyDockWidget(self.dock_widget1, self.dock_widget2)
self.tabifyDockWidget(self.dock_widget1, self.dock_widget3)
Based on certain actions, I'd like to select one of these tabs and bring it to focus, or, on top of the other two, if it's not already visible. I've tried using setVisible
and setWindowState(Qt.WindowActive)
, but nothing changes.
Is there a way to programmatically select a tabbed dock widget and bring it to the front?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
感谢 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
Thanks to an answer on the qt-interest mailing list, this is very simple to do with
QWidget.raise()
:http://qt-project.org/doc/qt-4.8/qwidget.html#raise
In PyQt, it's
QWidget.raise_()
:http://pyqt.sourceforge.net/Docs/PyQt4/qwidget.html#raise
对我来说:
dock2.show();
停靠2.raise();
就足够了。 但是,是的,两者都需要!
For me:
dock2.show();
dock2.raise();
was enough. But yes, both are needed!
我还没有对此进行测试,但这是我在 Qt 4.5+ 中尝试的方法(我将 PyQt 转换留给您):
请参阅
QMainWindow::tabifiedDockWidgets()
和QMainWindow::tabifyDockWidget()
。I haven't tested this, but here's what I would try in Qt 4.5+ (I'll leave the PyQt conversion to you):
See
QMainWindow::tabifiedDockWidgets()
andQMainWindow::tabifyDockWidget()
.这对我不起作用:
我设法使用以下方法让它工作:
This didn't work for me:
I managed to get it working using:
如果您正在寻找一种解决方案来将焦点设置到小部件而不是将其保留在后台的选项卡式 QDockWidget 上,您可以使用 可见性更改信号 和 焦点代理像这样:
一个小例子:
If you are looking for a solution to set the focus to the widget and not leave it on a tabified QDockWidget in the background you can use the visibility-changed signal and a focus proxy like this:
a little working example:
对我有用的解决方案是:
这 3 个功能似乎是必要的。
A solution that is working for me is :
That 3 functions seem necessary.