Gtkmm文本输入过滤器

时间:2017-04-24 07:07:04

标签: gtk gtkmm

我现在正在进行Gtkmm GUI编程,我是这种编程语言的新手。 如何允许用户只在Gtkmm Entry文本框中输入数值。

1 个答案:

答案 0 :(得分:0)

您需要为条目添加密钥释放信号,例如这是我的条目" m_EntryAmount"

m_EntryAmount.signal_key_release_event().connect(sigc::mem_fun(*this, &Vente::entryKeyReleaseAmount));

并添加信号功能

bool Sales::entryKeyReleaseAmount(GdkEventKey* /* event */ )
{
    if(m_EntryAmount.get_text()!="" && is_number(m_EntryAmount.get_text()) ){ 
       //now the Entry is not empty and its a number
       //do what you want here 

    }else{

      //here the Entry is not a number you can just delete it
      m_EntryAmount.set_text("");
}
    return true;
}

并添加is_number函数

bool Vente::is_number(const string& s)
{
    return !s.empty() && std::find_if(s.begin(), 
        s.end(), [](char c) { return !std::isdigit(c); }) == s.end();
}

这只是一个简单的例子来说明这一点,你可以用自己的方式来做到这一点