704 timer.setInterval(100); |
704 timer.setInterval(100); |
705 |
705 |
706 QSignalSpy spy(&app, SIGNAL(aboutToQuit())); |
706 QSignalSpy spy(&app, SIGNAL(aboutToQuit())); |
707 QSignalSpy spy2(&timer, SIGNAL(timeout())); |
707 QSignalSpy spy2(&timer, SIGNAL(timeout())); |
708 |
708 |
709 QPointer<QMainWindow> mainWindow = new QMainWindow; |
|
710 QPointer<QWidget> invisibleTopLevelWidget = new QWidget; |
|
711 invisibleTopLevelWidget->setAttribute(Qt::WA_DontShowOnScreen); |
|
712 |
|
713 QVERIFY(app.quitOnLastWindowClosed()); |
|
714 QVERIFY(mainWindow->testAttribute(Qt::WA_QuitOnClose)); |
|
715 QVERIFY(invisibleTopLevelWidget->testAttribute(Qt::WA_QuitOnClose)); |
|
716 QVERIFY(invisibleTopLevelWidget->testAttribute(Qt::WA_DontShowOnScreen)); |
|
717 |
|
718 mainWindow->show(); |
|
719 invisibleTopLevelWidget->show(); |
|
720 |
|
721 timer.start(); |
|
722 QTimer::singleShot(1000, mainWindow, SLOT(close())); // This should quit the application |
|
723 QTimer::singleShot(2000, &app, SLOT(quit())); // This makes sure we quit even if it didn't |
|
724 |
|
725 app.exec(); |
|
726 |
|
727 QCOMPARE(spy.count(), 1); |
|
728 QVERIFY(spy2.count() < 15); // Should be around 10 if closing caused the quit |
|
729 } |
|
730 { |
|
731 int argc = 0; |
|
732 QApplication app(argc, 0, QApplication::GuiServer); |
|
733 QTimer timer; |
|
734 timer.setInterval(100); |
|
735 |
|
736 QSignalSpy spy(&app, SIGNAL(aboutToQuit())); |
|
737 QSignalSpy spy2(&timer, SIGNAL(timeout())); |
|
738 |
|
739 QPointer<CloseEventTestWindow> mainWindow = new CloseEventTestWindow; |
709 QPointer<CloseEventTestWindow> mainWindow = new CloseEventTestWindow; |
740 |
710 |
741 QVERIFY(app.quitOnLastWindowClosed()); |
711 QVERIFY(app.quitOnLastWindowClosed()); |
742 QVERIFY(mainWindow->testAttribute(Qt::WA_QuitOnClose)); |
712 QVERIFY(mainWindow->testAttribute(Qt::WA_QuitOnClose)); |
743 |
713 |