![](/img/trans.png)
[英]Bring window to front -> raise(),show(),activateWindow() don’t work
[英]Calling activateWindow on QDialog sends window to background
我正在調試使用C ++ / Qt4編寫的某些應用程序。 在Linux上,存在某些窗口管理器(gnome-wm / metacity)在后台創建主窗口(基於QDialog)的問題(未引發)。 我設法使用PyQt4和以下代碼重新創建了方案:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class PinDialog(QDialog):
def showEvent(self, event):
QDialog.showEvent(self, event)
self.raise_()
self.activateWindow()
if __name__ == "__main__":
app = QApplication(sys.argv)
widget = PinDialog()
app.setActiveWindow(widget)
widget.exec_()
sys.exit(0)
如果我刪除
self.activateWindow()
該應用程序按預期工作。 這似乎是錯誤的,因為activateWindow的文檔沒有指定任何可能發生這種情況的條件。
我的問題是:首先有什么理由要在showEvent中使用ActivateWindow嗎? 如果有某種原因,那么解決問題的最佳解決方案是什么?
我也看到了這種行為。
根據文檔 :
在X11上,結果取決於Window Manager
似乎Gnome采取與Microsoft Windows相同的立場,不允許應用程序中斷用戶在另一個應用程序(在本例中為Terminal)中當前正在做的事情。
該問題很可能是由於Qt中的錯誤引起的。 我無法在最近的Qt版本中重現相同的行為。 最初在Fedora 13上復制,Fedora 14正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.