Нет, это не так на его лице, чтобы сказать, что когда-то началось близко событие в MainWindow, ничто больше не будет выполняться в GUI потоке, кроме близких обработчиков событий и класса деструкторов.
Предположим, что мы следующий код (в C++ 11):
#include <QApplication>
#include <QLabel>
#include <QMessageBox>
#include <QTimer>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel label1("Hello, World!");
label1.show();
label1.setMinimumSize(200, 100);
app.exec();
QTimer timer;
int counter = 0;
QObject::connect(&timer, &QTimer::timeout, [&counter]{ counter ++; });
timer.start(100);
QMessageBox::information(nullptr, "Done",
QString("We're Done with \"%1\"").arg(label1.text()));
QMessageBox::information(nullptr, "Really Done",
QString("Timer has ticked %1 times").arg(counter));
return 0;
}
Очевидно, не деструктор код будет выполняться после того, как exec()
вернулся - здесь мы показываем окно сообщения. Главное окно, в данном случае QLabel
, все еще существует после того, как exec()
вернулся.
Также неверно предполагать, что таймеры будут убиты во всем мире после того, как exec()
вернется. Они все еще работают, и до тех пор, пока вы заново запустите цикл событий, они с радостью поедут за вами. Во-вторых, во втором окне сообщения будет отображаться ненулевой счет.
Ваш вопрос должен быть переформулирован с проблемой, которую вы пытаетесь решить. Вы просите очень конкретные детали, которые не имеют никакого значения сами по себе. Пожалуйста, расскажите, почему вы задаете такой вопрос.
Это зависит от того, чего вы хотите достичь? Если вам нужно управлять настраиваемыми таймерами, вы можете установить флаг 'QApplicatoin :: setQuitOnLastWindowClosed (false);' и управлять циклом событий самостоятельно. –
Я просто опасаюсь, что во время деконструкции определенный объект может быть удален вручную (путем вызова 'delete objectP'), если это так, когда' slot' запускается таймером и используется 'objectP', программа будет разбиваться Выход. – Nyaruko
Установите родителя вашего таймера на свой объект - и все будет в порядке;) –