C++ 在Gtk::Entry小部件中强制输入数字

C++ 在Gtk::Entry小部件中强制输入数字,c++,gtkmm,C++,Gtkmm,我正在寻找一种可能的方法,只允许在Gtk::Entry小部件中输入数字,而不依赖于旋转按钮。问题是,我找到了这个()的模板,但它就是不起作用。我可以将它与我的其他代码一起编译,但是如果我想用 NumericEntry<int> int_entry(1,0,10); 我猜我的部分有一个愚蠢的错误(C++和Gtkmm NeBee的坏组合),所以任何帮助都是值得赞赏的。 < P>一个允许数字的方法是子类GTK::输入并重写OnApEntTyTrk()虚拟函数。在该虚拟函数中,您可以验证输

我正在寻找一种可能的方法,只允许在Gtk::Entry小部件中输入数字,而不依赖于旋转按钮。问题是,我找到了这个()的模板,但它就是不起作用。我可以将它与我的其他代码一起编译,但是如果我想用

NumericEntry<int> int_entry(1,0,10);

我猜我的部分有一个愚蠢的错误(C++和Gtkmm NeBee的坏组合),所以任何帮助都是值得赞赏的。

< P>一个允许数字的方法是子类GTK::输入并重写OnApEntTyTrk()虚拟函数。在该虚拟函数中,您可以验证输入的文本,并且仅在文本验证时调用基类的on_insert_text()

void NumberEntry::on_insert_text(const Glib::ustring& text, int* position)
{
    // allow only numbers to be entered
    if (contains_only_numbers(text))
        Gtk::Entry::on_insert_text(text, position);
}

哲学时刻:我从来不喜欢这样限制输入。如果我在剪贴板上已经有了我想要的数字,加上几个额外的字母,然后复制/粘贴它……那么我会删除这些数字吗?文本输入应该是文本输入——在继续之前检查它,如果不好就标记它——但不要编写破坏标准小部件行为的脆弱挂钩。你造成的问题比你解决的要多。谢谢你的这个想法,我会先看看我得到了什么。我对数字输入的推理是基于上下文的:用户应该给出酶的动力学数据,而这些数据总是纯数字的,所以我认为限制输入会更容易。当我们从思考如何限制输入转向思考如何处理输入时,我们可以用软件做更多的事情。例如:好的,我会看到我只是检查了小部件中的输入,谢谢你的帮助,很抱歉我有一段时间没有回复。有人能回答这个问题吗?如果有人正在努力定义“仅包含数字”函数
bool NumberEntry::只包含_个数字(const Glib::ustring&text){for(int i=0;i
void NumberEntry::on_insert_text(const Glib::ustring& text, int* position)
{
    // allow only numbers to be entered
    if (contains_only_numbers(text))
        Gtk::Entry::on_insert_text(text, position);
}