为了账号安全,请及时绑定邮箱和手机立即绑定

如何制作一个保持在主窗口顶部但不覆盖其他小部件的小部件?

如何制作一个保持在主窗口顶部但不覆盖其他小部件的小部件?

Go
慕慕森 2022-10-11 10:11:39
所以我有一个脚本在另一个程序(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 参数或其他一些方法来确保您的小部件也不会高于其他小部件。


查看完整回答
反对 回复 2022-10-11
  • 1 回答
  • 0 关注
  • 530 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号