Qt提供了一些可以复用的对话框类型,这些对话框类型全部继承与QDialo类。
Qt中标准对话框遵循相同的使用方法:
//定义对话框对象
DialogType dlg(this);
//设置对话框属性
dlg.setPrpertyXXX(value);
if(dlg.exec() == DialogType::value)
{
//获取对话框数据
Type V = dlg.getDialogValue();
//处理对话框数据
//....
}
Qt消息对话框:QMessageBox
QMessageBox 中的实用函数。
void about ( QWidget * parent, const QString & title, const QString & text )
void aboutQt ( QWidget * parent, const QString & title = QString() )
StandardButton critical ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )
StandardButton information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )
StandardButton question ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )
StandardButton warning ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )
测试代码:
QMessageBox Mes(this);
/*消息提示对话框*/
// if( Mes.information(this,"MessageBox","this is MessageBox!",QMessageBox::Ok,QMessageBox::Cancel,QMessageBox::YesAll)
// == QMessageBox::Ok)
// {
// qDebug()<<"QMessageBox::Ok";
// }
/*警告提示对话框*/
// if( Mes.warning(this,"MessageBox","this is MessageBox!",QMessageBox::Ok,QMessageBox::Cancel,QMessageBox::YesAll)
// == QMessageBox::Ok)
// {
// qDebug()<<"QMessageBox::Ok";
// }
/*问题提示对话框*/
// if( Mes.question(this,"MessageBox","this is MessageBox!",QMessageBox::Ok,QMessageBox::Cancel,QMessageBox::YesAll)
// == QMessageBox::Ok)
// {
// qDebug()<<"QMessageBox::Ok";
// }
/*关键提示对话框*/
// if( Mes.critical(this,"MessageBox","this is MessageBox!",QMessageBox::Ok,QMessageBox::Cancel,QMessageBox::YesAll)
// == QMessageBox::Ok)
// {
// qDebug()<<"QMessageBox::Ok";
// }
Mes.about(this,"MessageBox","this is MessageBox!");
// Mes.setWindowTitle("MessageBox");//设置标题
// Mes.setText("this is MessageBox~");//设置提示内容
// Mes.setIcon(QMessageBox::Warning);
// Mes.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel|QMessageBox::YesAll);
// if(Mes.exec() == QMessageBox::Ok)
// {
// qDebug()<<"QMessageBox::Ok";
// }
qDebug()<<"Messege_BtnClicked";
Qt文件对话框:QFileDialog
Open Mode
——应用程序需要用户打开一个外部文件
QFileDialog fl;
fl.setAcceptMode(QFileDialog::AcceptOpen);//设置为Open模式
QStringList setFs ;
setFs <<"Text(*.txt)"<<"All(*.*)";
fl.setFilters(setFs);
/*QFileDialog::ExistingFile 打开单个
QFileDialog::ExistingFiles 打开多个文件
*/
fl.setFileMode(QFileDialog::ExistingFile);
if(fl.exec() == QFileDialog::Accepted)
{
QStringList fs = fl.selectedFiles();//获取文件路径 文件名
for(int i=0;i<fs.count();i++)
{
qDebug()<<fs[i];
}
}
qDebug()<<"FileDialog_BtnClicked";
Save Mode
——应用程序需要将当前内容存储到用户指定的目录中去
测试代码:
QFileDialog fl;
fl.setAcceptMode(QFileDialog::AcceptSave);
fl.setFilter("Text(*.txt)");//设置保存属性
if(fl.exec() == QFileDialog::Accepted)
{
qDebug()<<"QFileDialog::Accepted";
QStringList fs = fl.selectedFiles();//获取文件路径 文件名
for(int i=0;i<fs.count();i++)
{
qDebug()<<fs[i];
}
}
QString getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly )
QString getOpenFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
QStringList getOpenFileNames ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
QString getSaveFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
颜色对话框:QColorDialog
——用于提供颜色的对话框部件
实验代码:
QColorDialog* color = new QColorDialog(this);
if(color->exec() == QColorDialog::Accepted)
{
QColor nowColor = color->currentColor();//获取颜色信息
qDebug() << nowColor;//ARGB模式显示
/*获取RGB参数*/
qDebug()<<nowColor.red();
qDebug()<<nowColor.green();
qDebug()<<nowColor.blue();
}
qDebug()<<"ColorDialog_BtnClicked";
QColor类
——RGB:以红、绿、蓝为基准的三色模型
——HSV:以色调、饱和度、透明度、为基准的六角锥体模型
——CMYK:以天蓝、品红、黄色、黑为基准的全彩色印刷色彩模型
输入对话框:QInputDialog
——用于需要零时进行数据输入的场合
QInputDialog input;
input.setLabelText("input double");//添加提示信息
/*
QInputDialog::TextInput
QInputDialog::IntInput
QInputDialog::DoubleInput
*/
input.setInputMode(QInputDialog::DoubleInput);//设置输入属性
input.setDoubleMaximum(1000);//设置输入数字最大值
input.setDoubleMinimum(-1000);
if(input.exec() == QInputDialog::Accepted)
{
qDebug()<<input.doubleValue();//获取输入值
}
qDebug()<<"InputDialog_BtnClicked";
字体对话框:QFontDialog
——用于提供选择字体的对话框部件
QFontDialog font;
if(font.exec() == QFontDialog::Accepted)
{
qDebug()<<font.currentFont();
}
qDebug()<<"FontDialog_BtnClicked";
进度对话框:QProgressDialog
——用于显示进度信息。需要用户等待的场合
QProgressDialog progress;
progress.setMaximum(100);//设置最大值
progress.setValue(50);//设置进度值
if(progress.exec() == QProgressDialog::Rejected)//关闭按钮处理
{
qDebug()<<"ProgressDialogEnd";
}
qDebug()<<"ProgressDialog_BtnClicked";
打印对话框:QPrintDialog
——用于设置打印相关的参数信息
QPrintDialog print ;
if(print.exec() == QPrintDialog::Accepted)
{
QPrinter* p = print.printer();
QTextDocument td; //使用QTextDocument
td.setPlainText("hello,good");//设置字符信息
p->setOutputFileName("I:\\test.pdf");//设置输出名称
td.print(p);//打印文件
}
qDebug()<<"PrintDialog_BtnClicked";