У меня проблема с 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()
в этом диалоге, это не помогло.
А идеи?