关于QButtongroup问题
我想做的是一个数字键盘,点击一下数字,lineedit就会显示出来,于是我用了QButtongroup,因为它能给每个按钮设置一个数字id,但是我一点击1数字键,lineedit就出现1,但是我再点击2的时候,1没了,2就出来,我想问一问如何解决这个方法。
顺便问一下,因为这个数字键盘就像手机一样,我想它同时具备输入字母的功能,请问怎样才能实现。
[解决办法]
你的lineedit是怎么来设置数字的呢?setText()么? setText()是会把原来的覆盖的, 用append();就不会把原来的覆盖了。
如果想要字母的话,这样按键就非常多了,所以还是通过给按钮添加事件处理器来实现会比较好。
当然你也可以把所有的按钮绑定到同一个槽函数,然后再槽函数里面,通过这样来实现:
func()
{
QString str = QObject::sender()->objectName();
if(str.compare("A") == 0)
{
lienedit->append("A");
}else if(str.compare("B") == 0)
{
lienedit->append("B");
}
}
这个的缺点就是要写非常多的else if。
或者可以直接这样
func()
{
QString str = QObject::sender()->objectName();
lienedit->append(str);
}
这个的缺点就是不能使用数字了,因为书不能给按钮取名为数字的。
终极方法:
结合上面两种方法,数字用第一种方法,把数字按钮绑定到第一个槽函数,字母用第二种方法,把字母按钮绑定到第一个槽函数,这样就轻松搞定了。
这里就可以不需要用事件处理器了,个人感觉事件处理器用不来。