首页 > 编程知识 正文

qt触摸事件,qt模拟键盘事件

时间:2023-05-05 10:27:48 阅读:156489 作者:952

鼠标事件鼠标常用的事件包括按下鼠标、移动鼠标、移动鼠标、双击鼠标和鼠标滚轮事件。

ctdss想使用他们,但必须包括头文件。 #include QMouseEvent

试着改写一下方法:

受保护:语音保护事件(qmouseevent * event )概述; //鼠标按下事件voidmousemoveevent (qmouseevent * event ) override; //鼠标移动事件voidmousereleaseevent (qmouseevent * event ) override; //鼠标释放事件voidmousedoubleclickevent (qmouseevent * event ) override; //事件voidwheelevent (q wheel event * event ) override; //在鼠标滚轮事件下逐个分解。

事件voidmousepressevent (qmouseevent * event ) override; void mouse event : mousepressevent (qmouseevent * event )/用鼠标左键按if(event-button )==Qt:LeftButton ) else if (event-button (==Qt :3360 mid button ) /鼠标的

当然,可以使用参数event来判断按下了哪个鼠标按钮!

鼠标左键: Qt:LeftButton

鼠标中键: Qt:MidButton

鼠标右键: Qt:RightButton

请参考更多qt帮助文档。

鼠标移动事件voidmousemoveevent (qmouseevent * event ) override; 当鼠标在表单上移动时,将调用void mouse event : mousemove event (qmouseevent * event ) {} jmdys。 但是,为了节约功耗,必须按下鼠标,然后启动此函数。

如果需要,可以在不按鼠标按钮的情况下触发鼠标移动事件。 我看了看网,说:“在小部件中,可以在构造函数中添加这个词。 this-setmousetracking(true ) "

这样就可以完美地解决这样的问题。 具体是不是,我没有自己尝试!

当然,这种方式在主窗口中没有关系。 在internet上,请使用设置跟踪(true )打开qmainwindow centrol构件的移动监视。 然后打开QMainWindow的设置跟踪(true )的监视。

ui.central构件-设置跟踪(true; this-setmousetracking(true ); 但是,我试了一下,但是我这里不用,所以不知道发生了什么。 (继承父类的主窗口。 我查了很多博客,介绍说添加上面两行代码就可以解决了。 所以没办法。 如果有谁朋友知道解决方法的话,请在评论区告诉我。 谢谢你。

当然,也可以通过参数event判断按下了哪个鼠标按钮。

鼠标释放事件voidmousereleaseevent (qmouseevent * event ) override; 按下并释放鼠标时,将触发void mouse event : mousepressevent (qmouseevent * event ) }此函数。

释放左键、右键、中间键即可触发。

当然,也可以通过参数event判断按下了哪个鼠标按钮。

事件voidmousedoubleclickevent (qmouseevent * event ) override; 双击鼠标将触发void mouse event :3360 mousedoubleclickevent (qmouseevent * event ) }此函数。

触发左键单击、右键单击、中间双击。

当然,也可以通过参数event判断按下了哪个鼠标按钮。

鼠标滚轮事件voidwheelevent (q wheel event * event ) override; void mouse event 3360: wheel event (q wheel event * event ) }一些鼠标事件常用函数Qt::MouseButton button() const

event-button () :返回触发事件的按钮

QPoint QMouseEvent::globalPos() const

event-globalPos () :返回发生事件时鼠标光标的全局位置。

注意:他的(0,0 )坐标是

电脑窗体的左上角,获取的坐标是基于整个电脑窗体的。

QPoint pos() const
event->pos() :返回鼠标光标相对于接收事件的小部件的位置。
也即是说,他的(0, 0)坐标是运行窗体的左上角,获取的坐标是窗体中的坐标。

键盘事件

键盘事件有两个,键盘按下事件与键盘释放事件。

ctdss想使用他们,需要包含头文件:#include <QKeyEvent>

并重写一下方法:

protected:void keyPressEvent(QKeyEvent *event) override;// 键盘按下事件void keyReleaseEvent(QKeyEvent *event) override;// 键盘释放事件

需要注意的是

回车键是Qt::Key_Return如需按下修饰键,需要使用modifiers()方法进行返回按下的修饰键。
alt键:Qt::AltModifier ctrl键:Qt::ControlModifier shift键:Qt::ShiftModifier
还有许许多多的修饰键与按键,可参考qt帮助文档。

下面将一一分解。

键盘按下事件 void keyPressEvent(QKeyEvent *event) override;void KeyEvent::keyPressEvent(QKeyEvent *event) {// 按下修饰键,且按下的键时ctlrif (event->modifiers() == Qt::ControlModifier) {if (event->key() == Qt::Key_Left) {// 左键按下} else if (event->key() == Qt::Key_Right) {// 右键按下} else if (event->key() == Qt::Key_Up) {// 上键按下} else if (event->key() == Qt::Key_Down) {// 下键按下}} }

监听键盘事件,当有键盘键按下时便会触发。
使用key()函数返回当前按下的键,进行判断具体按下了键盘哪个键。
modifiers()返回修饰键。

键盘释放事件 void keyReleaseEvent(QKeyEvent *event) override;void KeyEvent::keyReleaseEvent(QKeyEvent *event) {}

键盘按下松开后便会触发此函数。
键盘按下事件有的功能,键盘释放事件都有!

几个键盘事件常用函数

int QKeyEvent::key() const
event->key() :返回被按下或释放的键的代码。
也就是说,按下哪个键,就返回哪个键。

Qt::KeyboardModifiers QKeyEvent::modifiers() const
event->modifiers() :返回事件发生后立即存在的键盘修饰符标志。
例如alt键,ctrl键,shift键。

QString QKeyEvent::text() const
event->text() :返回此键生成的Unicode文本。
也就是说返回键盘按下的文本。

总结:
鼠标事件与键盘事件都有着丰富的枚举来支持着,他们符合一定的条件便会触发。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。