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

标签 c++ gtkmm

我正在寻找一种可能的方法,只允许在 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/

相关文章:

c++ - 如何将数据(字符串、整数或枚举成员)与 Gtk::ComboBoxText 项关联?

c++ - GTKMM:Gtk TreeView 单元格中的 GtkPopOver

c++ - 音频-视频加密算法

c++ - g_main_loop 使用 100% CPU

c++ - 获取模拟 Cairo::Context 以测试路径上的条件

c++ - 我是否正确重构了 Qt Wiki 中的这个示例?

c++ - gtkmm 2.4 开罗时钟示例在修改为在 HBox 而不是主窗口内绘制时不起作用

c++ - 为什么 VS 和 gcc 在这里调用不同的转换运算符(const vs non-const)?

c++ - 有没有我可以直接获取地址的右值?

c++ - 简单的 openGL 程序无法通过编译