Qt:坐标/鼠标/触摸
鼠标坐标
1. 窗口坐标( 相对于窗口)
Qpoint QMouseEvent::pos(); 或 x() 或 y()
2. 全局坐标( 相对于屏幕)
Qpoint QMouseEvent::globPos(); 或 screenPos();
int x = cursor().pos().x(); 或 globalX();
int y = cursor().pos().y(); 或 globalY();
3. 窗口坐标转全局坐标
mapToGlobal()
4. 全局坐标转窗口坐标
mapFromGlobal()
控件坐标
控件相对于父窗口的坐标:QPointQWidget::pos()
鼠标事件
1. 按下
void mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton) // 左键按下{}}
2. 移动
自动触发:setMouseTracking(true);
void mouseMoveEvent(QMouseEvent *event)
{if(event->buttons() & Qt::LeftButton){ }
}
3. 释放
void mouseReleaseEvent(QMouseEvent *event)
{}
4. 双击
void mouseDoubleClickEvent(QMouseEvent *event)
{}
5. 滚轮
void wheelEvent(QWheelEvent *event)
{if(event->delta() > 0)// 当滚轮远离使用者时{}else//当滚轮向使用者方向旋转时{}
}
触摸事件
设置窗口属性:setAttribute(Qt::WA_AcceptTouchEvents); // 窗口接受触摸事件
相对于窗口的位置:TouchPoint::pos()/lastPos()/lastScreenPos()
区域:TouchPoint::rect();
bool event(QEvent * event)
{switch (event->type()){case QEvent::TouchBegin: // 手指与触摸屏开始接触时{break;}case QEvent::TouchUpdate: // 手指与触摸屏接触过程中{break;}case QEvent::TouchEnd: // 手指离开触摸屏{QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);QList<QTouchEvent::TouchPoint> tpList = touchEvent->touchPoints(); // 触控点for (int i = 0; i < tpList.size(); i++){QTouchEvent::TouchPoint tp = tpList.at(i); // event里的数值在touchPoints里tp.lastPos();}event->accept();break;}default: break;}return QWidget::event(event);
}
焦点
当前窗口:QApplication::activeWindow()
当前窗口内的控件:QApplication::focusWidget()
QWidget *currentitem=QApplication::focusWidget();
if((currentitem!=NULL)&&(currentitem->inherits("QLineEdit"))) // 是否是某个类的实例
{QLineEdit *p=qobject_cast<QLineEdit *>(currentitem);
}
Qt:坐标/鼠标/触摸相关推荐
- qt linux实现鼠标位置自动移动,【已解决】qt中鼠标能显示但是无法移动
[问题] 在完成了Linux kernel中的对应的一个模拟鼠标的输入设备(input device)easypoint驱动后,验证了该驱动可以正常工作了,输入 cat /dev/input/even ...
- Qt QPainter鼠标绘制线条、矩形、多边形
Qt通过鼠标绘制线条.矩形.多边形本质都是根据鼠标的坐标位移,使用QPainter的自带的函数进行绘制.具体代码如下: graphicspainter.h #ifndef GRAPHICSPAINTE ...
- QT中鼠标的绝对位置和相对位置
参考 Qt获取鼠标位置(绝对位置.相对位置) https://blog.csdn.net/owen7500/article/details/51035078/ qt鼠标事件总结(坐标,跟踪,点击判断) ...
- QT中鼠标位置获取问题之event-globalPos()与pos()函数
QT中鼠标位置获取问题之event->globalPos()与pos()函数 标签: Qt 2015-01-03 19:41 820人阅读 评论(0) 收藏 举报 分类: Qt 版权声明:本文为 ...
- [转载]Qt之鼠标样式
原文地址:Qt之鼠标样式作者:一去丶二三里 Qt中可以自定义鼠标样式,无论是为了美观,还是遵从同行业标准,或者说是界面友好性都需要了解. 使用setCursor(Qt::CursorShape)来设置 ...
- [转载]Qt之鼠标样式_vortex_新浪博客
原文地址:Qt之鼠标样式作者:一去丶二三里 Qt中可以自定义鼠标样式,无论是为了美观,还是遵从同行业标准,或者说是界面友好性都需要了解. 使用setCursor(Qt::CursorShape)来设置 ...
- 【QT 5 设置自定义标题栏+学习:《QT实现鼠标拖动调整窗口大小》+基础样例】
[QT 5 设置自定义标题栏+学习:<QT实现鼠标拖动调整窗口大小>+基础样例] 1.说明 2.实验环境 3.实验目的 4.参考文章 5.实验步骤 (1)下载代码,运行没有错误. (2)加 ...
- QT 录制鼠标键盘回放
QT 录制鼠标键盘回放 前段时间因为朋友想要解放双手想要把一些操作录制回放 所以做了这个小项目 因为我目前运用的QT只能在程序中去记录鼠标跟键盘的操作 所以网上找了找方法 有钩子函数使用 所以运用了钩 ...
- Qt动画与Qt坐标小记
Qt动画 转载自: <http://jingyan.baidu.com/article/154b46315757b628ca8f4116.html> 和 <http://blo ...
最新文章
- oracle伪客户端的安装(oracle不安装客户端)
- 企业价值观念形成的四个阶段
- PHP中不用第三个变量交换两个变量的值
- 马宁的Windows Phone 7开发教程(3)——XNA下使用MessageBox和软键盘
- Vue——全局element-resize-detector监听DOM元素
- postgresql修炼之道_PostgreSQL内核开发学习资料
- 支付宝借呗还款利息为什么都不一样?
- C++11 委托构造函数
- python笔记:datetime模块中的函数
- 设计模式(9)——模板方法模式
- 【工业控制】基于matlab多变量动态矩阵预测控制(DMC)【含Matlab源码 1499期】
- java加密不可逆,32位不可逆加密算法Java实现
- java 多线程和spring之间的坑
- 游戏编程所需要的知识
- 思科CCNP在OSPF中设置LSA的简单命令汇总
- 抗击奥密克戎回忆录:“旌旗十万斩阎罗”,我再一次杨康了
- Notepad++的JsonViewer 插件安装失败的解决
- 计算机域名怎么查看?如何查看电脑域名?
- Jmeter读取excel表格数据响应数据乱码
- STM32F4基于DMA的多通道ADC采集——遇到的问题解决