如何在QT里使用Maliit软键盘

如何在QT里使用Maliit软键盘,第1张

在tools/inputpannel,可以在这个基础上修改出各种软键盘。但需要注意的是,如果需要在模态窗口中使用软键盘,需要把按键窗口也设置成模态的。

在QT5.X时代,inputpanel使用的InputContext类已经不存在了,取而代之的是QPlatformInputContext,输入法变成了一个插件,可以自己编写这个插件

1.新建Qt Gui应用,项目名称为myEvent,基类更改为QWidget,类名为Widget。

2.完成项目创建后,在设计模式向界面上拖入一个Push Button。

3.在widget.h文件添加鼠标按下事件处理函数声明:

protected:

void mousePressEvent(QMouseEvent *)

4.到widget.cpp文件中先添加头文件包含:

#include <QMouseEvent>

然后在下面添加函数的定义:

void Widget::mousePressEvent(QMouseEvent *e)

{

ui->pushButton->setText(tr("(%1,%2)").arg(e->x()).arg(e->y()))

}

这里的arg()里的参数分别用来填充%1和%2处的内容,arg()是QString类中的一个静态函数,使用它就可以在字符串中使用变量了。其中x()和y()分别用来返回鼠标光标所在位置的x和y坐标值。这样,当鼠标在界面上点击时,按钮就会显示出当前鼠标的坐标值。效果如下图所示。

除了鼠标按下事件,还有鼠标释放、双击、移动、滚轮等事件,其处理方式与这个例子是相似的。

二、键盘事件

1.首先在widget.h中添加protected函数声明:

void keyPressEvent(QKeyEvent *)

2.然后到widget.cpp中添加头文件包含:

#include <QKeyEvent>

3.最后添加键盘按下事件处理函数的定义:

void Widget::keyPressEvent(QKeyEvent *e)

{

int x = ui->pushButton->x()

int y = ui->pushButton->y()

switch (e->key())

{

case Qt::Key_W : ui->pushButton->move(x, y-10)break

case Qt::Key_S : ui->pushButton->move(x, y+10)break

case Qt::Key_A : ui->pushButton->move(x-10, y)break

case Qt::Key_D : ui->pushButton->move(x+10, y)break

}

}

这里我们先获取了按钮的位置,然后使用key()函数获取按下的按键,如果是指定的W、S、A、D等按键时则移动按钮。所有的按键都在Qt::Key枚举变量中进行了定义,大家可以在帮助文档中进行查看。

结语

1.Widget.h中加入以下方法,这个方法是系统自带的

void keyPressEvent(QKeyEvent * event)

登录后复制

2.Widget.cpp

void Widget::keyPressEvent(QKeyEvent * event)

{

event->accept()

qDebug()<<event->key()

if(event->key() == Qt::Key_Return)

{

qDebug()<<"按下了回车键"

}

}

登录后复制

3.运行程序,按下键盘就能看到打印的键盘keycode

4.有时候主ui上面会有其他控件,会出现抢走键盘事件的情况,导致按下键盘没反应。比如ui上面有一个TableWidget

5.此时在Widget.cpp的初始化函数里面添加


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11198686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存