【发布时间】:2017-03-07 19:08:09
【问题描述】:
这显然是我自学计算机科学教育的一个漏洞......
wxWidgets 应用程序中的文本控件 (wxTextCtrl) 的构造函数有一个用于验证器对象的可选参数。所有代码示例都在文本控件的构造函数中动态创建验证器。
这行得通..
wxString value = L"0.0";
wxTextCtrl* _Text = new wxTextCtrl(this, wxID_ANY, value,
wxDefaultPosition, wxDefaultSize, 0,
wxTextValidator(wxFILTER_NUMERIC, &value));
但是在我的特殊情况下,我想在另一个函数中创建验证器并将其传回,但这是行不通的。作为中间步骤,我尝试在创建 wxTextCtrl 之前创建它并传入它,但这也不起作用......
wxString value = L"0.0";
wxValidator valid = wxTextValidator(wxFILTER_NUMERIC, &value);
wxTextCtrl* _Text = new wxTextCtrl(this, wxID_ANY, value,
wxDefaultPosition, wxDefaultSize, 0, valid);
虽然它可以编译并运行,但它不会执行验证。谁能解释一下为什么?
wxTextValidator 的原型需要一个常量引用。
wxTextCtrl::wxTextCtrl ( wxWindow * parent,
wxWindowID id,
const wxString & value = wxEmptyString,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0,
const wxValidator & validator = wxDefaultValidator,
const wxString & name = wxTextCtrlNameStr
)
【问题讨论】:
-
new wxTextCtrl()调用的第三个参数不同:value与_controls[name]。这是故意的吗? -
@TavianBarnes 不,这是一个错字,我已经修正了。