Qt之键盘讲解
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之键盘讲解的更多相关文章
- Qt之键盘事件监听-实时响应大小写Capslock按键
目录 一.开篇 二.效果展示 三.实现思路 1.重写QLlinEdit 2.全局应用程序事件 3.windows钩子 四.相关文章 原文链接:Qt之键盘事件监听-实时响应大小写Capslock按键 一 ...
- 【Qt】Qt Creator键盘快捷键速查
附录 Qt Creator键盘快捷键速查 一般操作的键盘快捷键 操作 快捷键 操作 快捷键 打开文件或项目 Ctrl+O 新建文件或项目 Ctrl+N 在外部编辑器中打开 Alt+V,Alt+I 选择 ...
- 【Linux开发】【Qt开发】Qt界面键盘、触摸屏、鼠标的响应设置
USB键盘 经过一番搜索,发现对Qt键盘的支持主要关系到两个方面: 1. 键盘类型确定: 4.7以前的Qt版本,如果是PS2圆孔键盘,Qt编译时需加上选项:-qt-kbd-vr41xx(未测试):如果 ...
- qt软键盘输入
characterapplicationsignalqt输入法object 1.从QInputContext派生自己的InputContext类 ,例如: class MyInputPanelCo ...
- Qt Creator键盘快捷键速查
原地址:http://bbs.qter.org/forum.php?mod=viewthread&tid=904&extra=page%3D2 一般操作的键盘快捷键 操作 快捷键 操作 ...
- 【转】Qt鼠标键盘事件
http://blog.csdn.net/lovebird_27/article/details/50351336 Qt 程序需要在main()函数创建一个QCoreApplication对象,然后调 ...
- QT之键盘事件
Widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QKeyEvent> #incl ...
- QT 中 关键字讲解(emit,signal,slot)
Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法.作为一种通用的处理机制,信号与反应槽非常灵活,可以携 ...
- Qt之QStringList讲解
QStringList类提供了一个字符串列表 从QString继承而来,它提供快速索引为基础的接入以及快速插入和清除. 成员函数用于操作这个字符串列表如: append(),insert(),repl ...
随机推荐
- javascript原型方法
function createXMLHttp() { if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window. ...
- Maching Learning 学习资料
A星(A*, A Star)算法详解 CSDN技术主题月----“深度学习”代码笔记专栏 UC Berkeley CS188 Intro to AI
- Sqoop_ 简单介绍
一.基本作用 概念: Sqoop被称为协作框架,是在Hadoop.2.X生态系统的辅助型框架,简单说,就是一个数据转换工具,类似的协作框架有文件收集库框架Flume,任务协调框架Oozie,大数据We ...
- odoo报表条码无法显示解决[转]
当服务器为Linux(Ubuntu)时,ODOO打印的报表上是有条码的,却显示空白框框.问题在于服务器上没有安装条码的字体,reportlab渲染条码图形失败,导致显示不正常. 将附件中的字体下载,解 ...
- set的用法
set提供一个不重复元素的集合,一般不能直接修改元素.因为这样可能会造成重复元素因此必须删除旧元素,再插入新元素.看下面程序:分析每句的功能.#include<set>#include&l ...
- spring security LDAP获取用户信息
很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息. 首先在pom.xml中添加ldap所需的依赖. <dependency& ...
- 【iCore3 双核心板_FPGA】实验二十二:Niosii——固化程序到 EPCS 里
实验指导书及代码包下载: http://pan.baidu.com/s/1c2lyNQS iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 服务器(Liunx)打包发布java web工程
Liunx服务器上打包发布web工程(开发工具Idea) 1.首先使用Idea自带的打包功能(点击package打包) 2.然后链接到服务器(我这里用的是Xshell链接工具) 3.将打好的war包传 ...
- C#网络编程之--TCP协议(一)
TCP 是面向连接的传输协议 面向连接,其实就好比,A打电话给B,如果B接听了,那么A和B之间就的通话,就是面向连接的 TCP 是全双工的传输协议 全双工,这个理解起来也很简单,A打电话给B,B接听电 ...
- You and Your Research(Chinese)
转自:http://lyxh-2003.iteye.com/blog/434014 这是大科学家Richard Hamming的著名讲演,于1986年在贝尔通讯研究中心给200多名Bellcore的科 ...