调用show()后QWidget不显示

2 投票
1 回答
3039 浏览
提问于 2025-04-17 06:54

在我的应用程序中,我有一个QWidget,调用了show()之后却不显示,尽管isVisible返回的是true

这个小部件是从主应用窗口的一个事件中创建的。但是当它单独启动时,也就是作为应用程序中唯一的小部件时,它能正常显示。

有没有人知道这是什么原因导致的?

我应用中的其他小部件都能正常显示,只有这个小部件让我头疼。实际上,它在之前的Qt4版本中运行得很好(我不记得是哪个版本)。

这个小部件的代码可以在这里找到。

更新:窗口似乎出现了,但马上又被销毁了。

1 个回答

4

相关的代码在 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 的实例,但没有保存对它的引用。所以这个窗口会短暂显示一下,然后在函数执行完毕后就会被自动清理掉。

撰写回答