精华内容
下载资源
问答
  • 2022-03-29 09:08:28

    一、getOpenFileName选择打开一个文件

    QString **getOpenFileName**(QWidget *parent = nullptr, 
    							const QString &caption = QString(), 
    							const QString &dir = QString(), 
    							const QString &filter = QString(), 
    							QString *selectedFilter = nullptr, 
    							QFileDialog::Options options = Options())
    
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                    "/home",tr("Images (*.png *.xpm *.jpg)"));
    
    
    • caption:对话框标题,这里设置为"选择一个文件"。

    • dir :初始化目录,打开对话框时的初始目录,这里用QDinxurrentPath()获取应用程序当前目录。

    • filter :文件过滤器,设置选择不同后缀的文件,可以设置多组文件,如:

      QString f ilter="文本文件.txt);;图片文件(* .jpg *.gif *.png);;所有文件(*.*)";
      

      每组文件之间用两个分号隔开,同一组内不同后缀之间用空格隔开。

    • selectedFilter :默认选择的过滤器

    • options:对话框的一些参数设定,每个选项可以使用 | 运算组合起来。关于option参数,QT提供了很多种:

      enum Option
          {	
          	//只在对话框中显示路径,默认是会选择文件和路径的。
              ShowDirsOnly                = 0x00000001, 
              //默认是解析符号链接的,即返回的是符号链接指向的文件的路径。一般不会加这个参数。
              DontResolveSymlinks         = 0x00000002,
              //覆盖文件的时候,不要弹框提示是否覆盖,直接覆盖即可。
              DontConfirmOverwrite        = 0x00000004,
              //不要使用给定的外观。实际这个没啥用了,在QT4.5就不再支持了。不需要关注。
              DontUseSheet                = 0x00000008,
              //不要使用本机的对话框类型。QT默认使用的是本机的对话框类型,例如这种就是win10的,本身已经很好用了。但是如果你想自己设计对话框的背景颜色、字体等等,可以使用这个选项。
              DontUseNativeDialog         = 0x00000010,
              //表示只能读
              ReadOnly                    = 0x00000020,
              //表示是否隐藏文件名过滤器详细信息。
              HideNameFilterDetails       = 0x00000040,
              //不要使用自定义目录图标,始终使用默认目录图标。
              DontUseCustomDirectoryIcons = 0x00000080
          };
      

    QFileDialog::getOpenFileName() 函数返回的是选择文件的带路径的完整文件名,如果在对话框里取消选择,则返回字符串为空。

    二、getOpenFileNames选择打开多个文件

    QStringList **getOpenFileNames**(QWidget *parent = nullptr, 
    								const QString &caption = QString(), 
    								const QString &dir = QString(), 
    								const QString &filter = QString(), 
    								QString *selectedFilter = nullptr, 
    								QFileDialog::Options options = Options())
    
    QStringList files = QFileDialog::getOpenFileNames(
                              this,
                              "Select one or more files to open",
                              "/home",
                              "Images (*.png *.xpm *.jpg)");
    
    

    返回值是一个字符串列表,列表的每一行是选择的一个文件。

    三、getExistingDirectory选择已有目录

    QString **getExistingDirectory**(QWidget *parent = nullptr, 
    								const QString &caption = QString(), 
    								const QString &dir = QString(), 
    								QFileDialog::Options options = ShowDirsOnly)
    
    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                      "/home",
                                                      QFileDialog::ShowDirsOnly
                                                      | QFileDialog::DontResolveSymlinks);
    

    若需要传递对话框标题和初始路径,还应传递一个选项,一般用 QFileDialog::ShowDirsOnly,表示对话框中只显示目录。
    静态函数 QCoreApplication::applicationDirPath() 返回应用程序可执行文件所在的目录,getExistingDirectory() 函数的返回值是选择的目录名称字符串。

    四、getSaveFileName选择保存文件名

    QString **getSaveFileName**(QWidget *parent = nullptr, 
    							const QString &caption = QString(), 
    							const QString &dir = QString(), 
    							const QString &filter = QString(), 
    							QString *selectedFilter = nullptr, 
    							QFileDialog::Options options = Options())
    
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),
                                 "/home/jana/untitled.png",
                                 tr("Images (*.png *.xpm *.jpg)"));
    
    

    五、getOpenFileUrl可选择远程网络文件

    QUrl **getOpenFileUrl**(QWidget *parent = nullptr, 
    						const QString &caption = QString(), 
    						const QUrl &dir = QUrl(), 
    						const QString &filter = QString(), 
    						QString *selectedFilter = nullptr, 
    						QFileDialog::Options options = Options(), 
    						const QStringList &supportedSchemes = QStringList())
    

    示例:

    QString runPath = QCoreApplication::applicationDirPath();
    QUrl file_name = QFileDialog::getOpenFileUrl(this,QStringLiteral("选择路径"),runPath,"Text Files(*.txt *.png)",nullptr,QFileDialog::DontUseCustomDirectoryIcons);
    
    • supportedSchemes:正常情况下为空即可,为空代表不限制,既可以选择本地,也可以选择远程的文件。当然前提是你的平台允许选择远程文件,否则只能选择本地文件。
    更多相关内容
  • QFileDialog

    千次阅读 2022-02-13 16:12:21
    QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。 创建 QFileDialog 最简单的方法是使用静态函数: fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr(...

    一、描述 

    QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。

    创建 QFileDialog 最简单的方法是使用静态函数:

    fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

    在上面的示例中,模态 QFileDialog 是使用静态函数创建的。 该对话框最初显示“/home/jana”目录的内容,并显示与字符串“Image Files (*.png *.jpg *.bmp)”中给出的模式匹配的文件。

    如果要使用多个过滤器,请用两个分号分隔每个过滤器。 例如:

    "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

    可以在不使用静态函数的情况下创建自己的 QFileDialog。 通过调用 setFileMode(),可以指定用户必须在对话框中选择的内容:

    QFileDialog dialog(this);
    dialog.setFileMode(QFileDialog::AnyFile);

    在上面的例子中,文件对话框的模式设置为 AnyFile,这意味着用户可以选择任何文件,甚至可以指定一个不存在的文件。此模式对于创建“另存为”文件对话框很有用。

    fileMode 属性包含对话框的操作模式,这表明用户应该选择什么类型的对象。使用 setNameFilter() 设置文件过滤器。例如:

    dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));

    在上面的示例中,过滤器设置为“Images (*.png *.xpm *.jpg)”,这意味着只有扩展名为 png、xpm 或 jpg 的文件才会显示在 QFileDialog 中。可以使用 setNameFilters() 应用多个过滤器。使用 selectNameFilter() 选择提供的过滤器之一作为文件对话框的默认过滤器。

    文件对话框有两种查看模式:列表和详细信息

    • 列表将当前目录的内容显示为文件和目录名称的列表。
    • 详细信息还显示文件和目录名称列表,但在每个名称旁边提供附加信息,例如文件大小和修改日期。

    使用 setViewMode() 设置模式:

    dialog.setViewMode(QFileDialog::Detail);

    创建自己的文件对话框时需要使用的最后一个重要函数是 selectedFiles()。

    QStringList fileNames;
    if (dialog.exec())
        fileNames = dialog.selectedFiles();

    在上面的示例中,创建并显示了一个模态文件对话框。如果用户单击确定,他们选择的文件将放入 fileName时。

    默认情况下,如果平台有一个平台原生文件对话框,则将使用它。在这种情况下,用于构造对话框的小部件将不会被实例化。可以设置 DontUseNativeDialog 选项以确保将使用基于小部件的实现而不是本机对话框。

    二、类型成员

    1、enum QFileDialog::AcceptMode

    • AcceptOpen:打开文件
    • AcceptSave:保存文件

    2、enum QFileDialog::DialogLabel:对话框中的标签,可使用 setLabelText() 设置标签上的文本。

    • LookIn
    • FileName
    • FileType
    • Accept
    • Reject    

    3、enum QFileDialog::FileMode:此枚举用于指示用户可以在文件对话框中选择什么,即如果用户单击确定,对话框将返回什么。

    • AnyFile:文件名,不管它是否存在。
    • ExistingFile:单个现有文件的名称。
    • Directory:目录的名称。 显示文件和目录。
    • ExistingFiles:零个或多个现有文件的名称。

    4、enum QFileDialog::Option

    • ShowDirsOnly:只在文件对话框中显示目录。(仅在目录文件模式(Directory)下有效。)
    • DontResolveSymlinks:不解析文件对话框中的符号链接。
    • DontConfirmOverwrite:如果选择了现有文件,则不要求确认。
    • DontUseNativeDialog:不要使用本机文件对话框。
    • ReadOnly:表示模型是只读的。
    • HideNameFilterDetails:指示文件名过滤器详细信息是否隐藏。
    • DontUseCustomDirectoryIcons:始终使用默认目录图标。

    5、enum QFileDialog::ViewMode:这个枚举描述了文件对话框的视图模式,即将显示有关每个文件的哪些信息。

    • Detail:显示目录中每个项目的图标、名称和详细信息。
    • List:仅显示目录中每个项目的图标和名称。

    三、属性成员

    1、acceptMode : AcceptMode

    对话框的接受模式。默认为 AcceptOpen

    2、defaultSuffix : QString

    默认后缀。

    此属性指定一个字符串,它将被添加到文件名中。后缀通常用于表示文件类型(例如“txt”表示文本文件)。

    如果第一个字符是点 ('.'),则将其删除。

    3、fileMode : FileMode

    对话框的文件模式。文件模式定义了用户希望在对话框中选择的项目的数量和类型。

    默认为 AnyFile

    4、options : Options

    影响对话框外观的各种选项。默认情况下,所有选项都被禁用。

    选项应在显示对话框之前设置。

    5、supportedSchemes : QStringList

    文件对话框应允许导航到的 URL 方案。

    6、viewMode : ViewMode

    文件和目录在对话框中的显示方式。

    四、静态成员函数

    1、QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)

    返回用户选择的现有目录。

    创建一个模态文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。

    对话框的工作目录设置为 dir,标题设置为 caption 。其中任何一个都可能是空字符串,在这种情况下,将分别使用当前目录和默认标题。

    警告:在对话框执行期间不要删除父级。如果想这样做,应该使用 QFileDialog 构造函数自己创建对话框。

    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                    "/home",
                                                    QFileDialog::ShowDirsOnly
                                                    | QFileDialog::DontResolveSymlinks);

    2、QUrl getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList())

    返回用户选择的现有目录。如果用户按下取消,它会返回一个空的 url。

    getExistingDirectory() 的主要区别在于提供给用户选择远程目录的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

    supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

    3、void getOpenFileContent(const QString &nameFilter, const std::function<void (const QString &, const QByteArray &)> &fileOpenCompleted)

    返回用户选择的文件的内容。

    该函数是异步的并立即返回。当一个文件被选中并且它的内容被读入内存时,fileOpenCompleted 回调将被调用。

    auto fileContentReady = [](const QString &fileName, const QByteArray &fileContent) 
    {
        if (fileName.isEmpty()) 
        {
            // 未选择文件
        } 
        else 
        {
            // 使用文件名和文件内容
        }
    };
    QFileDialog::getOpenFileContent("Images (*.png *.xpm *.jpg)",  fileContentReady);

    4、QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

    返回用户选择的现有文件。如果用户按下取消,它会返回一个空字符串。

    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                    "/home",
                                                    tr("Images (*.png *.xpm *.jpg)"));

    该函数使用给定的父小部件创建一个模态文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。

    文件对话框的工作目录将设置为 dir。如果 dir 包含文件名,则将选择该文件。仅显示与 filter 匹配的文件。选择的过滤器设置为 selectedFilter。参数 dir、selectedFilter 和 filter 可以是空字符串。 如果想要多个过滤器,请将它们用 ';;' 分隔,例如:

    "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

    对话框的标题设置为 caption 。如果未指定标题,则将使用默认标题。

    警告:在对话框执行期间不要删除父级。如果想这样做,应该使用 QFileDialog 构造函数自己创建对话框。

    5、QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ))

    返回用户选择的一个或多个现有文件。

    QStringList files = QFileDialog::getOpenFileNames(
                            this,
                            "Select one or more files to open",
                            "/home",
                            "Images (*.png *.xpm *.jpg)");

    6、QUrl getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ), const QStringList &supportedSchemes = QStringList())

    返回用户选择的现有文件。如果用户按下取消,它会返回一个空的 url。

    getOpenFileName() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

    supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

    7、QList<QUrl> getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())

    返回用户选择的一个或多个现有文件。如果用户按下取消,它会返回一个空列表。

    getOpenFileNames() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型分别是 QList<QUrl> 和 QUrl。

    supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

    8、QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ))

    返回用户选择的文件名。该文件不必存在。

    QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), 
                                                    "/home/jana/untitled.png", 
                                                    tr("Images (*.png *.xpm *.jpg)"));

    9、QUrl getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ), const QStringList &supportedSchemes = QStringList())

    返回用户选择的文件。该文件不必存在。如果用户按下取消,它会返回一个空的 url。

    getSaveFileName() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

    10、void saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString())

    使用用户选择的文件名和位置将文件内容保存到文件中。 可以提供 fileNameHint 以向用户建议文件名。

    该函数是异步的并立即返回。

    QByteArray imageData;
    QFileDialog::saveFile("myimage.png", imageData);

    五、非静态成员函数

    1、【信号】void currentChanged(const QString &path)

    当当前文件更改以进行本地操作时,会发出此信号,并将新文件名作为路径参数。

    2、【信号】void currentUrlChanged(const QUrl &url)

    当当前文件更改时,会发出此信号,并将新文件 URL 作为 url 参数。

    3、【信号】void directoryEntered(const QString & directory )

    当用户进入目录时,会发出此信号用于本地操作。

    4、【信号】void directoryUrlEntered(const QUrl & directory )

    当用户进入目录时会发出这个信号。

    5、【信号】void fileSelected(const QString & file)

    当本地操作的选择发生变化并且对话框被接受时,该信号与选定文件一起发出。 

    6、【信号】void  filesSelected(const QStringList & selected)

    当本地操作的选择发生变化并且对话框被接受时,该信号与所选文件的列表一起发出。 

    7、【信号】void filterSelected(const QString & filter)

    当用户选择过滤器时会发出此信号。

    8、【信号】void urlSelected(const QUrl & url)

    当选择更改且对话框被接受时,此信号将与所选 url 一起发出。

    9、【信号】void urlsSelected(const QList < QUrl > & urls)

    当选择更改且对话框被接受时,此信号将与所选 URL 列表一起发出。

    10、QDir directory()

    返回当前显示在对话框中的目录。

    11、QUrl directoryUrl()

    返回当前在对话框中显示的目录的 url。

    12、QDir::Filters filter()

    返回显示文件时使用的过滤器。

    13、void open(QObject *receiver, const char *member)

    此函数将其信号之一连接到接收者和成员指定的槽。 如果 fileMode ExistingFiles,信号是 filesSelected(),否则信号是 fileSelected()。

    当对话框关闭时,信号将与槽断开连接。

    14、bool restoreState(const QByteArray &state)

    将对话框的布局、历史和当前目录恢复到指定的状态。

    通常这与 QSettings 结合使用以恢复过去会话的大小。

    如果有错误返回 false。

    15、QByteArray saveState()

    保存对话框布局、历史和当前目录的状态。

    通常这与 QSettings 结合使用以记住未来会话的大小。

    16、void selectFile(const QString &filename)

    选择给定的文件名。

    17、void selectMimeTypeFilter(const QString &filter)

    设置当前的 MIME 类型过滤器。

    18、void selectNameFilter(const QString &filter)

    设置当前文件类型过滤器。通过用分号或空格分隔多个过滤器,可以在过滤器中传递多个过滤器。

    19、void selectUrl(const QUrl &url)

    在文件对话框中选择给定的 url。

    非原生 QFileDialog 仅支持本地文件。

    20、QStringList selectedFiles()

    返回包含对话框中选定文件的绝对路径的列表。

    21、QList<QUrl> selectedUrls()

    返回包含对话框中选定文件的 url 列表。

    22、void setDirectory(const QString &directory)

           void setDirectory(const QDir &directory)

    设置文件对话框的当前目录。

    23、void setDirectoryUrl(const QUrl &directory)

    设置文件对话框的当前目录 url。

    24、void setFilter(QDir::Filters filters)

    设置过滤器。过滤器用于指定应显示的文件类型。

    25、void setHistory(const QStringList &paths)

    设置文件对话框的浏览历史记录。 

    26、void setIconProvider(QAbstractFileIconProvider *provider)

    设置文件对话框使用的图标提供程序。

    27、void setItemDelegate(QAbstractItemDelegate *delegate)

    设置用于在文件对话框的视图中呈现项目的项目委托。

    QFileDialog 不获取委托的所有权。

    警告:不应在视图之间共享同一委托实例。 这样做可能会导致不正确或不直观的编辑行为,因为连接到给定委托的每个视图都可能收到 closeEditor() 信号,并尝试访问、修改或关闭已关闭的编辑器。

    使用的模型是 QFileSystemModel。它具有自定义项目数据角色,由 Roles 枚举描述。

    28、void setLabelText(QFileDialog::DialogLabel label, const QString &text)

    设置文件对话框中显示的文本。 

    29、void setMimeTypeFilters(const QStringList &filters)

    从 MIME 类型列表中设置文件对话框中使用的过滤器。

    setNameFilters() 的便捷方法。使用 QMimeType 从每个 MIME 类型中定义的 glob 模式和描述创建名称过滤器。

    application/octet-stream 用于表示“所有文件 (*)”过滤器,因为这是所有文件的基本 MIME 类型。

    QStringList mimeTypeFilters({"image/jpeg", // 将显示为: "JPEG image (*.jpeg *.jpg *.jpe)
                                 "image/png",  // 将显示为: "PNG image (*.png)"
                                 "application/octet-stream" // 将显示为: "All files (*)"
                                });
    
    QFileDialog dialog(this);
    dialog.setMimeTypeFilters(mimeTypeFilters);
    dialog.exec();

    30、void setNameFilter(const QString &filter)

    设置文件对话框中使用的过滤器。

    如果过滤器包含一对括号,其中包含一个或多个文件名通配符模式,以空格分隔,则仅将括号中包含的文本用作过滤器。这意味着这些调用都是等价的:

    dialog.setNameFilter("All C++ files (*.cpp *.cc *.C *.cxx *.c++)");
    dialog.setNameFilter("*.cpp *.cc *.C *.cxx *.c++");

    31、void setNameFilters(const QStringList &filters)

    设置文件对话框中使用的过滤器。

    请注意,过滤器 *.* 不可移植,因为文件扩展名决定文件类型的历史假设在每个操作系统上并不一致。名称中可能没有点的文件(例如,Makefile)。在本机 Windows 文件对话框中,*.* 将匹配此类文件,而在其他类型的文件对话框中可能不会。 因此,如果要选择任何文件,最好使用 *。

    const QStringList filters({"Image files (*.png *.xpm *.jpg)",
                               "Text files (*.txt)",
                               "Any files (*)"
                              });
    QFileDialog dialog(this);
    dialog.setNameFilters(filters);
    dialog.exec();

    setMimeTypeFilters() 具有为每种文件类型提供所有可能的名称过滤器的优点。例如,JPEG 图像具有三种可能的扩展名;如果应用程序可以打开此类文件,则选择 image/jpeg mime 类型作为过滤器将允许打开所有这些文件。

    32、void setOption(QFileDialog::Option option, bool on = true)

    启用或清除选项。

    选项(特别是 DontUseNativeDialogs 选项)应在更改对话框属性或显示对话框之前设置。

    在对话框可见时设置选项不能保证立即对对话框产生影响(取决于选项和平台)。

    33、void setProxyModel(QAbstractProxyModel *proxyModel)

    设置代理模型。如果想修改底层模型,这很有用,例如,添加列、过滤数据等。

    34、void setSidebarUrls(const QList<QUrl> &urls)

    设置位于侧边栏中的 url。

    例如:

        QList<QUrl> urls;
        urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")
             << QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::MusicLocation).first());
    
        QFileDialog dialog;
        dialog.setSidebarUrls(urls);
        dialog.setFileMode(QFileDialog::AnyFile);
        if (dialog.exec()) {
            // ...
        }

    35、bool testOption(QFileDialog::Option option)

    是否启用了给定选项。

    展开全文
  • 自定义QFileDialog

    2019-04-29 11:33:07
    自定义的QFileDialog,
  • 本文研究的主要是PyQt5打开文件对话框QFileDialog的代码示例,具体如下。 单个文件打开 QFileDialog.getOpenFileName() 多个文件打开 QFileDialog.getOpenFileNames() 文件夹选取 QFileDialog....
  • QFileDialog常用来打开保存文件或打开文件对话框,允许用户选择本地文件或者文件夹 常用方法 QFileDialog.getOpenFileName() #获取一个打开文件的文件名 QFileDialog.getOpenFileNames() #获取多个打开文件的文件名 ...
  • 使用QFileDialog打开文件夹,路径默认是我的电脑,或者是网络
  • Python3.x+QFileDialog 实现界面功能“选择文件夹”、“选择文件”、“选择多个文件”和“保存文件”。
  • PyQt5打开保存对话框QFileDialog介绍 QFIleDialog是用于打开和保存文件的标准对话框。QFileDialog类继承自QDialog类 QFileDialog在打开文件时使用可文件过滤器,用于显示指定扩展名的文件,也可以设置使用...
  • QFileDialog类 - Qt 参考中文帮助文档

    千次阅读 2021-03-07 01:50:12
    QFileDialog类提供了允许用户选择文件或者目录的对话框。详情请见……#include 继承了QDialog。所有成员函数的列表。公有成员QFileDialog ( constQString&dirName, constQString&filter = QString::null, ...

    QFileDialog类提供了允许用户选择文件或者目录的对话框。

    详情请见……

    #include

    继承了QDialog。

    所有成员函数的列表。

    公有成员

    QFileDialog ( constQString&dirName, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, boolmodal = FALSE )

    QFileDialog ( QWidget*parent = 0, constchar*name = 0, boolmodal = FALSE )

    ~QFileDialog ()

    QString selectedFile () const

    QString selectedFilter () const

    virtual void setSelectedFilter ( constQString&mask )

    virtual void setSelectedFilter ( intn )

    void setSelection ( constQString&filename )

    void selectAll ( boolb )

    QStringList selectedFiles () const

    QString dirPath () const

    void setDir ( constQDir&dir )

    const QDir * dir () const

    void setShowHiddenFiles ( bools )

    bool showHiddenFiles () const

    void rereadDir ()

    void resortDir ()

    enum Mode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly }

    void setMode ( Mode )

    Mode mode () const

    enum ViewMode { Detail, List }

    enum PreviewMode { NoPreview, Contents, Info }

    void setViewMode ( ViewModem )

    ViewMode viewMode () const

    void setPreviewMode ( PreviewModem )

    PreviewMode previewMode () const

    bool isInfoPreviewEnabled () const

    bool isContentsPreviewEnabled () const

    void setInfoPreviewEnabled ( bool )

    void setContentsPreviewEnabled ( bool )

    void setInfoPreview ( QWidget*w, QFilePreview*preview )

    void setContentsPreview ( QWidget*w, QFilePreview*preview )

    QUrl url () const

    void addFilter ( constQString&filter )

    公有槽

    void setDir ( constQString&pathstr )

    void setUrl ( constQUrlOperator&url )

    void setFilter ( constQString&newFilter )

    void setFilters ( constQString&filters )

    void setFilters ( constchar**types )

    void setFilters ( const QStringList & )

    信号

    void fileHighlighted ( const QString & )

    void fileSelected ( const QString & )

    void filesSelected ( const QStringList & )

    void dirEntered ( const QString & )

    void filterSelected ( const QString & )

    静态公有函数

    QString getOpenFileName ( constQString&startWith = QString::null, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE )

    QString getSaveFileName ( constQString&startWith = QString::null, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE )

    QString getExistingDirectory ( constQString&dir = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, booldirOnly = TRUE, boolresolveSymlinks = TRUE )

    QStringList getOpenFileNames ( constQString&filter = QString::null, constQString&dir = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE )

    void setIconProvider ( QFileIconProvider*provider )

    QFileIconProvider * iconProvider ()

    属性

    bool contentsPreview– 文件对话框是否提供当前选择文件的内容预览

    QString dirPath– 文件对话框的工作目录(只读)

    bool infoPreview– 文件对话框是否提供当前选择文件的信息预览

    Mode mode– 文件对话框的模式

    PreviewMode previewMode– 文件的对话框的预览模式

    QString selectedFile– 选择的文件的名称(只读)

    QStringList selectedFiles– 选择的文件的列表(只读)

    QString selectedFilter– 文件对话框中用户选择文件的过滤器(只读)

    bool showHiddenFiles– 文件对话框中隐藏文件是否显示

    ViewMode viewMode– 文件对话框的视图模式

    保护成员

    void addWidgets ( QLabel*l, QWidget*w, QPushButton*b )

    void addToolButton ( QButton*b, boolseparator = FALSE )

    void addLeftWidget ( QWidget*w )

    void addRightWidget ( QWidget*w )

    详细描述

    QFileDialog类提供了允许用户选择文件或者目录的对话框。

    QFileDialog类允许用户在它们的文件系统上遍历来选择一个或多个文件或目录。

    最简单的方式是使用静态函数来创建一个QFileDialog。在Windows上,这些静态函数将调用本地Windows文件对话框并且在Mac OS X上,这些静态函数将调用本地Mac OS X文件对话框。

    QString s = QFileDialog::getOpenFileName(

    "/home",

    "Images (*.png *.xpm *.jpg)",

    this,

    "open file dialog"

    "Choose a file" );

    在上面的实例中,一个模式对话框被使用静态函数来创建。开始目录被设置为“/home”。文件过滤器被设置为“Images (*.png *.xpm *.jpg)”。文件对话框的父对象被设置为this并且它被给定一个标识名称——“open file dialog”。文件对话框上面的标题被设置为“Choose a file”。

    你可以不使用静态函数创建你自己的QFileDialog。通过调用setMode(),你可以设置可以从QFileDialog返回什么。

    QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE );

    fd->setMode( QFileDialog::AnyFile );

    在上面的实例中,文件对话框的模式被设置为AnyFile,也就是说用户可以设置任何文件或者甚至指定一个不存在的文件。这个模式对于创建一个“File Save As”文件对话框。如果用户必须选择存在的文件,请使用ExistingFile,或者如果可以选择目录,请使用Directory。(模式的完整列表请参考QFileDialog::Mode枚举变量。)

    你可以通过mode()重新得到对话框的模式。也可以使用setFilter()来设置对话框的文件过滤器。

    fd->setFilter( "Images (*.png *.xpm *.jpg)" );

    在上面的实例中,过滤器被设置为“Images (*.png *.xpm *.jpg)”,这也就是说只有扩展名为png、xpm或jpg的文件可以被显示在QFileDialog中。你可以使用setFilters()来设置几个过滤器并且使用addFilter()来添加额外的过滤器。使用setSelectedFilter()来选择你给定的其中一个作为文件对话框默认过滤器。只用用户改变过滤器,filterSelected()信号就被发射。

    文件对话框有两种视图模式,QFileDialog::List可以简单地列出文件和目录名称并且QFileDialog::Detail会在旁边显示额外的信息,例如,文件大小。

    fd->setViewMode( QFileDialog::Detail );

    在创建你自己的文件对话框时最后需要的最后重要的函数是selectedFile()。

    QString fileName;

    if ( fd->exec() == QDialog::Accepted )

    fileName = fd->selectedFile();

    在上面的实例中,模式对话框被创建并被显示。如果用户点击OK,然后他们选择的文件被放入fileName中。

    如果你使用ExistingFiles模式,那么你将需要使用selectedFiles()在一个QStringList中返回选择的文件。

    对话框工作目录可以使用setDir()来设置。隐藏文件的显示控制可以使用setShowHiddenFiles()。对话框可以被强制使用rereadDir()重新读取目录并且使用resortDir()来重新排列目录。可以使用selectAll()来选择当前目录下的所有文件。

    创建和使用预览窗口部件

    QFileDialog中使用两种预览窗口部件:内容预览窗口部件和信息预览窗口部件。它们的创建和使用方法相同,除了函数名不同以外,例如,setContentsPreview()和setInfoPreview()。

    预览窗口部件被放置在QFileDialog中,让用户能够看到文件的内容或者有关文件的信息。

    class Preview : public QLabel, public QFilePreview

    {

    public:

    Preview( QWidget *parent=0 ) : QLabel( parent ) {}

    void previewUrl( const QUrl &u )

    {

    QString path = u.path();

    QPixmap pix( path );

    if ( pix.isNull() )

    setText( "This is not a pixmap" );

    else

    setPixmap( pix );

    }

    };

    在上面的代码段中,我们创建一个继承与QLabel和QFilePreview的预览窗口部件。文件预览窗口部件必须从QFilePreview继承。

    在这个类中我们重新实现了QFilePreview::previewUrl(),这是我们决定当文件被选择时发生什么。在上面的实例中,如果它是有效的像素映射,我们只是显示文件的预览。这里是文件对话框如何使用预览窗口部件的:

    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );

    fd->setContentsPreviewEnabled( TRUE );

    fd->setContentsPreview( p, p );

    fd->setPreviewMode( QFileDialog::Contents );

    fd->show();

    第一行创建了我们的预览窗口部件的实例。然后我们创建我们的文件对话框并且调用setContentsPreviewEnabled( TRUE ),这告诉文件对话框预览当前选择文件的内容。然后我们调用setContentsPreview()——注意我们传递同样的预览窗口部件两次。最后,在显示文件对话框之前,我们调用setPreviewMode()来设置Contents为用户选择文件的预览模式来显示内容预览。

    如果你创建另一个预览窗口部件来显示有关文件的信息,那么像内容预览窗口部件一样的方式来创建它并且调用setInfoPreviewEnabled()和setInfoPreview()。然后用户将能够在两种预览模式中切换。

    有关创建QFilePreview窗口部件的更多信息,请参考QFilePreview。

    5286b8281a888f6316532271a456814f.png

    5c033cdc8e569fff64e701a130a324f6.png

    也可以参考对话框类。

    成员类型文档

    QFileDialog::Mode

    这个枚举变量用来表明用户可以在文件对话框中选择什么,也就是如果用户点击OK,这个对话框返回什么。

    QFileDialog::AnyFile – 文件名称,不论是否存在。

    QFileDialog::ExistingFile – 一个单一存在文件的名称

    QFileDialog::Directory – 目录名称。文件和目录都被显示。

    QFileDialog::DirectoryOnly – 目录名称。只显示目录。

    QFileDialog::ExistingFiles – 0个或更多个存在文件的名称。

    请参考setMode()。

    QFileDialog::PreviewMode

    这个枚举变量描述的是文件对话框的预览模式。

    QFileDialog::NoPreview – 没有预览被显示。

    QFileDialog::Contents – 使用内容预览窗口部件来预览当前文件的内容。

    QFileDialog::Info – 使用信息预览窗口部件来预览有关当前文件的信息。

    请参考setPreviewMode()、setContentsPreview()和setInfoPreview()。

    QFileDialog::ViewMode

    这个枚举变量描述的是文件对话框的视图模式,也就是说关于每个文件都显示什么。

    QFileDialog::List – 显示文件和目录的名称和图标。

    QFileDialog::Detail – 显示文件和目录的名称和图标以及更多的信息,比如文件的大小和修改日期。

    请参考setViewMode()。

    成员函数文档

    QFileDialog::QFileDialog ( constQString&dirName, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, boolmodal = FALSE )

    构造一个父对象为parent、名称为name的文件对话框。如果modal为真,那么文件对话框是模式的,否则它就是非模式的。

    如果dirName被指定,那么它将被作为对话框的工作目录,比如,当对话框出现时,它将被作为被显示的目录。如果filter被指定,它将会被用作对话框的文件过滤器。

    QFileDialog::QFileDialog ( QWidget*parent = 0, constchar*name = 0, boolmodal = FALSE )

    构造一个父对象为parent、名称为name的文件对话框。如果modal为真,那么文件对话框是模式的,否则它就是非模式的。

    QFileDialog::~QFileDialog ()

    销毁这个文件对话框。

    void QFileDialog::addFilter ( constQString&filter )

    添加过滤器filter到过滤器的列表中并且把它作为当前过滤器。

    QFileDialog* fd = new QFileDialog( this );

    fd->addFilter( "Images (*.png *.jpg *.xpm)" );

    fd->show();

    在上面的实例中,一个文件对话框被创建,并且文件过滤器“Images (*.png *.jpg *.xpm)”被添加并且它被设置为当前过滤器。初始过滤器“All Files (*)”仍然是有效的。

    也可以参考setFilter()和setFilters()。

    void QFileDialog::addLeftWidget ( QWidget*w ) [保护]

    添加窗口部件w到文件对话框左侧。

    也可以参考addRightWidget()、addWidgets()和addToolButton()。

    void QFileDialog::addRightWidget ( QWidget*w ) [保护]

    添加窗口部件w到文件对话框右侧。

    也可以参考addLeftWidget()、addWidgets()和addToolButton()。

    void QFileDialog::addToolButton ( QButton*b, boolseparator = FALSE ) [保护]

    把工具按钮b添加到文件对话框上面的一排工具按钮中。这个按钮被添加到这一行的右面。如果separator为真,在这行按钮中的最后一个和这个新按钮b之间会被插入一小块空间。

    也可以参考addWidgets()、addLeftWidget()和addRightWidget()。

    void QFileDialog::addWidgets ( QLabel*l, QWidget*w, QPushButton*b ) [保护]

    把指定的窗口部件添加到文件对话框的底部。标签l会被放置到“file name”和“file types”标签的下面。窗口部件w会被放置到文件类型组合框的下面。按钮b会被放到Cancel推动按钮的下面。

    MyFileDialog::MyFileDialog( QWidget* parent, const char* name ) :

    QFileDialog( parent, name )

    {

    QLabel* label = new QLabel( "Added widgets", this );

    QLineEdit* lineedit = new QLineEdit( this );

    QToolButton* toolbutton = new QToolButton( this );

    addWidgets( label, lineedit, toolbutton );

    }

    如果你不想添加任何其中一个窗口部件,就在那个窗口部件的位置上传递0。

    每一次你调用这个函数,一行新的窗口部件被添加到文件对话框的底部。

    也可以参考addToolButton()、addLeftWidget()和addRightWidget()。

    constQDir* QFileDialog::dir () const

    返回文件对话框中显示的当前目录。

    QDir指针的所有权被传递给被调用者,所以你必须在调用者不需要它的时候删除它。

    也可以参考setDir()。

    void QFileDialog::dirEntered ( constQString& ) [信号]

    当用户进入一个目录时,这个信号被发射。

    也可以参考dir()。

    QString QFileDialog::dirPath () const

    返回文件对话框的工作目录。详细情况请参考“dirPath”属性。

    void QFileDialog::fileHighlighted ( constQString& ) [信号]

    当用户高亮显示一个文件时,这个信号被发射。

    也可以参考fileSelected()和filesSelected()。

    void QFileDialog::fileSelected ( constQString& ) [信号]

    当用户选择一个文件时,这个信号被发射。

    也可以参考filesSelected()、fileHighlighted()和selectedFile。

    void QFileDialog::filesSelected ( constQStringList& ) [信号]

    当用户在ExistingFiles模式下选择一个或多个文件时,这个信号被发射。

    也可以参考fileSelected()、fileHighlighted()和selectedFiles。

    void QFileDialog::filterSelected ( constQString& ) [信号]

    当用户选择一个过滤器时,这个信号被发射。

    也可以参考selectedFilter。

    QString QFileDialog::getExistingDirectory ( constQString&dir = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, booldirOnly = TRUE, boolresolveSymlinks = TRUE ) [静态]

    这是一个返回由用户选择的已经存在的目录的方便的静态函数。

    QString s = QFileDialog::getExistingDirectory(

    "/home",

    this,

    "get existing directory"

    "Choose a directory",

    TRUE );

    这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

    对话框的工作目录被设置为dir,并且标题被设置为caption。它们当中的任何一个都可以是QString::null,在这种情况下,当前目录和默认标题将被分别使用。

    如果dirOnly为真,那么只有目录被显示在文件对话框中,否则目录和文件都将被显示。

    在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

    也可以参考getOpenFileName()、getOpenFileNames()和getSaveFileName()。

    QString QFileDialog::getOpenFileName ( constQString&startWith = QString::null, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE ) [静态]

    这是一个返回由用户选择的已经存在的文件的方便的静态函数。如果用户按下Cancel,它返回一个零字符串。

    QString s = QFileDialog::getOpenFileName(

    "/home",

    "Images (*.png *.xpm *.jpg)",

    this,

    "open file dialog",

    "Choose a file to open" );

    这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

    文件的工作目录将被设置为startWith。如果startWith包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数startWith、selectedFilter和filter可以为QString::null。

    对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

    在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

    在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

    也可以参考getOpenFileNames(), getSaveFileName() and getExistingDirectory().

    实例:action/application.cpp、addressbook/mainwindow.cpp、application/application.cpp、chart/chartform.cpp、mdi/application.cpp、qwerty/qwerty.cpp和showimg/showimg.cpp。

    QStringList QFileDialog::getOpenFileNames ( constQString&filter = QString::null, constQString&dir = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE ) [静态]

    这是一个返回由用户选择的已经存在的一个或多个文件的方便的静态函数。

    QStringList files = QFileDialog::getOpenFileNames(

    "Images (*.png *.xpm *.jpg)",

    "/home",

    this,

    "open files dialog"

    "Select one or more files to open" );

    这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

    文件的工作目录将被设置为dir。如果dir包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数dir、selectedFilter和filter可以为QString::null。

    对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

    在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

    在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

    注意如果你想遍历文件的列表,你应该在一个复制上进行遍历,例如:

    QStringList list = files;

    QStringList::Iterator it = list.begin();

    while( it != list.end() ) {

    myProcessing( *it );

    ++it;

    }

    也可以参考getOpenFileName()、getSaveFileName()和getExistingDirectory()。

    QString QFileDialog::getSaveFileName ( constQString&startWith = QString::null, constQString&filter = QString::null, QWidget*parent = 0, constchar*name = 0, constQString&caption = QString::null, QString*selectedFilter = 0, boolresolveSymlinks = TRUE ) [静态]

    这是一个返回由用户选择的已经存在的文件的方便的静态函数。这个文件不一定存在。

    这个函数创建了一个父对象为parent、名称为name的模式文件对话框。如果父对象不为0,这个对话框将被显示在它的父对象上面的中间。

    QString s = QFileDialog::getSaveFileName(

    "/home",

    "Images (*.png *.xpm *.jpg)",

    this,

    "save file dialog"

    "Choose a filename to save under" );

    文件的工作目录将被设置为startWith。如果startWith包括一个文件名,这个文件将被选择。过滤器被设置为filter,这样只有匹配过滤器的文件才会被显示。被选择的过滤器被设置为selectedFilter。参数startWith、selectedFilter和filter可以为QString::null。

    对话框的标题可以被设置为caption。如果caption没有被指定,那么将会有一个默认标题被使用。

    在Windows和Mac OS X下,这个静态函数将使用本地文件对话框而不是QFileDialog,除非应用程序的风格被设置为本地风格以外的某种风格。

    在Unix/X11下,文件对话框的通常行为是解析并跟踪符号连接。例如,如果/usr/tmp是/var/tmp的符号连接,那么在进入/usr/tmp之后,文件对话框将改变到/var/tmp。如果resolveSymlinks为假,文件对话框将把符号连接看作通常的目录。

    也可以参考getOpenFileName()、getOpenFileNames()和getExistingDirectory()。

    实例:action/application.cpp、addressbook/mainwindow.cpp、application/application.cpp、chart/chartform.cpp、qmag/qmag.cpp、qwerty/qwerty.cpp和showimg/showimg.cpp。

    QFileIconProvider* QFileDialog::iconProvider () [静态]

    返回在文件对话框上当前设置的图标提供者的指针。默认情况下没有图标提供者,并且这个函数返回0。

    也可以参考setIconProvider()和QFileIconProvider。

    bool QFileDialog::isContentsPreviewEnabled () const

    如果文件对话框提供当前选择文件的内容预览,返回真,否则返回假。详细情况请参考“contentsPreview”属性。

    bool QFileDialog::isInfoPreviewEnabled () const

    如果文件对话框提供当前选择文件的信息预览,返回真,否则返回假。详细情况请参考“infoPreview”属性。

    Mode QFileDialog::mode () const

    Returns the file dialog’s mode.

    See the “mode” property for details.

    PreviewMode QFileDialog::previewMode () const

    返回文件对话框的预览模式。详细情况请参考“previewMode”属性。

    void QFileDialog::rereadDir ()

    重新读取在文件对话框中显示的当前目录。

    只有在如果目录的内容发生改变并且你想刷新文件对话框来反映这样的变化时,你才需要调用这个函数。

    也可以参考resortDir()。

    void QFileDialog::resortDir ()

    重新排列所显示的目录。

    也可以参考rereadDir()。

    void QFileDialog::selectAll ( boolb )

    如果b为真,那么当前目录下的所有文件都被选择,否则它们都被取消选择。

    QString QFileDialog::selectedFile () const

    返回被选择文件的名称。详细情况请参考“selectedFile”属性。

    QStringList QFileDialog::selectedFiles () const

    返回被选择文件的列表。详细情况请参考“selectedFiles”属性。

    QString QFileDialog::selectedFilter () const

    返回文件对话框中用户所选择的过滤器。详细情况请参考“selectedFilter”属性。

    void QFileDialog::setContentsPreview ( QWidget*w, QFilePreview*preview )

    设置被用于作为文件对话框显示文件内容的窗口部件为w并且使用QFilePreview preview来预览内容。

    通常你需要创建一个继承QWidget和QFilePreview的预览窗口部件,所以你需要传递同一个窗口部件两次。

    class Preview : public QLabel, public QFilePreview

    {

    public:

    Preview( QWidget *parent=0 ) : QLabel( parent ) {}

    void previewUrl( const QUrl &u )

    {

    QString path = u.path();

    QPixmap pix( path );

    if ( pix.isNull() )

    setText( "This is not a pixmap" );

    else

    setPixmap( pix );

    }

    };

    //...

    int main( int argc, char** argv )

    {

    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );

    fd->setContentsPreviewEnabled( TRUE );

    fd->setContentsPreview( p, p );

    fd->setPreviewMode( QFileDialog::Contents );

    fd->show();

    }

    也可以参考contentsPreview、setInfoPreview()和previewMode。

    实例:qdir/qdir.cpp。

    void QFileDialog::setContentsPreviewEnabled ( bool )

    设置文件对话框是否提供当前选择文件的内容预览。详细情况请参考“contentsPreview”属性。

    void QFileDialog::setDir ( constQDir&dir )

    设置文件对话框的工作目录是dir。

    也可以参考dir()。

    void QFileDialog::setDir ( constQString&pathstr ) [槽]

    这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

    设置文件对话框的工作目录是pathstr。

    也可以参考dir()。

    void QFileDialog::setFilter ( constQString&newFilter ) [槽]

    设置文件对话框中使用的过滤器为newFilter。

    如果newFilter中包含一对包含一个或多个anything*something,由空格或者分号分隔的括号,那么只有其中被括号包含的内容会被作为过滤器。这也就是说下面这些调用方法都是相同的:

    fd->setFilter( "All C++ files (*.cpp *.cc *.C *.cxx *.c++)" );

    fd->setFilter( "*.cpp *.cc *.C *.cxx *.c++" );

    fd->setFilter( "All C++ files (*.cpp;*.cc;*.C;*.cxx;*.c++)" );

    fd->setFilter( "*.cpp;*.cc;*.C;*.cxx;*.c++" );

    也可以参考setFilters()。

    void QFileDialog::setFilters ( constQString&filters ) [槽]

    设置文件对话框中使用的过滤器为filters。过滤器中的每一组必须使用;;(两个分号)来分隔。

    QString types("*.png;;*.xpm;;*.jpg");

    QFileDialog fd = new QFileDialog( this );

    fd->setFilters( types );

    fd->show();

    void QFileDialog::setFilters ( constchar**types ) [槽]

    这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

    必须是以结束符结尾的字符串列表。

    void QFileDialog::setFilters ( constQStringList& ) [槽]

    这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

    void QFileDialog::setIconProvider ( QFileIconProvider*provider ) [静态]

    设置文件对话框使用的QFileIconProvider为provider。

    默认没有QFileIconProvider并且QFileDialog只为每一个目录绘制一个文件夹图标,而对文件则没有图标。

    也可以参考QFileIconProvider和iconProvider()。

    实例:showimg/main.cpp。

    void QFileDialog::setInfoPreview ( QWidget*w, QFilePreview*preview )

    设置被用于作为文件对话框显示文件信息的窗口部件为w并且使用QFilePreview preview来预览信息。

    通常你需要创建一个继承QWidget和QFilePreview的预览窗口部件,所以你需要传递同一个窗口部件两次。

    class Preview : public QLabel, public QFilePreview

    {

    public:

    Preview( QWidget *parent=0 ) : QLabel( parent ) {}

    void previewUrl( const QUrl &u )

    {

    QString path = u.path();

    QPixmap pix( path );

    if ( pix.isNull() )

    setText( "This is not a pixmap" );

    else

    setText( "This is a pixmap" );

    }

    };

    //...

    int main( int argc, char** argv )

    {

    Preview* p = new Preview;

    QFileDialog* fd = new QFileDialog( this );

    fd->setInfoPreviewEnabled( TRUE );

    fd->setInfoPreview( p, p );

    fd->setPreviewMode( QFileDialog::Info );

    fd->show();

    }

    也可以参考setContentsPreview()、infoPreview和previewMode。

    void QFileDialog::setInfoPreviewEnabled ( bool )

    设置文件对话框是否提供当前选择文件的信息预览。详细情况请参考“infoPreview”属性。

    void QFileDialog::setMode ( Mode )

    设置文件对话框的模式。详细情况请参考“mode”属性。

    void QFileDialog::setPreviewMode ( PreviewModem )

    设置文件对话框的预览模式为m。详细情况请参考“previewMode”属性。

    void QFileDialog::setSelectedFilter ( constQString&mask ) [虚]

    设置文件对话框中当前选择的过滤器为文本mask中包含的第一个。

    void QFileDialog::setSelectedFilter ( intn ) [虚]

    这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

    设置文件对话框中当前选择的过滤器为过滤器列表中的第n个过滤器。

    也可以参考filterSelected()、selectedFilter、selectedFiles和selectedFile。

    void QFileDialog::setSelection ( constQString&filename )

    设置默认选择为filename。如果filename为绝对的,setDir()也会被调用来设置文件对话框的工作目录为filename中的目录。

    实例:qdir/qdir.cpp。

    void QFileDialog::setShowHiddenFiles ( bools )

    设置文件对话框中隐藏文件是否被显示为s。详细情况请参考“showHiddenFiles”属性。

    void QFileDialog::setUrl ( constQUrlOperator&url ) [槽]

    设置文件对话框的工作目录为url指定的目录。

    也可以参考url()。

    void QFileDialog::setViewMode ( ViewModem )

    设置文件对话框的视图模式为m。详细情况请参考“viewMode”属性。

    bool QFileDialog::showHiddenFiles () const

    如果文件对话框中隐藏文件被显示,返回真,否则返回假。详细情况请参考“showHiddenFiles”属性。

    QUrl QFileDialog::url () const

    返回文件对话框中当前工作目录的URL。

    也可以参考setUrl()。

    实例:network/networkprotocol/view.cpp。

    ViewMode QFileDialog::viewMode () const

    返回文件对话框的视图模式。详细情况请参考“viewMode”属性。

    属性文档

    bool contentsPreview

    这个属性保存的是文件对话框是否提供当前选择文件的内容预览。

    默认为假。

    也可以参考setContentsPreview()和infoPreview。

    通过setContentsPreviewEnabled()设置属性值并且通过isContentsPreviewEnabled()来获得属性值。

    QString dirPath

    这个属性保存的是文件对话框的工作目录。

    通过dirPath()来获得属性值。

    也可以参考dir()和setDir()。

    bool infoPreview

    这个属性保存的是文件对话框是否提供当前选择文件的信息预览。

    默认为假。

    通过setInfoPreviewEnabled()设置属性值并且通过isInfoPreviewEnabled()来获得属性值。

    Mode mode

    这个属性保存的是文件对话框的模式。

    默认模式为ExistingFile。

    通过setMode()设置属性值并且通过mode()来获得属性值。

    PreviewMode previewMode

    这个属性保存的是文件的对话框的预览模式。

    如果你设置这个模式为NoPreview之外的模式,你必须使用setInfoPreview()或者setContentsPreview()来设置这个对话框的预览窗口部件为你的预览窗口部件并且使用setInfoPreviewEnabled()或setContentsPreviewEnabled()来让预览窗口部件生效。

    也可以参考infoPreview、contentsPreview和viewMode。

    通过setPreviewMode()设置属性值并且通过previewMode()来获得属性值。

    QString selectedFile

    这个属性保存的是选择的文件的名称。

    如果文件被选择,则selectedFile包含文件的名称和它的绝对路径,否则selectedFile为空。

    也可以参考QString::isEmpty()、selectedFiles和selectedFilter。

    通过selectedFile()来获得属性值。

    QStringList selectedFiles

    这个属性保存的是选择的文件的列表。

    如果有一个或多个文件被选择,selectedFiles包含这些文件的名称和它们的绝对路径。如果没有文件被选择或者模式不是ExistingFiles,selectedFiles是一个空列表。

    如果模式为ExistingFile、Directory或DirectoryOnly,使用selectedFile()更方便。

    注意,如果你想遍历这个列表,你应该遍历它的复制,例如:

    QStringList list = myFileDialog.selectedFiles();

    QStringList::Iterator it = list.begin();

    while( it != list.end() ) {

    myProcessing( *it );

    ++it;

    }

    也可以参考selectedFile、selectedFilter和QValueList::empty()。

    通过selectedFiles()来获得属性值。

    QString selectedFilter

    这个属性保存的是文件对话框中用户选择文件的过滤器。

    通过selectedFilter()来获得属性值。

    也可以参考filterSelected()、selectedFiles和selectedFile。

    bool showHiddenFiles

    这个属性保存的是文件对话框中隐藏文件是否显示。

    默认是假,也就是不显示隐藏文件。

    通过setShowHiddenFiles()设置属性值并且通过showHiddenFiles()来获得属性值。

    ViewMode viewMode

    这个属性保存的是文件对话框的视图模式。

    如果你设置视图模式为Detail(默认),那么你将看到文件的详细情况,除了文件名之外,还有文件的大小和这个文件最近一次被修改的日期。

    如果你设置视图模式为List,那么你将只会看到文件和文件夹的列表。

    请参考QFileDialog::ViewMode。

    通过setViewMode()设置属性值并且通过viewMode()来获得属性值。

    展开全文
  • 66.QFileDialog

    2021-07-26 09:58:23
    str) 第一个参数为 QFileDialog.DialogLabel,它的值可以为 QFileDialog.FileName 文件名称标签 QFileDialog.Accept 接收标签 QFileDialog.Reject 拒绝标签 QFileDialog.FileType 文件类型标签 QFileDialog.LookIn ...

    继承 QDialog

    目录

    1  静态方法

    1.1  获取文件

    1.1.1  获取单个文件 getOpenFileName()

    1.1.2  获取多个文件 getOpenFileNames()

    1.1.3  获取文件的url getOpenFileUrl()

    1.1.4  获取多个文件的url getOpenFileUrls()

    1.1.5  获得保存文件路径 getSaveFileUrls()

    1.1.6  获取文件保存url getSaveFileUrl()

    1.2  获取文件夹

    1.2.1  获取已经存在的文件夹路径 getExistingDirectory()

    1.2.2  获取已存在文件夹的url getExistingDirectoryUrl()

    2  基本操作

    2.1  构造函数

    2.2  接收模式

    2.2.1  获取接收模式 acceptMode()

    2.2.2  设置接收模式 setFileMode()

    2.3  信号

    2.4  默认后缀

    2.4.1  设置 setDefaultSuffix()

    2.4.2  获取 defaultSuffix()

    2.5  设置文件模式

    2.5.1  获取 fileMode()

    2.5.2  设置 setFileMode()

    2.5.3  QFileDialog.Directory 目录名称

    2.5.4  QFileDialog.ExistingFiles 零个或多个现有文件的名称

    2.6  设置名称过滤器

    2.6.1  设置一个名称过滤器 setNameFilter()

    2.6.2  设置多个名称过滤器 setNameFilters()

    2.7  显示信息的详细程度

    2.7.1  获取 viewMode()

    2.7.2  设置 setViewMode()

    3  设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)


    1  静态方法

    1.1  获取文件

    1.1.1  获取单个文件 getOpenFileName()

    可以直接创建

    默认是项目路径

    也可以传入参数

    • 父控件
    • 标题
    • 默认路径
    • 文件筛选 比如 .py .txt等
    • 默认文件筛选 如果不设置默认为第一个
    • 选项

    会返回一个元组

    在QFileDialog中有独有的选项,我们先不在这写,后面会介绍

    文件筛选字符串:

    • *,* 所有文件
    • *.txt 固定尾缀的文件,例为尾缀为txt的文件
    • hello.* 固定文件名的文件,例为文件名为hello的文件

    文件筛选可以有多个,用两个分号进行分割

    • 比如 *.*;;*.txt

    前面可以加一个名称

    • 比如 All file(*.*);;文本文档(*.txt)

    一个括号内,也可以有多种文件

    • 比如 All file(*.*);;文本文档(*.txt);;图片(*.jpg *.png)

    我们验证一下最复杂的文件筛选字符串 All file(*.*);;文本文档(*.txt);;图片(*.jpg,*.png)

    如果选图片的话经测试可以筛选出jpg和png

    我们现在回到我们刚刚写的代码

    拉到下面可以看到txt的文件

    如果点击右上角的叉或者取消

    现在我们点击 eula.1028.txt 这个文件,之后点击确定

    第一个是选择的文件,第二个是当前选择的过滤器中的内容

    1.1.2  获取多个文件 getOpenFileNames()

    可以直接创建

    默认是项目路径

    我们这次点两个文件

    之后点击打开

    也可以传入参数

    • 父控件
    • 标题
    • 默认路径
    • 文件筛选 比如 .py .txt等
    • 选项

    我们这次选一个文件

    之后点击打开

    选择一个文件的结果与QFileDialog.getOpenFileName相同

    1.1.3  获取文件的url getOpenFileUrl()

    可以直接创建

    运行后我们选择其中一个文件

    点击打开

    也可以传入参数

    • 父控件
    • 标题
    • 默认路径
    • 文件筛选 比如 .py .txt等
    • 选项

    选择一个文件点击打开

    1.1.4  获取多个文件的url getOpenFileUrls()

    可以带参数也可以不带参数,我们直接带参数选两个文件,之后点打开

    1.1.5  获得保存文件路径 getSaveFileUrls()

    可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存

    会提示文件已存在,是否替换

    点击 是 后

    此时对被覆盖的文档没有影响

    1.1.6  获取文件保存url getSaveFileUrl()

    可以带参数也可以不带参数,我们直接带参数选一个文件,然后点击保存

    会提示文件已存在,是否替换

    点击 是 后

    此时对被覆盖的文档没有影响

    当然我们也可以不选文件

    进入后,我们进入想保存的目录后,直接输入文件名

    之后点击保存

    此时指定目录下并没有创建123.txt这个文件

    1.2  获取文件夹

    1.2.1  获取已经存在的文件夹路径 getExistingDirectory()

    可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开

    在这个方法里是没有过滤器这个参数的

    运行后,我们选择一个文件夹,然后点击选择文件夹

    1.2.2  获取已存在文件夹的url getExistingDirectoryUrl()

    可以带参数也可以不带参数,我们直接带参数选一个文件夹,然后点击打开

    在这个方法使用了QUrl代替路径

    运行后,我们选择一个文件夹,然后点击选择文件夹

    2  基本操作

    2.1  构造函数

    可以带参数也可以不带参数,我们这里直接带参数来搞

    2.2  接收模式

    下面的代码涉及到一个变量叫QFileDialog.AcceptMode,其中有两个值可选

    • 0 - QFileDialog.AcceptOpen 打开
    • 1 - QFileDialog.AcceptSave 保存

    2.2.1  获取接收模式 acceptMode()

    默认情况下是打开模式

    2.2.2  设置接收模式 setFileMode()

    现在我们给他搞成保存模式

    • 注:一定要在open()等弹出方法之前设置

    2.3  信号

    我们给信号都连接一个槽函数

    由于设置了初始值,运行后就激活了三个信号

    我们将过滤器改为文本文档

    我们现在选中一个文件夹

    之后进入这个文件夹

    这时我们选中一个文件

    之后点击打开

    到此我们上面的九个信号都触发了一遍

    默认情况下是不能选择多个文件的,我们在下面的设置文件模式中进行介绍

    2.4  默认后缀

    我们在保存的时候,如果只输入文件名而不输入后缀的话会报错

    此时我们设置一个默认的后缀可以解决这个问题

    2.4.1  设置 setDefaultSuffix()

    此时我们直接输入123,之后点击保存就不会报错了

    2.4.2  获取 defaultSuffix()

    2.5  设置文件模式

    参数为 QFileDialog.FileMode ,可选值如下

    • 0 - QFileDialog.AnyFile 任何文件名称
    • 1 - QFileDialog.ExistingFile 单个现有文件名称
    • 2 - QFileDialog.Directory 目录名称
    • 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称

    2.5.1  获取 fileMode()

    默认为任何文件名称

    在这个框子里,只要输入值,我就能打开

    2.5.2  设置 setFileMode()

    2.5.2.1  QFileDialog.ExistingFile 单个现有文件名称

    我们输入一个1,然后点击打开

    会出现一个提示

    我们只能选择一个现有的文件,然后点击打开

    没有报错

    2.5.3  QFileDialog.Directory 目录名称

    运行之后是这样的

    随便选择一个文件夹,之后选择文件夹,没有报错

    • 0 - QFileDialog.AnyFile 任何文件名称
    • 1 - QFileDialog.ExistingFile 单个现有文件名称
    • 2 - QFileDialog.Directory 目录名称
    • 3 - QFileDialog.ExistingFiles 零个或多个现有文件的名称

    2.5.4  QFileDialog.ExistingFiles 零个或多个现有文件的名称

    运行后我们就可以选择多个文件了

    点击打开后,没有提示

    2.6  设置名称过滤器

    2.6.1  设置一个名称过滤器 setNameFilter()

    我们之前创建的

    现在我们改成别的

    运行之后

    2.6.2  设置多个名称过滤器 setNameFilters()

    2.7  显示信息的详细程度

    参数为 QFileDialog.ViewMode 可选的值为

    • 0 - QFileDialog.Detail 显示细节
    • 1 - QFileDialog.List 显示列表

    2.7.1  获取 viewMode()

    默认值为0

    2.7.2  设置 setViewMode()

    由于默认值为0,我们现在设置为1

    在windows下没有变化,不知道在别的系统里有没有变化

    3  设置指定角色的标签名称 setLabelText(QFileDialog.DialogLabel,str)

    第一个参数为 QFileDialog.DialogLabel,它的值可以为

    • QFileDialog.FileName 文件名称标签
    • QFileDialog.Accept 接收标签
    • QFileDialog.Reject 拒绝标签
    • QFileDialog.FileType 文件类型标签
    • QFileDialog.LookIn 查找标签

    运行之后我只能找到 文件目录,接受和拒绝的位置,另外两个位置找不到

    展开全文
  • QfileDialog类Detailed DescriptionQFileDialog类允许用户遍历文件系统,以选择一个或多个文件或目录。创建QFileDialog的最简单方法是使用静态函数。如:在上面的示例中,使用静态函数创建模式QFileDialog。 该...
  • 文章目录详细说明公共类型enum AcceptModeenum DialogLabelenum FileModeenum Optionenum ViewMode属性公共函数构造... QFileDialog Class QFileDialog类提供了一个对话框,允许用户选择文件或目录。 Header #inc
  • QT中QFileDialog文件读写另存为操作

    热门讨论 2013-01-24 16:34:04
    通过对QFileDialog控件的运用,实现了编辑文件并且保存,另存为功能,打开文件功能,均已成功实现
  • 实战PyQt5: 057-文件对话框QFileDialog

    千次阅读 2020-11-20 09:45:14
    QFileDialog简介 在前面的文章中,在保存和打开文件的时候,我们已经多次使用了QFileDialog,本文对QFileDialog相关功能做一详叙述。 QFileDialog控件提供了允许用户选择文件或者目录的对话框。它继承自QDialog, ...
  • 今天我无意在子线程中调用了QFileDialog类打开了一个窗口,发现程序正常执行了。我发现QMessageBox与QFileDialog都是集成自QDialog,但是一个是正常的一个不是。请问一下这个的原因是什么,是不是QFileDialog类比较...
  • 运行后打不开QfileDialog文件对话窗,闪退并报“Process finished with exit code 1073741845”。尝试调用QMessageBox结果同样。 不知道是哪里出了问题,希望各位能够指教指教。谢谢! 程序如下...
  • 上一篇文章介绍了如何使用QFile来对文件进行写操作,本文介绍文件路径选择对话框QFileDialog的使用以及将其和文件读操作结合在一起。 文件路径对话框 QFileDialog Qt提供了大量的对话框,其中比较常用的是QDialog,...
  • QFileDialog 选择多个文件或文件夹

    千次阅读 2022-04-20 14:55:13
    Qt提供了QFileDialog 用来选择文件或者文件夹,具体用法如下: #include <QDebug> #include <QFileDialog> // 选择一个或多个文件 void Dialog::on_pushBtn_Files_clicked() { // 快速选择一个文件 /...
  • QFileDialog提供了一个函数---setproxyModel。。就是用这个来玩了。就是overridefilterAcceptsRow的虚函数,里面定制自己的过滤需求。返回bool 下面就是判断是否是目录,只显示目录文件夹。#ifndef PROXY_MODEL_H#...
  • QFileDialog 文件路径选择 + QComboBox 下拉框选择 的实际应用,想要学习的可以看一看。
  • 【pyqt5学习】——对话框QDialog学习(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)
  • Qt 文件对话框 QFileDialog

    千次阅读 2020-12-10 14:52:24
    1. 获取单个文件夹路径 QString QFileDialog::getExistingDirectory 这是一个方便的静态函数,它将返回用户选择的现有目录。 [static] QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const...
  • 美化QFileDialog

    千次阅读 2018-09-18 19:08:06
    美化QFileDialog 文章目录美化QFileDialog效果图#简述思路代码篇工程文件结尾 效果图 #简述 在看Qt QFileDialog源码的时候,发现Qt自己做了一套文件管理框,UI如下;反之,Qt自己做了一套自己的UI文件,那么...
  • QFileDialog----构造函数

    2022-03-21 16:56:12
    1、QFileDialog----构造函数:通过构造函数直接构造文件选择对话框需要分开,通过各个方法单独设置某些操作。(例如设置文件模式、设置名称过滤器) from PyQt5.Qt import * class Window(QWidget): def __...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,770
精华内容 4,708
关键字:

qfiledialog