我正在寻找一种可能的方法,只允许在 Gtk::Entry 小部件中输入数字,而不依赖于 SpinButtons。问题是,我为此找到了一个模板 ( link ),但它不起作用。我可以将它与我的其他代码一起编译,但是如果我想用
声明一个实例NumericEntry<int> int_entry(1,0,10);
它告诉我
expected ‘,’ or ‘...’ before numeric constant
第二部分是,我不清楚如何打包这个条目,因为我得到了一个
can't convert to widget
使用时出错
functionname.pack_start(int_entry())
我想我的部分有一个愚蠢的错误(C++ 和 Gtkmm 新手的错误组合),所以任何帮助都将不胜感激。
最佳答案
一种只允许数字的方法是继承 Gtk::Entry 并覆盖 on_insert_text() 虚函数。在该虚函数中,您可以验证输入的文本,并且仅在文本验证时调用基类的 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);
}
关于c++ - 在 Gtk::Entry 小部件中强制输入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279579/