所以我有一个脚本在另一个程序(The Foundry's Hiero)中运行,我只是在制作一个新的 QWidget 对象,然后调用self.show()现在,我可以将其设置为self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint),因此即使您单击主窗口中的某些内容,我的窗口也会停留在主窗口的顶部。问题是,这是一种您在其中配置设置的弹出窗口,它会触发其他 QWidget 弹出窗口。如果我将窗口设置为WindowStaysOnTopHint,我的小部件触发的那些子对话框最终会出现在我的小部件下方。PySide/PyQt 中有没有办法让窗口保持在顶部/特别是从主应用程序窗口保持焦点,但不是全部?
1 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
当 Hiero 的主窗口被选中时,您可以使用该QApplication.focusChanged信号来提升您的小部件。然后你只需要删除WindowStaysOnTopHint标志。
我不熟悉 Hiero 的 API,但我猜你可以尝试类似:
def raiseMyWidget(old, new): if new == hiero.ui.mainWindow(): myWidget.raise_() QtWidgets.QApplication.instance().focusChanged.connect(raiseMyWidget)
希望这可以帮助!您可以利用 old 参数或其他一些方法来确保您的小部件也不会高于其他小部件。
- 1 回答
- 0 关注
- 529 浏览
添加回答
举报
0/150
提交
取消
