QTableview 获取鼠标坐标的item(QModelIndex)
要实现的功能是QTableview中Item项上右键弹出菜单
这就必然要判断点击右键时鼠标指针是否在QTableView的Item上
如果是QTableWidget可以用itemAt来判断
QTableView通过查看文档 发现有个indexAt函数 返回QModelIndex
QModelIndex QTableView::indexAt(const QPoint & pos) const [virtual] Reimplemented from QAbstractItemView::indexAt(). Returns the index position of the model item corresponding to the table item at position pos in contents coordinates.
于是通过如下代码判断鼠标右键单击的时候,鼠标指针是否在item上
qDebug()<<ui->tableview->indexAt(ui->tableview->mapFromGlobal(QCursor::pos())).row();
可是发现一些问题:
当鼠标右键点击第一行的上边缘附近 返回0
点击第一行中间 返回1
点击最后一行中间就返回 -1
也就是说 点击行A的上边缘附近 返回的是A的上一行
只有点击行A的中间返回的才是A行
并不是 indexAt函数所描述的那样返回的是当前行
最后发现问题出在:
indexAt函数根据QPoint判断行的时候 是没有把 QTableView的表头去掉的 (HoriziotalHeader和VerticalHeader)
所以 隐藏表头后 就一切正常了
如果不愿意隐藏表头 我是用如下代码 解决的:
QPoint pt = ui->tableview->mapFromGlobal(QCursor::pos()); int height = ui->tableview->horizontalHeader()->height(); QPoint pt2(0,height); pt+=pt2; qDebug()<<ui->tableview->indexAt(pt).row();
现在debug输出就一切正常了(上面只是针对QtableView上面的horizontal表头不隐藏,如果竖直方向的也没隐藏,那么也要加上其宽度)。
以上就是我解决问题的过程。
转载于:https://www.cnblogs.com/wangjian8888/p/10272570.html
QTableview 获取鼠标坐标的item(QModelIndex)相关推荐
- python鼠标碰撞_获取鼠标指针测试item之间的碰撞
python海龟画图碰撞动画演示 """ 获取鼠标指针测试item之间的碰撞 这份源代码展示了如何实时获取鼠标指针坐标, 如何进行碰撞检测,这样用海龟画图模块制作游戏方便 ...
- matlab鼠标三维坐标点,Matlab获取鼠标坐标值的两种途径
第一种途径:ginput()函数 ginput提供了一个十字光标使我们能更精确的选择我们所需要的位置,并返回坐标值.函数调用形式为: [x,y] = ginput(n) [x,y] = ginput ...
- qt qlabel:获取当前坐标的rgb
在label中画图:继承QLabel类重写paintEvent事件画图 void Label::paintEvent(QPaintEvent *event) {QPainter painter;//用 ...
- 获取用户坐标的html,html5获取用户地理位置
可以通过H5的内置程序获得: if (navigator.geolocation) { var timeoutVal = 10 * 1000 * 1000; navigator.geolocation ...
- Windows核心编程_获取鼠标指定位置的RGB颜色值
Windows核心编程_获取鼠标指定位置的RGB颜色值 大家平常会见到很多屏幕取色工具,其原理都是获取鼠标位置的屏幕像素点颜色! 一般思路都是:获取鼠标位置,然后取出鼠标指向的屏幕像素点颜色! Get ...
- Unity 获取鼠标点击转换世界坐标
/// <summary> /// 获取鼠标点击坐标 /// </summary> Vector3 screenPosition;//将物体从世界坐标转换为屏幕坐标 Vecto ...
- python点击屏幕坐标_通过Python,如何获取鼠标在屏幕上的X、Y轴坐标点
最近在开发基于模拟器的微信自动添加好友工具时,需要获取模拟器中相应按钮,在当前屏幕中的X.Y轴坐标点.先前都是通过"Ctrl+Alt+A"截屏的方式 获取.如下图红框部分所示: 由 ...
- 实现获取鼠标在QtableView上的几行几列的方法
1 在Qt 设计师中右键QTableView槽函数,选中entered. 2 在构造函数中写上 ui->tableView->setMouseTracking(true);这样就可以获得Q ...
- 取得浏览器当前鼠标的X,Y坐标的JavaScript脚本及document元素的一些重要属性
原文地址: http://www.lvjiyong.com/item/qude-dangqian-shubiao-de-X-Y-zuobiao-37525 为了让鼠标移到小图上显示大图,我利用鼠标事件 ...
最新文章
- 美国国防部CIO:企业IT可考虑用开源做数据分析
- xlrd、xlwt操作execl表格
- 【白话科普】10s 从零看懂 H5
- Asp程序做页面的301跳转,使得cnasda.com跳转到www.cnasda.com
- $_server['php_self'] 漏洞,Discuz! $_SERVER['PHP_SELF'] XSS Vulnerability
- 一个简单的录音软件程序代码【C++】
- php varexport,PHP函数补完:var_export()
- SpringBoot部署Jar文件,瘦身优化指南!
- ASP.NET 2.0 – 善用DataSourceMode属性 (转自章立民CnBlogs)
- java 手机类测试
- Sketch 54 中文版发布 新增深色模式
- ftp linux登录的命令行,linux登录ftp:lftp命令
- U-Net论文阅读笔记
- 后端开发总结(3):代码健壮性:容错处理+测试
- 【codevs 2830】蓬莱山辉夜
- python控制风扇_树莓派 温度监控 PWM 控制风扇 shell python c 语言
- 百万级海量数据内存数据库和数据库的性能对比
- 学生用计算机该如何关闭,学生晚上回宿舍时,其在实验室的计算机主机应关闭,显示器一般不用关闭。()...
- 学习Autodock分子对接
- 冠科生物宣布加快获得用于大规模筛查检测板的ATCC和NIH优质细胞系