所以我在另一个程序(The Foundry的Hiero(中运行了一个脚本,我只是在制作一个新的QWidget对象,并调用self.show()
现在,我可以将其设置为self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
,这样即使您单击主窗口中的某个内容,我的窗口也会保持在主窗口的顶部。
问题是,这是一种您在其中配置设置的弹出窗口,它会触发其他QWidget弹出窗口。如果我将我的窗口设置为WindowStaysOnTopHint
,那么我的小部件触发的那些子对话框最终会在小部件下方。
PySide/PyQt中有没有一种方法可以让窗口保持在顶部/特别是保持主应用程序窗口的焦点,但不能让所有东西都?
当Hiero的主窗口被选中时,您可以使用QApplication.focusChanged
信号来提升小部件。然后您只需要删除WindowStaysOnTopHint
标志。
我不熟悉Hiero的API,但我猜你可以尝试一下:
def raiseMyWidget(old, new):
if new == hiero.ui.mainWindow():
myWidget.raise_()
QtWidgets.QApplication.instance().focusChanged.connect(raiseMyWidget)
希望这能有所帮助!您可以利用旧参数或其他方式来确保您的小部件不会高于其他小部件。