我现在正在进行Gtkmm GUI编程,我是这种编程语言的新手。 如何允许用户只在Gtkmm Entry文本框中输入数值。
答案 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();
}
这只是一个简单的例子来说明这一点,你可以用自己的方式来做到这一点