- 引用对文件: #include <QFileDialog>
- 实例化对象:
QFileDialog filedlg(nullptr,//父窗口
"open image file",//标题
"C:\\",//默认目录
"ImageFile(*.jpg *.png)");//文件类型筛选
//显示
if(filedlg.exec()==QDialog::Accepted){
}
显示效果
文件对话框示例源码:
QFileDialog fileDlg(this,
"FileDialog",
"c://",
"All File(*.*);;"
"Video File(*.mp4 *.avi *.mkv *.flv);;"
"Doc File(*.pdf *.doc *.docx *.xls *.xlsx)");
fileDlg.setWindowTitle(QString::fromLocal8Bit("请选择文件"));
fileDlg.exec();
QStringList selectFiles = fileDlg.selectedFiles();
QMessageBox::information(this,
QString::fromLocal8Bit( "选择提示"),
QString::fromLocal8Bit("文件名:"+selectFiles[0].toLocal8Bit()));
QFileInfo fileinfo(selectFiles[0]);
QString strInfo = QString::fromLocal8Bit("文件名: %1 文件绝对路径: %2 文件扩展名: %3 文件大小: %4").arg(fileinfo.fileName())
.arg(fileinfo.absolutePath())
.arg(fileinfo.suffix())
.arg(fileinfo.size());
QMessageBox::warning(this,
QString::fromLocal8Bit("文件属性"),
strInfo);
打开单个文件与多信文件示例:
QString selectFileName = QFileDialog::getOpenFileName(this,
QString::fromLocal8Bit( "打开单个文件"),
"C://",
"All File(*.*);;"
"Video File(*.mp4 *.avi *.mkv *.flv);;"
"Doc File(*.pdf *.doc *.docx *.xls *.xlsx)");
QMessageBox::information(this,
QString::fromLocal8Bit( "文件名"),
selectFileName);
QStringList selectFileNames = QFileDialog::getOpenFileNames(this,
QString::fromLocal8Bit( "打开多个文件"),
"C://",
"All File(*.*);;"
"Video File(*.mp4 *.avi *.mkv *.flv);;"
"Doc File(*.pdf *.doc *.docx *.xls *.xlsx)");
for (QString v : selectFileNames ) {
QMessageBox::question(this,
QString::fromLocal8Bit( "文件名"),
v);
}
保存文件示例:
QString saveFileName = QFileDialog::getSaveFileName(this,
QString::fromLocal8Bit( "保存单个文件"),
"C://",
"All File(*.*);;"
"Video File(*.mp4 *.avi *.mkv *.flv);;"
"Doc File(*.pdf *.doc *.docx *.xls *.xlsx)");
QMessageBox::information(this,
QString::fromLocal8Bit( "文件名"),
saveFileName);
自定义对话框:
QFileDialog dlg(this,NULL,"C://","All File(*.*)");
//启用多文件选择模式
dlg.setFileMode(QFileDialog::ExistingFiles);
int r = dlg.exec();
if(QDialog::Accepted==r){
QMessageBox::information(this,"info",QString::fromLocal8Bit("选择打开按钮"));
//遍历输出文件名
for(QString v:dlg.selectedFiles()){
QMessageBox::information(this,"tip",v);
}
}
if(QDialog::Rejected==r){
QMessageBox::information(this,"info",QString::fromLocal8Bit("选择取消按钮"));
}
//通过设置模式构造保存文件对话框
QFileDialog saveDlg(this,NULL,NULL,"Text File(*.txt)");
saveDlg.setAcceptMode(QFileDialog::AcceptSave);//设置为保存模式,默认是打开模式
saveDlg.setDirectory("C:\\");//设置默认目录
saveDlg.exec();
字体对话框:
字体对话框源码:
QFontDialog fontDlg;
fontDlg.setWindowTitle(QString::fromLocal8Bit("请选择字体"));
//指定默认字体设置
QFont defFont(QString::fromLocal8Bit("微软雅黑"),72,QFont::Bold);
fontDlg.setCurrentFont(defFont);
if(QFileDialog::Accepted==fontDlg.exec()){
QFont fnt = fontDlg.selectedFont();
QString strFont=QString::fromLocal8Bit("family:%1 pointSize:%2 styleName:%3")
.arg(fnt.family()).arg(fnt.pointSize()).arg(fnt.styleName());
QMessageBox::information(this,NULL,strFont);
//通过getFont使用指定字体
bool isOk=false;
QFont selFont = QFontDialog::getFont(&isOk,fnt,this);
if(isOk){
QString strFont=QString::fromLocal8Bit("family:%1 pointSize:%2 styleName:%3")
.arg(fnt.family()).arg(fnt.pointSize()).arg(fnt.styleName());
QMessageBox::information(this,NULL,strFont);
}
}
颜色对话框:
颜色对话框源码:
QColorDialog colorDlg;
//设置默认颜色
QColor c("#ff156f");//255,21,111,255 for rgba
colorDlg.setCurrentColor(c);
QPoint p = pos();//窗口在屏幕坐标
colorDlg.setWindowTitle(QString::fromLocal8Bit("请选择颜色-[x坐标:%1,y坐标:%2]").arg(p.x()).arg(p.y()));
int r = colorDlg.exec();
if(QColorDialog::Accepted==r){
QColor color = colorDlg.selectedColor();
int qr =qRed(color.rgb());
int qg =qGreen(color.rgb());
int qb =qBlue(color.rgb());
QString strColor=QString::fromLocal8Bit("R:%1 , G:%2 , B:%3 , HUE:%4 , SAT:%5 , VAL:%6 , HEX:#%7%8%9")
.arg(color.red()).arg(color.green()).arg(color.blue())
.arg(color.hue()).arg(color.saturation()).arg(color.value())
.arg(qr==0?"00":QString::number(qr,16))
.arg(qg==0?"00":QString::number(qg,16))
.arg(qb==0?"00":QString::number(qb,16));
QMessageBox::information(this,NULL,strColor);
QColor newColor = QColorDialog::getColor(color,this,"color test",QColorDialog::ShowAlphaChannel);//显示alpha通道
}