3

SpinButtons に依存せずに、Gtk::Entry ウィジェットで数値入力のみを許可する方法を探しています。問題は、このテンプレート (リンク) を見つけたのですが、うまくいきません。他のコードに沿ってコンパイルできますが、インスタンスを宣言したい場合

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

それは私に言う

数値定数の前に「,」または「...」が必要です

2 番目の部分は、このエントリをパックする方法が明確にわからないということです。

ウィジェットに変換できません

使用時のエラー

functionname.pack_start(int_entry())

私は愚かなエラー (C++ と Gtkmm の初心者の組み合わせが悪い) があると思うので、助けていただければ幸いです。

4

2 に答える 2

3

数値のみを許可する 1 つの方法は、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);
}
于 2012-04-23T14:56:10.650 に答える