QWidget не отображается после вызова show () - PullRequest
2 голосов
/ 23 ноября 2011

В моем приложении у меня есть QWidget, который не отображается после вызова show(), хотя isVisible возвращает true.

Этот виджет создан из события главного окна приложения. Но когда он запускается сам по себе, то есть как единственный виджет в приложении, он отображается нормально.

Кто-нибудь знает, что может вызвать такое поведение?

Другие виджеты в моем приложении отображаются нормально, только этот доставляет мне проблемы. На самом деле он прекрасно работает под предыдущей версией Qt4 (не помню, какая).

код для виджета здесь

обновление: кажется, что окна появляются и немедленно уничтожаются.

1 Ответ

4 голосов
/ 23 ноября 2011

Соответствующий код в hidx/GUI/main.py:

@pyqtSignature("")
def on_actionScatterplot_Matrix_activated(self):
    ...
    spm = scatmat.ScatMat(pars, self.currentdbname)
    print "==>", spm.pw.isVisible()
    spm.pw.hide()
    spm.pw.showMaximized()
    print spm.pw.size()
    print "==>", spm.pw.isVisible()

@pyqtSignature("int")
def on_rowStart_valueChanged(self, p0):
    ...

В on_actionScatterplot_Matrix_activated вы создаете экземпляр ScatMat, но не сохраняете ссылку на него. Таким образом, окно будет кратко показано, а затем сразу же после завершения функции будет собрано мусор.

...