簡體   English   中英

在QDialog上調用activateWindow將窗口發送到后台

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM