zoukankan      html  css  js  c++  java
  • Qt__文件打开保存对话框(QFileDialog)

    转自豆子空间
    使用QFileDialog有两种方法,一种是比较简单的使用“静态函数法”,另一种是可以自定义各个细节的“构造函数法”。

    静态函数法##

    修改MainWindow的open函数:

    #include <QFileDialog>
    
    ......
    
        QString path = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files(*.jpg *.png)"));
        if(path.length() == 0) {
            QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files."));
        } else {
            QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path);
        }
    
    QString QFileDialog::getOpenFileName (
              QWidget * parent = 0,
              const QString & caption = QString(),
              const QString & dir = QString(),
              const QString & filter = QString(),
              QString * selectedFilter = 0,
              Options options = 0 )
    
    • 第一个参数parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值0;
    • 第二个参数caption,是对话框的标题;
    • 第三个参数dir,是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:"等;
    • 第四个参数filter,是对话框的后缀名过滤器,比如我们使用"Image Files(.jpg .png)"就让它只能显示后缀名是jpg或者png的文件。如果需要使用多个过滤器,使用";;"分割,比如"JPEG Files(.jpg);;PNG Files(.png)";
    • 第五个参数selectedFilter,是默认选择的过滤器;
    • 第六个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。

    QFileDialog提供了很多静态函数,用于获取用户选择的文件。这里我们使用的是getOpenFileName(), 也就是“获取打开文件名”。
    getSaveFileName() 保存本地文件对话框。
    getOpenFileNames() 获取多个本地文件。
    getExistingDirectory() 只获取文件夹。

    构造函数法-自定义细节##

    修改MainWindow的open函数:

        QFileDialog *fileDialog = new QFileDialog(this);
        fileDialog->setWindowTitle(tr("Open Image"));
        fileDialog->setDirectory(".");
        fileDialog->setFilter(tr("Image Files(*.jpg *.png)"));
        if(fileDialog->exec() == QDialog::Accepted) {
                QString path = fileDialog->selectedFiles()[0];
                QMessageBox::information(NULL, tr("Path"), tr("You selected ") + path);
        } else {
                QMessageBox::information(NULL, tr("Path"), tr("You didn't select any files."));
        }
    

    不过,这两种写法虽然功能差别不大,但是弹出的对话框却并不一样。getOpenFileName()函数在Windows和MacOS X平台上提供的是本地的对话框,而QFileDialog提供的始终是Qt自己绘制的对话框(还记得前面说过,Qt的组件和Swing类似,也是自己绘制的,而不都是调用系统资源API)。

    为了说明QFileDialog::getOpenFileName()函数的用法,还是先把函数签名放在这里:

  • 相关阅读:
    Tableau如何绘制堆叠柱状图
    Tableau如何绘制多边形地图
    Tableau如何绘制凹凸图
    数据库备份策略设计
    MySQL数据库如何实现增量备份
    Tableau如何绘制瀑布图
    创建.net core ef项目
    asp.net core的ef的连接字符串
    sqlserver的varchar nvarchar区别
    jq的ajax请求写法
  • 原文地址:https://www.cnblogs.com/narjaja/p/9113316.html
Copyright © 2011-2022 走看看