所以我有一個(gè)腳本在另一個(gè)程序(The Foundry's Hiero)中運(yùn)行,我只是在制作一個(gè)新的 QWidget 對象,然后調(diào)用self.show()現(xiàn)在,我可以將其設(shè)置為self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint),因此即使您單擊主窗口中的某些內(nèi)容,我的窗口也會(huì)停留在主窗口的頂部。問題是,這是一種您在其中配置設(shè)置的彈出窗口,它會(huì)觸發(fā)其他 QWidget 彈出窗口。如果我將窗口設(shè)置為WindowStaysOnTopHint,我的小部件觸發(fā)的那些子對話框最終會(huì)出現(xiàn)在我的小部件下方。PySide/PyQt 中有沒有辦法讓窗口保持在頂部/特別是從主應(yīng)用程序窗口保持焦點(diǎn),但不是全部?
1 回答

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng) Hiero 的主窗口被選中時(shí),您可以使用該QApplication.focusChanged
信號(hào)來提升您的小部件。然后你只需要?jiǎng)h除WindowStaysOnTopHint
標(biāo)志。
我不熟悉 Hiero 的 API,但我猜你可以嘗試類似:
def raiseMyWidget(old, new): if new == hiero.ui.mainWindow(): myWidget.raise_() QtWidgets.QApplication.instance().focusChanged.connect(raiseMyWidget)
希望這可以幫助!您可以利用 old 參數(shù)或其他一些方法來確保您的小部件也不會(huì)高于其他小部件。
- 1 回答
- 0 關(guān)注
- 375 瀏覽
添加回答
舉報(bào)
0/150
提交
取消