窗口如果继承<kbd>QDialog</kbd>,那窗口就只有关闭按钮;如果继承<kbd>QWidget</kbd>,那么就有关闭,最大化,最小化三个按钮,如何个性化定制这三个按钮呢,解决方案是void setWindowFlags ( Qt::WindowFlags type )

setWindowFlags ( Qt::WindowFlags type )
Qt::FrameWindowHint://没有边框的窗口
Qt::WindowStaysOnTopHint://总在最上面的窗口
Qt::CustomizeWindowHint://自定义窗口标题栏,以下标志必须与这个标志一起使用才有效,否则窗口将有默认的标题栏
Qt::WindowTitleHint://显示窗口标题栏
Qt::WindowSystemMenuHint://显示系统菜单
Qt::WindowMinimizeButtonHint://显示最小化按钮
Qt::WindowMaximizeButtonHint://显示最大化按钮
Qt::WindowMinMaxButtonsHint://显示最小化按钮和最大化按钮
Qt::WindowCloseButtonHint://显示关闭按钮 

1.取消最大化按钮

这个需求是我们设计软件过程中常常希望得到的,在构造函数中输入

this->setWindowFlags(Qt::WindowMinimizeButtonHint|Qt::WindowCloseButtonHint);

2.取消最小化按钮

this->setWindowFlags(Qt::WindowMaximizeButtonHint|Qt::WindowCloseButtonHint);

3.取消最大最小化按钮

this->setWindowFlags(Qt::WindowCloseButtonHint);

关闭窗口时显示提示框

在主窗口中重写CloseEvent事件

void Widget::closeEvent(QCloseEvent::event){
	int res = QMessageBox::question(this, "确定",“你要关闭吗”, "是", "否")if (res ==1){
		event -> ignore();
	}
}