窗口如果继承<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();
}
}