对话框分为模态和非模态;
1、模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。
this->setModal(true);
2、非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。
this->setModal(false);
常见对话框
QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框"));
QString fileName = QFileDialog::getOpenFileName(this,tr("文件对话框"),".",tr("C++文件(*.cpp *.h)"));
//字体对话框
bool ok;
QFont font = QFontDialog::getFont(&ok,this);
if(ok)
ui->pushButton_3->setFont(font);
else
qDebug()<<tr("没有选择字体");
//输入对话框
bool ok;
//获取字符串
QString string = QInputDialog::getText(this,tr("输入字符串对话框"),
tr("请输入用户名:"),QLineEdit::Normal,
tr("admin"),&ok);
if(ok)qDebug()<<"string: "<<string;
//获取整数
int value = QInputDialog::getInt(this,tr("输入整数对话框"),tr("请输入-100到100之间的数值:"),00,-100,100,1,&ok);
if(ok)qDebug()<<"value: "<<value;
QStringList items;
items<<tr("条目1")<<tr("条目2");
//获取条目
QString item = QInputDialog::getItem(this,tr("输入条目对话框"),
tr("请选择或输入一个条目"),items,0,true,&ok);
if(ok)qDebug()<<"item: "<<item;
//消息对话框
//问题对话框
int ret1 = QMessageBox::question(this,tr("问题对话框"),tr("你爱我么?"),QMessageBox::Yes,QMessageBox::No);
if(ret1 == QMessageBox::Yes)
qDebug()<<tr("你爱我");
//提示对话框
int ret2 = QMessageBox::information(this,tr("提示对话框"),tr("提示一下"),QMessageBox::Ok);
if(ret2 == QMessageBox::Ok)
qDebug()<<tr("提示对话框");
//警告对话框
int ret3 = QMessageBox::warning(this,tr("警告对话框"),tr("警告一下"),QMessageBox::Abort);
if(ret3 == QMessageBox::Abort)
qDebug()<<tr("警告对话框");
//错误对话框
int ret4 = QMessageBox::critical(this,tr("错误对话框"),tr("严重错误"),QMessageBox::YesAll);
if(ret4 == QMessageBox::YesAll)
qDebug()<<tr("错误对话框");
//关于对话框
QMessageBox::about(this,tr("关于对话框"),tr("关于"));
//进度条对话框
QProgressDialog dialog(tr("文件复制进度"),tr("取消"),0,50000,this);
dialog.setWindowTitle(tr("进度对话框"));
dialog.setWindowModality(Qt::WindowModal);//将对话框设置为模态
dialog.show();
for(int i = 0;i<50000;i++)
{
dialog.setValue(i);
QCoreApplication::processEvents();//避免界面冻结
if(dialog.wasCanceled())
break;
}
dialog.setValue(50000);
qDebug()<<tr("复制结束");
//错误信息对话框
QErrorMessage *errordlg->setWindowTitle(tr("错误信息对话框"));
errordlg->showMessage(tr("这里出错!!!"));
//向导信息对话框
{
QWizard wizerd(this);
wizerd.setWindowTitle(tr("向导对话框"));
wizerd.addPage(CeatePage1());
wizerd.addPage(CeatePage2());
wizerd.addPage(CeatePage3());
wizerd.exec();
}
QWizardPage *MyWidget::CeatePage1()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("介绍"));
return page;
}
QWizardPage *MyWidget::CeatePage2()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("用户选择信息"));
return page;
}
QWizardPage *MyWidget::CeatePage3()
{
QWizardPage *page = new QWizardPage;
page->setTitle(tr("结束"));
return page;
}
///