gpt4 book ai didi

c++ - 仅使用数值格式化 wx.TextCtrl - 浮点精度

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:20 24 4
gpt4 key购买 nike

我创建了一个简单的应用程序,它使用带有 wxFILTER_NUMERIC 的裸 TextCtrl 小部件,以便只接受数值(参见下面的代码)。

我希望这些值具有固定的显示精度,而不管用户如何输入它们(例如,在指定 17.0 或 17.000000 值的情况下将始终显示 17.0000)。我发现在 wxPython 中有一个选项可以使用派生的 NumCtrl 小部件(http://wxpython.org/docs/api/wx.lib.masked.numctrl-module.html)来完成这项工作,但我找不到它在基本的 wxWidgets 库中。

那么,有没有现成的解决方案,我根本找不到,或者我是否必须编写一个函数,在插入数字后手动更改数字的格式(处理 EVT_TEXT 和 EVT_TEXT_ENTER 事件并修改输入字符串)?

我目前拥有的:

事件表

BEGIN_EVENT_TABLE(MyFrame, wxFrame) 
EVT_MENU(ID_Quit, MyFrame::OnQuit)
EVT_MENU(ID_About, MyFrame::OnAbout)
EVT_TEXT(ID_textBox, MyFrame::ValueChanged)
EVT_TEXT_ENTER(ID_textBox, MyFrame::ValueChanged)
END_EVENT_TABLE()

MyFrame内部文本框的实现

wxPanel *panel = new wxPanel(this, -1);

_textBox1 = new wxTextCtrl(panel,
ID_textBox,
"0.0000",
wxPoint(100, 100),
wxSize(80,20),
wxTE_PROCESS_ENTER,
wxTextValidator(wxFILTER_NUMERIC,&_myValue),
wxTextCtrlNameStr);

处理函数

void MyFrame::ValueChanged(wxCommandEvent& WXUNUSED(event))
{
// modify the string or do something clever
}

采用的解决方案感谢回答,问题已经解决。这是我的做法:

`

wxFloatingPointValidator<double> _val(2,&_myValue,wxNUM_VAL_ZERO_AS_BLANK);
_val.SetRange(0.,100.); // set allowable range

_textBox1 = new wxTextCtrl(panel, // create a textCtrl
ID_textBox,
"0.0000",
wxPoint(100, 30),
wxSize(80,20),
wxTE_PROCESS_ENTER,
_val, // associate the text box with the desired validator
wxTextCtrlNameStr);

`

最佳答案

参见 wxFloatingPointValidator在 wxWidgets 2.9 中可用。

关于c++ - 仅使用数值格式化 wx.TextCtrl - 浮点精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com