У меня есть QMainWindow, который используется для просмотра и просмотра изображений. Эти изображения представляют собой специальные медицинские изображения, которые читаются с помощью обертки, которую я написал.QApplication не выходит, когда основное окно закрывается
GUI имеет QListview слева, в котором отображается список миниатюр. Когда пользователь выбирает один из них, QVTKWidget отображает соответствующее изображение справа. Я использую vtkRenderWindowInteractor для управления отображаемым изображением.
Мой главный выглядит следующим образом:
#include <QApplication>
#include "GUIClassName.h" //inherits from QMainWindow
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GUIClassName w;
w.show();
return a.exec();
}
Мой CloseEvent выглядит следующим образом:
void GUIClassName::closeEvent(QCloseEvent* event)
{
// mainInteractor is a vtkSmartPointer<vtkRenderWindowInteractor>
if (this->_mainInteractor != NULL)
this->_mainInteractor->TerminateApp();
event->accept();
}
Вопрос заключается в том, что, когда я закрываю QMainWindow, приложение не завершается. Это командная строка остается открытой и Нажмите любую клавишу, чтобы продолжить. не отображается. Если я Ctrl + перерыв, то выход из приложения (очевидно), но я получаю следующее сообщение:
QObject :: ~ QObject: Таймеры не могут быть остановлены из другого потока
Я заметил, что если Я выбираю только один миниатюру и отображаю ее в QVTKWidget, программа заканчивается просто отлично. Но когда я выбираю один миниатюру, покажу ее, а затем выберите другую миниатюру, тогда программа не завершится, когда я закрою окно.
Мне было интересно, может ли кто-нибудь сказать мне, что я делаю неправильно здесь. Я бы с удовольствием скопировал/вставлял больше кода, но я не уверен, какие части актуальны в данный момент.
Я прочитал следующее в надежде на ответ, но я до сих пор не удалось решить эту проблему:
Qt app stays in memory even after MainWindow is closed
Qt process stays in memory after application closes
C++ application does not kill all processes on exit
Благодарности
Я не думаю, что я явно запускаю любые потоки, но я могу неявно создавать/запускать один.Я отредактирую свой вопрос, чтобы предоставить дополнительную информацию. – siavashk