Я отлаживаю определенное приложение, написанное на 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()
приложение работает как положено. Это кажется неправильным, поскольку документация для activWindow
не указывает никаких условий, при которых что-то подобное может произойти.
Мой вопрос:
Есть ли какая-то причина, чтобы активировать окно в showEvent в первую очередь? Если есть какая-то причина, какой будет хороший обходной путь для решения проблем?