首先你需要知道右侧点击的是哪一个按键。其次是你需要知道当前是哪一个lineedit获取到焦点。
关于第一个问题,你可以用下面的方式来获取当前是点击的哪一个按键,来确定要插入什么数据到lineedit中:
关联你所有按键的released ()信号到一个槽里面。假设你的槽的名字叫 slotReleased ()
则有代码如下,从0到9 的按键都应该按下面的方式进行信号槽的连接
connect(ui->pushButton_0,SIGNAL(released ()),this,SLOT(slotReleased ()));
......
然后是slotReleased()槽的实现,在槽内部应获取是哪一个按键发出的信号,并获取按键上的文本内容,然后将内容插入到lineedit中
基本上就如同下面代码
void MainWindow::slotReleased()
{
//将信号发送给强制转换成QPushButton类型
QPushButton* p_pushBtn = qobject_cast<QPushButton*>(QObject::sender());
//获取到当前是哪一个lineEdit获取到键盘焦点事件,并插入按键上的文本
QLineEdit* p_editer = qobject_cast<QLineEdit*>(focusWidget());
p_editer->insert(p_pushBtn->text());
}
上面是比较简单的写法,可能会存在问题,并导致程序crash,不过基本上这样是最简单的实现方式。至于你的清除按键,则可以单独关联到另一个槽里面,主要用来清空当前获取到焦点事件的lineedit中的内容
[ 此帖被cutemmll在2011-05-10 10:59重新编辑 ]