0
点赞
收藏
分享

微信扫一扫

Qt5.12实战之QFileDialog与QFontDialog及QColofDialog使用


  1. 引用对文件: #include <QFileDialog>
  2. 实例化对象:

QFileDialog filedlg(nullptr,//父窗口
                        "open image file",//标题
                        "C:\\",//默认目录
                        "ImageFile(*.jpg *.png)");//文件类型筛选
    //显示 
    if(filedlg.exec()==QDialog::Accepted){

    }

显示效果



Qt5.12实战之QFileDialog与QFontDialog及QColofDialog使用_qt


文件对话框示例源码:

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();

字体对话框:



Qt5.12实战之QFileDialog与QFontDialog及QColofDialog使用_ide_02


字体对话框源码:

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);
       }
    }

颜色对话框:



Qt5.12实战之QFileDialog与QFontDialog及QColofDialog使用_文件名_03


颜色对话框源码:

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通道

    }

举报

相关推荐

0 条评论