我有一个QDialog窗口应始终位于我的应用程序之上。这不是模态的。用户可以随时与对话框和主应用程序进行交互。使用 WindowStaysOnTopHint 可以在某种程度上完成此操作。但是,对话框仍然位于所有其他正在运行的应用程序之上(例如记事本,chrome等)。当在应用程序之间不断切换时,这可能很烦人。
我希望QDialog能够在我的应用程序之上,而不是其他人。任何建议都将不胜感激。
答案 0 :(得分:2)
QDockWidget正是为此而设计的。可以将其配置为浮动在窗口顶部。
答案 1 :(得分:1)
确保QDialog的父级是您的应用程序窗口。如果它有一个NULL父项,那么它就不知道如何将两者堆叠在一起。
答案 2 :(得分:0)
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()