wxWidgets提供了下列通用对话框

wxWindows提供了下列通用对话框。

* wxFileDialog 一个存储或打开文件的对话框。
* wxColourDialog 一个选择颜色的对话框。
* wxFontDialog 选择字体的对话框。
* wxPrintDialog 用于打印与设置打印机的对话框。
* wxDirDialog 选择目录的对话框。
* wxTextEntryDialog 请求用户输入一行文本的对话框。
* wxMessageDialog 用于显示一行或多行信息,可包括OK,Yes,No,与Cancel按钮。
* wxSingleChoiceDialog 显示一个包含字符串列表的对话框,并且允许用户选择其中一个。
 
  

wxFileDialog

wxFileDialog 为用户提供一个当用户在打开或者储存一个文件时可以选择或者输入文件名的对话框。一个全局方法wxFileSelector同样可以用来让用户选择一个文件。详情请看章节 “wxFileSelector”. 构造函数

#include 
wxFileDialog(wxWindow* parent,
const wxString& message= "Choose a file",
const wxString& defaultDir= "",
const wxString& defaultFile= "",
const wxString& wildcard= "",
long style= 0,
const wxPoint& pos= wxDefaultPosition);

* parent 拥有这个对话框的窗口。
* message 对话框的标题。
* defaultDir 默认目录。
* defaultFile 默认文件名。
* wildcard 是一些类似 "*.*" or "*.txt"之类的字符串。这是用来过滤文件的。它的语法为 描述|后缀。例 "All files(*.*)|*.*|Text files(*.txt)|*.txt|Bitmap files(*.bmp)|*.bmp".
* style 对话框的类型。

表 4.1. wxFileDialog 风格

  • wxCHANGE_DIR 改变当前目录
  • wxFILE_MUST_EXIST 输入的文件必须存在
  • wxHIDE_READONLY 隐藏只读文件
  • wxMULTIPLE 只是一个打开对话框,允许选择多个文件。
  • wxOPEN 只是一个打开对话框。
  • wxOVERWRITE_PROMPT 当一个文件将被覆写时询问已确定。
  • wxSAVE 一个保存对话框。
  • pos 没有使用。

方法

public void SetDirectory(const wxString& dir);
public wxString GetDirectory();

设置与得到当前目录

public void SetFilename(const wxString& name);
public wxString GetFilename();

设置与得到当前文件名

public const void  GetFilenames(wxArrayString& files);

使用所选择的文件名来添充文件名数组。这个函数只用于wxMULTIPLE风格的对话框。其它的使用GetFilename。

public void SetFilterIndex(int filterIndex);
public int GetFilterIndex();

设置与得到给出的过滤器列表的索引。在对话框显示之前,这个索引决定对话框显示时首先使用的过滤器。在显示之后这个索引由用户选择。

public void SetMessage(const wxString& message);
public wxString GetMessage();

设置与等到新的对话框标题。

public void SetPath(const wxString& path);
public wxString GetPath();

设置与得到当前路径(目录与文件名)

public void SetStyle(long style);
public long GetStyle();

设置与得到对话框的风格,参看“Constructor”

public void  GetPaths(wxArrayString& paths);

用所选择的文件绝对路径名来填充路径数组。这个函数仅仅用于wxMULTIPLE风格的对话框。其它的使用GetPath。

public void SetWildcard(const wxString& wildCard); public wxString GetWildcard();

设置与得到wildcard参见“Constructor”

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。例

在第二章的文本编辑器例子中,使用ShowModal来显示一个对话框。”Modal”表示在对话框关闭之前程序的其它窗口不能得到焦点。使用ShowModal 显示对话框时,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。 GetFilename 是用来得到选择的文件的文件名。GetPath 将返回所选择文件的完整路径(目录与文件名)。在使用wxTextCtrl控件时加载与保存文件是非常简单的。方法 LoadFile 和 SaveFile分别用于加载与保存文件。

例 4.1. wxFileDialog的使用

void TextFrame::OnMenuFileOpen(wxCommandEvent &event)
{
wxFileDialog *dlg = new wxFileDialog(this, "Open a text file", "", "",
"All files(*.*)|*.*|Text Files(*.txt)|*.txt",
wxOPEN, wxDefaultPosition);
if ( dlg->ShowModal() == wxID_OK )
{
m_pTextCtrl->LoadFile(dlg->GetFilename());
SetStatusText(dlg->GetFilename(), 0);
}
dlg->Destroy();
}
void TextFrame::OnMenuFileSave(wxCommandEvent &event)
{
wxFileDialog *dlg = new wxFileDialog(this, "Save a text file", "", "",
"All files(*.*)|*.*|Text Files(*.txt)|*.txt",
wxSAVE, wxDefaultPosition);
if ( dlg->ShowModal() == wxID_OK )
{
m_pTextCtrl->SaveFile(dlg->GetPath());
SetStatusText(dlg->GetFilename(), 0);
}
dlg->Destroy();
}
 
  

wxFileSelector

wxFileSelector 弹出一个文件选择框。当用户忽略它时返回一个空字符串。

wxString wxFileSelector(const wxString& message,
const wxString& defaultPath= "",
const wxString& defaultFile= "",
const wxString& defaultExtension= "",
const wxString& wildcard= "*.*",
int flags= 0,
wxWindow* parent= NULL,
int x= -1,
int y= -1);
  • message 文件选择器的标题。
  • defaultPath 默认路径i
  • defaultFile 默认文件
  • defaultExtension 默认的后缀。当用户省略后缀时这个后缀将自动添加到文件后。当没有指定wildcard时,wxWindows自动附加一个过滤器。
  • wildcard (参见 wxFileDialog 构造函数).
  • flags 是对话框的风格。参见wxFileDialog 构造函数。不支持 wxMULTIPLE风格
  • parent 父窗口
  • x 选择器的x轴位置。
  • y 选择器的y轴位置。

例4.2 要求用户选择一个 JavaScript 文件。

例4.2. wxFileSelector的使用。

wxString selection = wxFileSelector("Open a Javascript file", "", "", "js",
"All files(*.*)|*.*|JavaScript Files(*.js)|*.js|Text Files(*.txt)|*.txt",
wxOPEN, this);
 
  

wxColourDialog

wxColourDialog实现了一个供用户选择颜色的窗口。WxColourDialog是与wxColourdata共同使用的。WxColourData是用来在对话框中设置当前颜色并用来得到选择的颜色。构造函数

#include 
wxColourDialog(wxWindow* parent,
wxColourData* data= NULL);
  • parent i是我们这个对话框的父窗口。
  • data 包含颜色信息。它包括默认颜色,定制颜色并且在windows之下你可以告诉它显示一个包含自定义颜色选择控件的填充对话框。
[ 编辑]

方法

public wxColourData& GetColourData();
[ 编辑]

得到与这个对话框关联的coloudata的引用。

public void  SetTitle(const wxString& title);
public wxString GetTitle();
[ 编辑]

设置或得到对话框的标题

public int ShowModal();
[ 编辑]

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。

wxColourData
[ 编辑]

这个类包含与wxColourDialog相关的信息。

构造函数
wxColourData();

默认构造函数
wxColourData(const wxColourData& data);
拷贝构造函数
[ 编辑]

方法

public void  SetChooseFull(bool flag);
public bool GetChooseFull();
[ 编辑]

在windows上,这个方法显示一个包含自定义颜色选择控件的对话框,默认值为true。

public void  SetColour(wxColour& colour);
public wxColour& GetColour();
[ 编辑]

设置或者得到选择的颜色。

public void  SetCustomColour(int i, wxColour& colour);
public wxColour GetCustomColour(int i);

设置或得到给定位置的自定义颜色。I必须在0与15之间。例

例4.3 为程序添加一个菜单项允许用户选择其它的背景颜色。当前的背景色被赋给colourData。如果程序是运行在windows下的话将显示一个填充对话框。

[ 编辑]

例4.3.wxColourDialog的使用

void TextFrame::OnMenuOptionBackgroundColor(wxCommandEvent &event)
{
wxColourData colourData;
wxColour colour = m_pTextCtrl->GetBackgroundColour();
colourData.SetColour(colour);
colourData.SetChooseFull(true);
wxColourDialog *dlg = new wxColourDialog(this, &colourData);
if ( dlg->ShowModal() == wxID_OK )
{
colourData = dlg->GetColourData();
m_pTextCtrl->SetBackgroundColour(colourData.GetColour());
m_pTextCtrl->Refresh();
}
dlg->Destroy();
}
[ 编辑]

wxGetColourFromUser

wxGetColourFromUser 显示颜色选择对话框并返回用户选择的颜色或者在用户取消对话框时返回一个无效的颜色。使用wxColour的OK方法来测试颜色是否有效。

wxColour wxGetColourFromUser(wxWindow* parent= NULL,

                            const wxColour& colInit= wxNullColour);
  • parent 选择器的父窗口。
  • colInit 初始颜色。

[ 编辑]

例4.4 要示用户选择一个颜色

例4.4. wxGetColourFromUser的使用

wxColour colour = wxGetColourFromUser();
if ( colour.Ok() )
{
// 用户选择的颜色
}
[ 编辑]

wxFontDialog

wxFontDialog是供用户选择字体的对话框。这个对话框与wxFontData,wxFont和wxColour 一起使用。WxFontData用于设置对话框内的当前字体并得到选择的字体。构造函数

#include 

wxColourDialog(wxWindow* parent,

              wxFontData* data= NULL);
  • parent 对话框的父窗口
  • data 包含字体信息。它包含默认字体、当前字体颜色等信息。

方法

public wxFontData& GetFontData();

得到与对话框关联的fontdata的引用。

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。

wxFontData
wxFontData();

默认构造函数

public void  EnableEffects(bool flag);
public bool GetEnableEffects();

在 Windows上, 指出是否使用字体效果比如下划线、斜体等。

public void  SetAllowSymbols(bool flag);
public bool GetAllowSymbols();

在 Windows上,指出是否可以选择符号字体。

public void  SetColour(const wxColour& colour);
public wxColour & GetColour();

设置或得到字体颜色。

public void  SetShowHelp(bool flag);
public bool GetShowHelp();

On 在windows上,指出是否显示”帮助“按钮。

public void  SetInitialFont(const wxFont& font);
public wxFont GetInitialFont();

得到或设置对话框使用的原始字体。

public wxFont GetChosenFont();

得到选择的字体。

public void  SetRange(int minRange,
int maxRange);

在windows上,指出字体大小最大与最小值。默认情况下为0到无限。例

Example 例4.5 为第二章的文本编辑器实现了一个新的菜单项来改变编辑器内的字体。首先fontdata用当前的字体与颜色填充,当程序在Windows上运行时,用户将看到帮助按钮。当用户选择了字体时,fontdata将被赋与新的字体与文本控件的前景色。

例4.5. wxFontDialog的使用

void TextFrame::OnMenuOptionFont(wxCommandEvent& event)
{
wxFontData fontData;
wxFont font;
wxColour colour;
font = m_pTextCtrl->GetFont();
fontData.SetInitialFont(font);
colour = m_pTextCtrl->GetForegroundColour();
fontData.SetColour(colour);
fontData.SetShowHelp(true);
wxFontDialog *dlg = new wxFontDialog(this, &fontData);
if ( dlg->ShowModal() == wxID_OK )
{
fontData = dlg->GetFontData();
font = fontData.GetChosenFont();
m_pTextCtrl->SetFont(font);
m_pTextCtrl->SetForegroundColour(fontData.GetColour());
m_pTextCtrl->Refresh();
}
dlg->Destroy();
}
[ 编辑]

wxPrintDialog

TODO. Constructor Methods Example wxDirDialog

wxDirDialog用来选择一个目录构造函数

  1. include

wxDirDialog(wxWindow* parent,

           const wxString& message= "Choose a directory",
const wxString& defaultPath= "",
long style= 0,
const wxPoint& pos= wxDefaultPosition);
  • parent 父窗口指针
  • message 标题
  • defaultPath 默认路径
  • style 不使用
  • pos 不使用

方法

public void  SetMessage(const wxString& message);
public wxString GetMessage();

得到与设置对话框标题

void  SetPath(const wxString& path);
public wxString GetPath();

得到与设置当前路径

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。例

例 4.6 显示了设置新工作目录的菜单动作的实现。WxGetCwd用来用户得到当前的工作目录。当用户选择一个目录时你可以使用GetPath方法来得到目录名。WxSetWorkingDirectory是用来设置新的工作目录。

例4.6. wxDirDialog的使用。

void TextFrame::OnMenuOptionDirectory(wxCommandEvent& event)
{
wxDirDialog *dlg = new wxDirDialog(this, "Select a new working directory", wxGetCwd());
if ( dlg->ShowModal() == wxID_OK )
{
wxSetWorkingDirectory(dlg->GetPath());
}
dlg->Destroy();
}
[ 编辑]

wxDirSelector

wxDirSelector 弹出一个目录选择框。

wxString wxDirSelector(const wxString& message,

                      const wxString& defaultPath= "",
long style= 0,
const wxPoint& pos= wxDefaultPosition,
wxWindow* parent= NULL);
  • message 标题
  • defaultPath 默认路径i
  • style 对话框的风格,参见wxDirDialogis
  • pos 对话框位置。
  • Parent 父窗口。

例4.7 要求用户选择一个文件夹。

例 4.7. Using wxDirSelector的使用

wxString selection = wxDirSelector("Select a folder");
if ( ! selection.empty() )
{
// The user selected a folder.
}
[ 编辑]

wxTextEntryDialog

wxTextEntryDialog 请求用户输入一行文本的对话框。构造函数

  1. include

wxTextEntryDialog(wxWindow* parent,

                 const wxString& message,
const wxString& caption= "Please enter text",
const wxString& defaultValue= "",
long style= wxOK | wxCANCEL | wxCENTRE,
const wxPoint& pos= wxDefaultPosition);
  • parent 父窗口。
  • message 对话框中显示的信息。
  • DefaultValue 默认文本。
  • caption 标题
  • style 对话框的风格。可以使用wxTextCtrl的风格。

Table表 4.2. wxTextEntryDialog 的风格styles

  • wxCANCEL cancel按钮
  • wxCENTRE 中央对话框
  • wxOK 显示OK按钮
  • pos 对话框的位置

方法

void  SetValue(const wxString& val);
public wxString GetValue();

得到与设置文本区域的值。Get/Set the value of the text field.

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。例

例 4.8 显示一个对话框提示用户输入一个密码。

例 4.8. wxTextEntryDialog的使用

wxTextEntryDialog *dlg = new wxTextEntryDialog(this, "Enter your password", "Enter your password", "", wxOK | wxCANCEL | wxCENTRE | wxTE_PASSWORD);
if ( dlg->ShowModal() == wxID_OK )
{
// Check the password
}
else
{
// Stop the application
}
dlg->Destroy();
[ 编辑]

wxGetTextFromUser

wxGetTextFromUser 弹出一个允许用户输入一些文本的对话框。

wxString wxGetTextFromUser(const wxString& message,

                          const wxString& caption= "Input text",
const wxString& defaultValue= "",
wxWindow* parent= NULL,
int x= -1,
int y= -1,
bool centre= true);
  • message 对话框中显示的信息。信息中可以包含换行符
  • caption 标题
  • defaultValue 默认文本。
  • parent 父窗口。
  • x 对话框的X轴位置
  • y 主轴位置。
  • centre: 当为真时对话框位于中央,其它情况为左对齐。

例4.9 要求用户输入一些文本。a

例4.9. wxGetTextFromUser的使用

wxString text = wxGetTextFromUser("Please, enter some text");
[ 编辑]

wxGetPasswordFromUser

wxGetPasswordFromUser 弹出一个输入密码的对话框。

wxString wxGetPasswordFromUser(const wxString& message,

                              const wxString& caption= "Input text",
const wxString& defaultValue= "",
wxWindow* parent= NULL);
  • message 对话框中显示的信息。信息中可以包含换行符
  • caption 标题
  • defaultValue 默认文本
  • parent 父窗口

Example例 4.10 要求用户输入密码

例4.10. wxGetPasswordFromUser的使用

wxString pwd = wxGetPasswordFromUser("Please, enter your password");
[ 编辑]

wxMessageDialog

wxMessageDialog 可以用来显示一行或多行信息,可以包含OK、Yes、No或者Cancel按钮。 Constructor构造函数

  1. include

wxMessageDialog(wxWindow* parent,

               const wxString& message,
const wxString& caption= "Message box",
long style= wxOK | wxCANCEL | wxCENTRE,
const wxPoint& pos= wxDefaultPosition);
  • parent父窗口。
  • message 对话框中显示的信息,可以是多行文本。
  • caption 标题。
  • style 对话框的风格。

表4.3. wxMessageDialog的风格。 styles

  • wxOK 显示OK button.
  • wxCANCEL 显示 Cancel button.
  • wxYES_NO 显示Yes 与 No 按钮.
  • wxYES_DEFAULT 与 wxYES_NO共同使用,可以让Yes按钮作为默认按钮。这是默认的行为。
  • wxNO_DEFAULT Used with 同wxYES_NO共同使用,让No按钮为默认。
  • wxCENTRE 让信息位于中央,不是窗口位于中央。
  • wxICON_EXCLAMATION 显示一个惊叹号图标。
  • wxICON_HAND 显示一个错误图标。
  • wxICON_ERROR 与上相同。
  • wxICON_QUESTION 显示问号图标。
  • wxICON_INFORMATION 显示信息(i)图标。
  • pos 对话框的位置。

Methods方法

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。例

Example 3.4 显示 wxMessageDialog 询问用户是否真的退出程序。

[ 编辑]

wxMessageBox

wxMessageBox 显示一个信息框。返回值为 wxYES, wxNO, wxCANCEL, wxOK中的一个 。

wxMessageBox(const wxString& message,

            const wxString& caption= "Message box",
int style= wxOK | wxCENTRE,
wxWindow* parent,
int x= -1,
int y= -1);
  • message 显示的信息。
  • caption 标题
  • style 风格。参见wxMessageDialog
  • parent 父窗口。
  • x x轴位置。
  • y y轴位置。

Note注意

在windows上本地的MessageBox函数是不使用wxCENTRE风格的。而在通用函数中是使用的。这是因为本地函数不能将文本居中。当通用函数使用时不显示符号。

[ 编辑]

wxSingleChoiceDialog

Constructor构造函数

  1. include

wxSingleChoiceDialog(wxWindow* parent,

                    const wxString& message,
const wxString& caption,
int n,
const wxString* choices,
char ** clientData= (char**) NULL,
long style= wxCHOICEDLG_STYLE,
const wxPoint& pos= wxDefaultPosition);
  • parent 父窗口。
  • message 对话框中显示的信息。
  • caption 标题。
  • n 条目编号。
  • choices 是一个字符串数组。
  • clientData
  • style 对话框风格。

表4.4. wxSingleChoiceDialog 风格

  • wxOK 显示 OK button.
  • wxCANCEL 显示 Cancel button.
  • wxCENTRE 在非Windows上将信息居中.
  • wxCHOICEDLG_STYLE wxOK | wxCANCEL | wxCENTRE
  • pos 对话框的位置。

Methods方法

public void SetSelection(int sel);

设置已选项

public int GetSelection();

返回已选项的索。

public wxString GetStringSelection();

返回已选项。

public int ShowModal();

显示对话框,当用户按下OK时返回wxID_OK。其它情况返回wxID_CANCEL。例

例子中显示一个对话框让用户选择自己所在的国家。

例4.11. wxSingleChoiceDialog的使用。

wxString countries[] = { "Belgium", "United Kingdom", "U.S.A.", "France" };
wxSingleChoiceDialog *dlg = new wxSingleChoiceDialog(NULL, "Where do you live?",
"Select a country",
4, countries);
if ( dlg->ShowModal() == wxID_OK )
{
wxMessageBox("You live in " + dlg->GetStringSelection());
}
dlg->Destroy();
[ 编辑]

wxGetSingleChoice

wxGetSingleChoice 显示 wxSingleChoiceDialog并返回选择的字符串。

wxString wxGetSingleChoice(const wxString& message,

                          const wxString& caption,
const wxArrayString& choices,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

wxString wxGetSingleChoice(const wxString& message,

                          const wxString& caption,
int n,
const wxString * choices,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

wxGetSingleChoiceIndex

wxGetSingleChoiceIndex 显示 wxSingleChoiceDialog 并返回选择的索引。当没有任何选项被选择时返回-1。

int wxGetSingleChoiceIndex(const wxString& message,

                          const wxString& caption,
const wxArrayString& choices,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

int wxGetSingleChoiceIndex(const wxString& message,

                          const wxString& caption,
int n,
const wxString * choices,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

wxGetSingleChoiceData

wxGetSingleChoiceData 显示wxSingleChoiceDialog 并返回与所选项关联的数据。

void* wxGetSingleChoiceData(const wxString& message,

                           const wxString& caption,
const wxArrayString& choices,
void ** client_data,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

void* wxGetSingleChoiceData(const wxString& message,

                           const wxString& caption,
int n,
const wxString * choices,
void ** client_data,
wxWindow * parent= (wxWindow *) NULL,
int x= -1,
int y= -1,
bool centre= TRUE,
int width= wxCHOICE_WIDTH,
int height= wxCHOICE_HEIGHT);

注意

wxCHOICE_WIDTH 的定义是 200, wxCHOICE_HEIGHT 的定义是150.

你可能感兴趣的:(wxWidgets提供了下列通用对话框)