Qt::WA_QuitOnClose用法
Qt官方助手對該標志的解釋如下:
Makes Qt quit the application when the last widget with the attribute set has accepted closeEvent(). This behavior can be modified with the QApplication::quitOnLastWindowClosed property. By default this attribute is set for all widgets of type Qt::Window.
大意是:
? 當最后一個設置了本屬性的窗體部件關閉時(即接受了closeEvent()事件)退出應用程序。這個屬性可以被QApplication::quitOnLastWindowClosed函數修改。對所有類型為Qt::Window.的窗體,這個屬性默認被設置為true。
如下:
#include "QtWidgetsApplication1.h" #include "QtTestWidget.h" QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent): QWidget(parent) {ui.setupUi(this);setWindowTitle("WidgetsApplication1");// setAttribute(Qt::WA_QuitOnClose, false);m_pTestWidget = new QtTestWidget();m_pTestWidget->show(); }QtWidgetsApplication1::~QtWidgetsApplication1() {}其中?m_pTestWidget是QtWidgetsApplication1的成員變量,類型為:QtTestWidget。QtTestWidget.cpp如下:
#include "QtTestWidget.h"QtTestWidget::QtTestWidget(QWidget *parent): QWidget(parent) {ui.setupUi(this);setWindowTitle("TestWidget"); // setAttribute(Qt::WA_QuitOnClose, false); }QtTestWidget::~QtTestWidget() { }彈出標題為:WidgetsApplication1、TestWidget兩個窗體。按Qt助手的解釋:這兩個窗體的Qt::WA_QuitOnClose默認都為true,所以先關閉其中任何一個窗體,程序不會退出,只有當最后一個窗體關閉時,應用程序才退出。
? 當將QtWidgetsApplication1.cpp構造函數中的setAttribute(Qt::WA_QuitOnClose, false);注釋去掉,則:
a):先關閉WidgetsApplication1窗體,程序不退出;再關閉TestWidget窗體,程序才退出。因為此時WidgetsApplication1窗體的Qt::WA_QuitOnClose為false,即剔除了該屬性;TestWidget窗體的Qt::WA_QuitOnClose依然為true,即TestWidget窗體是包含Qt::WA_QuitOnClose屬性的最后一個窗體,當最后一個包含Qt::WA_QuitOnClose屬性的窗體退出時,程序退出。
b):先關閉TestWidget窗體,程序退出。道理同a)條目所述。
? 當將QtWidgetsApplication1.cpp、QtTestWidget.cpp構造函數中的setAttribute(Qt::WA_QuitOnClose, false);注釋都去掉,無論先關閉哪個窗體或兩個窗體都關閉,應用程序都不會退出。
總結
以上是生活随笔為你收集整理的Qt::WA_QuitOnClose用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SVN trunk(主线) branch
- 下一篇: Qt Designer中部件的table