首页 > 解决方案 > 再次打开时 QDialog 未正确显示

问题描述

我对 Qt5 有这个问题。在我的 GUI 中,如果我按下一个按钮打开另一个窗口,我有以下代码:

void Viewer::openWindow() {
  if (!m_window){
    m_window = new myWindow(this);
  }
  m_window->raise();
  m_window->show();
  return;
}

从哪里myWindow继承QDialog。这是在现有的代码库中,我知道可能有很多陷阱。例如,如果我设置 deleteOnClose 我将有悬空指针等等......虽然所有这些都不会发生并且原则上它是有效的。我还有一个“关闭”按钮,它会调用reject()它工作正常。

我遇到的问题是当我在该对话框上按“X”时 - 窗口会消失得很好。一旦我尝试重新打开它(即Viewer::openWindow()再次调用),它将无法正确显示其内容。我可以调整窗口大小,它看起来会很好。但是,GUI 中的任何更改(例如从下拉菜单中选择某些内容都不会顺利进行)会有些滞后。窗口似乎没有正确重绘。

不过,当我使用关闭按钮关闭窗口时,我没有这个问题 - 我可以重新打开它就好了。

我也试过打电话repaint()update()在那个对话框上,这没有帮助。

和想法?

标签: qtqt5

解决方案


推荐阅读