![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
3.2 软键盘实现
如图3所示,首先建立了足项目要求的软键盘的基本模型,接下来要实现的就是当按键响应时能够读出键盘值并将其发送出去,具体实现的流程如图4所示。
图4中,初始化按键时,可以使用QSignalMapper类来捆绑不同按键所发送的一系列无参数信号,并将其转发为有参数的信号:
QSignalMapper*mapper=new QSignalMapper(this);
QSignalMapper的主要应用为可以实现一个函数响应不同按钮的功能,下面举例来说明图4的具体实现过程:
首先设置软键盘界面名称为ui,然后以数字键"1"为例:将在图3中数字键1对应的按键名称设为:n1,在图4中的第(1)步中,建立键值"1"所对应的映射,代码如下:
mapper->setMapping(ui.n1,"1");
接着,在图4中的第(2)步,需要建立键值clicked对应的信号与槽之间的关系代码如下:
connect(ui.n1,SIGNAL(clicked()),mapper,SLOT(map()));
最后,将所需要用到的字母或者数字通过上述方式连接到槽函数中。如图4中的(3),将这些所要求得到的字母或者数字发送给焦点控件,代码如下:
connect(mapper,signal(mapped(const QString&)),im,slot(sendcontent(const QStling&)))
上面语句中sendcontent()函数为发射子函数,具体代码如下:
sendCommitString(content); (1)
content.clear(); (2)
语句(1)将焦点控件内的字母和数字发送出去,语句(2)清除发送框中的字母和数字,供下一次使用。
可以采用同样的方式,对软键盘中其它的按键进行映射函数和连接函数的编写,然后在arm-linux-gcc环境下编译,生成可以在arm板上运行的二进制文件。 |
|