分类
- 自定义对话框
- 模态对话框:打开后不可以对其他窗口进行操作,否则有错误提示音
- 非模态对话框:打开后可以对其他窗口进行操作
- 标准对话框
- 消息对话框
自定义对话框的创建
二者均需要包含头文件QDialog
模态对话框
QDialog dlg(this);
dlg.resize(200, 100); //设置窗口大小,窗口过小调试时会弹出警告
dlg.exec(); // 调出对话框
qDebug() << "模态信号弹出了"; // 由于模态对话框的阻塞作用,关闭对话框后才会打印这句话
qDebug()
使用时要包含头文件QDebug
,且需要注意大小写和圆括号,不然会报错
非模态对话框
QDialog * dlg2 = new QDialog(this); // 创建在堆区,防止connet函数结束后窗口一闪而过
dlg2 -> resize(200, 100);
dlg2 -> setAttribute(Qt::WA_DeleteOnClose); // 55号属性,关闭时delete,防止内存泄漏,忘记的话可以去手册查看
dlg2 -> show();
qDebug() << "非模态对话框弹出了"; // 点击后即可弹出
标准对话框的创建
消息对话框
使用静态成员函数QMessageBox
创建对话框
常见消息对话框
- 错误
QMessageBox::critical()
- 信息
QMessageBox::information()
- 提问
QMessageBox::question()
- 警告
QMessageBox::warning()
对函数各参数的解释
以提问对话框 QMessageBox::question()
为例
//QMessageBox::question(父亲, 标题, 内容, 按键类型1 | 按键类型2, 默认关联回车按键)
QMessageBox::question(this, "que", "提问", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Save);
函数的返回值是StandardButton
类型的,可以使用if
语句判断进行对应操作
if(QMessageBox::question(this, "que", "提问", QMessageBox::Save | QMessageBox::Cancel, QMessageBox::Save) == QMessageBox::Save)
{
qDebug() << "选择的是保存";
}
else
{
qDebug() << "选择的是取消";
}