QDialog не отображается правильно при повторном открытии - PullRequest
1 голос
/ 27 мая 2020

У меня проблема с 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 (например, выбор чего-либо из раскрывающегося меню не будет работать плавно) будет несколько отставать. Кажется, что окно не перерисовывается должным образом.

У меня нет этой проблемы, когда я закрываю окно с помощью кнопки закрытия - там я могу снова его открыть.

I также пробовал набрать repaint() или update() в этом диалоге, это не помогло.

А идеи?

...