QWSInputMethod详解
  注意:这个类不仅仅在嵌入式环境下有效
  一个输入法包括了过滤器和可选的图形界面,用来过滤服务器和客户端应用程序之间 的输入事件。
  创建自定义的输入法,需要得自QWSInputMethod类,并使用服务器的setCurrentInputMethod()函数来安装注册。
  当继承QWSInputMethod时,你可以重新实现filer()函数来处理物理的和虚拟的键盘还有鼠标设备的输入。
  为了到一次输入法查询的回复(使用sendQuery()函数发送),你必须重新实现queryResponse()函数,然而如果你想在预编辑文本处理鼠标事件,mouseHandler()  

  必须重新实现。重新实现updateHandler()函数来处理更新事件包括复位和焦点的变化。UpdateType枚举描述了各类被输入法认可的更新事件
  QSignalMapper
  信号的翻译和转换器,它可以把一个无参数的信号翻译成带int参数、QString参数、QObject*参数或者QWidget*参数的信号,并将之转发。

  下面来段代码实现过程
  //kk.h
  class MainWin:public QWidget
  {
    Q_OBJECT
    public:
    MainWIn(QWidget *parent = 0);
    private slots:
    void doClibked(const QString & btnname);//处理最终信号的槽
    private :
    QSignalMapper *signalMapper;
  }
  //kk.cpp
  MainWin::MainWIn(QStringList texts,QWidget *parent) : QWidget(parent)
  {
    QString buttontext = "btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10";//10个button
    QStringList texts=buttontext.split(",");
    signalMapper = new QSignalMapper(this);
    QGridLayout *gridlayout= new QGridLayout;
    for(int i=0;i<texts.size();++i)
    {
      QPushButton *button = new QPushButton(texts[i]);
      connect(button,SIGNAL(clicked()),signalMapper,SLOT(map()));//原始信号传递给signalmapper
      signalMapper->setMapping(button,texts[i]);//设置signalmapper的转发规则,转发为参数为QString类型的信号,并把texts[i]的内容作为实参传递。
      gridLayout->addWidget(button,i/3,i%3);//好屌的格式
    }
    connect(signalMapper,SIGNAL(mapped(const QString &)),this,SLOT(doClicked(const QString &)));//将转发的信号连接到最终的槽函数
    setLayout(gridLayout);
  }

  void MainWin::doClicked(const QString& btnname)
  {
    QMessageBox::information(this,"Clicked",btnname+"is clicked!");//显示被按下的btn名称
  }
  总结:
    1.首先将原始不带参数的信号连接到signalmapper的map槽函数,这样signalmapper能在第一时间接收到原始信号。
    2.其次用setMapper方法告诉signalmapper怎样去处理原始信号,在这个例子中是把原始限号转化为一个带QString参数的信号。
    3.最后接收转化后的带参数信号,这里把所转化后的信号与槽函数连接,在槽函数中获得需要的数据。
    4.功能核心是要建立一个从发出原始信号的object到需要的数据的映射(setMapper函数)
  2.将QT4.8.4中
    修改其中的触摸屏历程,功能不够需要添加英文字母按键。通过查看属性发现,其中按键的实现QPushButton来创建,这里以a键为例,a键对象名设置panelButton_a.
  需要注意的是,panelButton_a的focusPolicy属性默认为StrongFocus,改为NoFocus,否则键盘不能弹出。
  出自:http://blog.csdn.net/imxiangzi/article/details/50498505
  具体讲解:http://xl028.blog.163.com/blog/static/19973024220127276110749/

Qt之键盘讲解的更多相关文章

  1. Qt之键盘事件监听-实时响应大小写Capslock按键

    目录 一.开篇 二.效果展示 三.实现思路 1.重写QLlinEdit 2.全局应用程序事件 3.windows钩子 四.相关文章 原文链接:Qt之键盘事件监听-实时响应大小写Capslock按键 一 ...

  2. 【Qt】Qt Creator键盘快捷键速查

    附录 Qt Creator键盘快捷键速查 一般操作的键盘快捷键 操作 快捷键 操作 快捷键 打开文件或项目 Ctrl+O 新建文件或项目 Ctrl+N 在外部编辑器中打开 Alt+V,Alt+I 选择 ...

  3. 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置

    USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...

  4. qt软键盘输入

      characterapplicationsignalqt输入法object 1.从QInputContext派生自己的InputContext类 ,例如: class MyInputPanelCo ...

  5. Qt Creator键盘快捷键速查

    原地址:http://bbs.qter.org/forum.php?mod=viewthread&tid=904&extra=page%3D2 一般操作的键盘快捷键 操作 快捷键 操作 ...

  6. 【转】Qt鼠标键盘事件

    http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...

  7. QT之键盘事件

    Widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QKeyEvent> #incl ...

  8. QT 中 关键字讲解(emit,signal,slot)

    Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...

  9. Qt之QStringList讲解

    QStringList类提供了一个字符串列表 从QString继承而来,它提供快速索引为基础的接入以及快速插入和清除. 成员函数用于操作这个字符串列表如: append(),insert(),repl ...

随机推荐

  1. IE6、7绝对定位层被遮挡的原因(主要是父层决定的)

    最近做项目,经常遇到IE7以下浏览器中.一些悬浮框被一些元素遮挡的问题,这些元素一般都是设置了position的.问题的根本在不是被设置绝对定位的元素上,而是在设置了相对定位的父元素上.   我查阅了 ...

  2. python rabbitmq

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @author: zengchunyun ""& ...

  3. 使用RESTClient插件进行数据模拟(GET,POST)提交

    1:在Firefox中下载RESTClient插件安装 2:安装好后的界面 (chrome://restclient/content/restclient.html) 3:选择GET/POST,输入U ...

  4. sencha做个简单的登录界面

    很多人都在群里问要一个好看的登录界面,我表示很无奈,哪有好看的,每个人的要求不一样,要好看的只有自己做. 下面是我自己整理的一个通用版的登录界面,稍做修改,很容易能变成你想要的界面, 不说废话,直接上 ...

  5. c#中的math类

    http://wenku.baidu.com/link?url=TliiVtdB8IeO3wiM9mVSD-3wLZcLum7dsXlEZgSKawo6x-qvE_G3VL_yDa3ZQ_9ZFlGG ...

  6. 打造移动终端的 WebApp(一):搭建一个舞台

    最近随着 Apple iOS 和 Android 平台的盛行,一个新的名词 WebApp 也逐渐火了起来,这里我也趁着热潮做一个关于 WebApp 系列的学习笔记,分享平时的一些研究以及项目中的经验, ...

  7. angular.js学习笔记之一

    angular也是一个MVC框架,其中M即model模型表示服务器,V即view视图代表html代码,C即control控制器用来处理用户交互的部分.

  8. jQuery还原select下拉列表和清空input的值,回显下拉列表框的值

    实现用jQuery还原select下拉列表的值,用了很多种方式,花了一些时间,最后重要找到一种可以实现的方式, 页面上有这些内容 <select id ="level" na ...

  9. 房间安排-nyoj168

    描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至10月31日期间,在中国上海市举行.本次世博会也是由中国举办的首届世界博览会.上海世博会以“城市,让生活 ...

  10. modifiedvalues 主程序测试

    ##~ #-------------------------------------------------class InputFrame(wx.Frame):def __init__(self,t ...