返回介绍

8.2 文件和目录对话框

发布于 2025-03-08 15:26:46 字数 3670 浏览 0 评论 0 收藏 0

如果想让用户选择文件和目录,你可以使用下面这两种对话框:wxFileDialog 和 wxDirDialog。

wxFileDialog

wxFileDialog 用来让用户选择一个或多个文件.它还有一个专门用来打开文件或者保存文件的变体。

下图演示了 windows 平台上文件对话框的样子:

GTK+ 版本:

GTK+ 2.4 以上版本:

Mac Os X 版本:

创建一个文件对话框需要传递的参数包括一个父窗口,一个显示在对话框标题栏的消息文本,默认的目录,默认文件名,通配符,对话框类型和显示位置(有些平台上忽略这个参数).然后调用其 ShowModal 函数并且判断函数返回值,如果返回值为 wxID_OK 则表明用户确认了文件的选择。

目录名和文件名组成一个文件全路径.如果目录名为空,则默认为当前工作目录,如果文件名为空,则没有默认文件名。

通配符用来确定哪种类型的文件应该显示在对话框中.通配符可以用"|"分割多种文件类型,并且可以提供文件类型的描述文字,具体格式如下所示:

BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif

如果在文件名文本区输入一个带有通配符("*","?") 的文件名,然后点确定按钮,将会导致只有符合这个通配名的文件名被显示。

wxFileDialog 的类型

如下表所示:

wxSAVE指定为一个保存文件对话框。
wxOPEN指定为一个打开文件对话框(默认行为)。
wxOVERWRITE_PROMPT对于保存文件对话框,如果目标文件已经存在,则提示是否覆盖。
wxFILE_MUST_EXIT用户只能选择已经存在的文件。
wxMULTIPLE用户可以选择多个文件。

wxFileDialog 的成员函数

Getdirectory 返回默认的目录名或者单选文件对话框中选中文件的所在的目录名,使用 SetDirectory 设置默认目录。

GetFilename 返回不包括目录部分的默认文件名或者单选文件对话框中选中的文件的文件名.使用 SetFilename 设置默认文件名。

GetFilenames 使用 wxArrayString 类型返回多选文件对话框中所有选中的文件名.通常,这些文件名是不含有路径的,但是在 windows 平台上,如果选中的是一个快捷方式文件,windows 可能会增加上一个全路径,因为应用程序无法通过通过增加当前的目录的方式来得到其全路径.使用 GetPaths 可以得到包含全路径在内的已选中文件的列表。

GetFilterIndex 用来返回默认的基于 0 的过滤器的索引.过滤器通常以一个下拉框的方式显示.使用 SetFilterIndex 设置默认的过滤器索引。

GetMessage 返回对话框的标题文本. 使用 SetMessage 函数来设置标题文本。

GetPath 以全路径的方式返回单选文件框中默认文件或者选中文件名.对于多选框,应使用 GetPaths 函数。

GetWildcard 返回指定的通配符, SetWildcard 用来设置通配符。

wxFileDialog 例子

下面的代码用来创建和显示一个用来打开 BMP 或者 GIF 类型文件的对话框:

#include "wx/filedlg.h"
wxString caption = wxT("Choose a file");
wxString wildcard =
   wxT("BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif");
wxString defaultDir = wxT("c:\\temp"));
wxString defaultFilename = wxEmptyString;
wxFileDialog dialog(parent, caption, defaultDir, defaultFilename,
    wildcard, wxOPEN);
if (dialog.ShowModal() == wxID_OK)
{
    wxString path = dialog.GetPath();
    int filterIndex = dialog.GetFilterIndex();
}

wxDirDialog

wxDirDialog 用来让用户选择一个本地或者网络文件夹.如果在构造函数中设置了可选类型 wxDD_NEW_DIR_BUTTON,则对话框将显示一个用来创建新文件夹的按钮。

下图演示了 windows 平台上的目录对话框的样子,这是 windows 系统提供的原生控件:

linux 平台上通常使用 GTK+版本的 wxDirDialog,如下图所示:

Mac 平台上的 wxDirDialog 和文件选择对话框非常相似,如下图所示:

创建一个目录对话框需要传递的参数包括:一个父窗口,一个标题文本,一个默认路径,一个窗口类型以及一个位置和大小(最后两个参数在某些平台上被忽略),然后调用 ShowModal 函数,判断返回值是否为 wxID_OK 以确定用户是否进行了选择。

wxDirDialog 成员函数

SetPath 和 GetPath 用来获得和设置用户选择的目录。

SetMessage 和 GetMessage 用来获取和设置标题文本。

wxDirDialog 使用举例

#include "wx/dirdlg.h"
wxString defaultPath = wxT("/");
wxDirDialog dialog(parent,
    wxT("Testing directory picker"),
    defaultPath, wxDD_NEW_DIR_BUTTON);
if (dialog.ShowModal() == wxID_OK)
{
    wxString path = dialog.GetPath();
    wxMessageBox(path);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文