仅将非模态QDialog窗口放在我的应用程序之上而不是所有应用程序

时间:2014-09-26 16:42:54

标签: qt qdialog

我有一个QDialog窗口应始终位于我的应用程序之上。这不是模态的。用户可以随时与对话框和主应用程序进行交互。使用 WindowStaysOnTopHint 可以在某种程度上完成此操作。但是,对话框仍然位于所有其他正在运行的应用程序之上(例如记事本,chrome等)。当在应用程序之间不断切换时,这可能很烦人。

我希望QDialog能够在我的应用程序之上,而不是其他人。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:2)

QDockWidget正是为此而设计的。可以将其配置为浮动在窗口顶部。

答案 1 :(得分:1)

确保QDialog的父级是您的应用程序窗口。如果它有一个NULL父项,那么它就不知道如何将两者堆叠在一起。

答案 2 :(得分:0)

使用PyQt5的

QDockWidget示例:

w = MyDialog("test", parent) # Dialog that you want to be non modal.                         
d = QtWidgets.QDockWidget(parent) # parent needs to be a QMainWindow.
# make it floatable and give it a close button
d.setFeatures(QtWidgets.QDockWidget.DockWidgetFloatable | QtWidgets.QDockWidget.DockWidgetClosable)
# disable all dock areas so that can't dock
d.setAllowedAreas(Qt.NoDockWidgetArea)
d.setFloating(True)
d.setWidget(w)
d.show()