1.模态&非模态对话框
通过点击菜单栏“新建”按钮打开对话框
使用connect连接按钮点击信号和主窗口弹出对话框的动作
connect(ui->actionnew,&QAction::
::triggered,[=](){
QDialog dlg(this);
dlg.exec();
qDebug()<<"模态对话框已打开"; //模态对话框弹出时无法进行其它操作
});
上述代码后[=](){}采用了LAMBAD表达式的方法
括号内的对话框可以换成其它形式的对话框
非模态对话框
QDialog *dlg=new QDialog(this);
this->show();
dlg->setAttribute(Qt::WA_DeleteOnClose);//55号属性
qDebug()<<"非模态对话框已弹出";//非模态对话框弹出式可以在其他窗口进行操作
为了防止对话框一闪而过,将变量放在堆区,通过指针实现,为了防止内存占用,用到了setAttribute函数设置在关闭对话框时释放内存,否则重复打开关闭的对话框内存没有被释放,只有在关闭主窗口时才释放。
消息对话框
错误对话框
QMessageBox::critical(this,"critical","错误");
信息对话框
QMessageBox::information(this,"information","信息");
警告对话框
QMessageBox::warning(this,":warning","警告");
提问对话框
QMessageBox::question(this,":warning","是否保存");
消息对话框直接调用QMessageBox静态成员函数实现,参数列表中,参数1是主对话框,参数2为对话框标题,参数3为提示语,参数4为按键类型,参数5为默认关联回车按键。
例如提问对话框
if(QMessageBox::Save==QMessageBox::question(this,":warning","是否保存",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){
qDebug()<<"文件已保存";
}
else{
qDebug()<<"取消保存";
}
question的返回类型为standardButton,也就是你选择的按键,当你直接回车时,默认关联的取消,通过返回值确认选择的按键,并作出相应的动作
文件对话框
QFileDialog::getOpenFileName(this,"打开文件",文件路径);
函数的返回值是文件全路径名