QTableWidget 空单元格,忽略点击事件
2017-03-21 16:31
1296 查看
空单元格:设置QTableWidget列数为2,插入一条数据,会插入一行(2个单元格),但实际上本次只需要一个单元格,因此,有一个是空单元格,并没有数据。鼠标点击空单元格,还会触发单元格的点击事件,展示点击效果(如:背景色变换等),因此需要忽略空单元格的点击事件。
在网上找到一种方法:使用 itemAt 可以获得当前鼠标点击时的坐标所在的item指针。
但是尝试过后发现,item指针总是返回NULL,因为我的QTableWidget单元格中嵌入的是控件,不知道是不是控件影响的,因此排除这种方式。
最后发现可以利用:QModelIndex获取鼠标所在 row、column,那么(重写QTableWidget 的 mousePressEvent函数):
注意:if 判断中需要使用cellWidget而不是item,这里需要注意,原因上面已经说过。
在网上找到一种方法:使用 itemAt 可以获得当前鼠标点击时的坐标所在的item指针。
但是尝试过后发现,item指针总是返回NULL,因为我的QTableWidget单元格中嵌入的是控件,不知道是不是控件影响的,因此排除这种方式。
最后发现可以利用:QModelIndex获取鼠标所在 row、column,那么(重写QTableWidget 的 mousePressEvent函数):
void mousePressEvent(QMouseEvent *event) { // 鼠标左键按下 if (event->button() == Qt::LeftButton) { // 获取当前鼠标坐标 QPoint point = event->pos(); // 根据鼠标坐标,获取此时鼠标按下时所在的行、列 QModelIndex index = this->indexAt(point); // 判断该单元格是否是空单元格 if (this->cellWidget(index.row(), index.column()) == NULL) { return ; } } QTableWidget::mousePressEvent(event); }
注意:if 判断中需要使用cellWidget而不是item,这里需要注意,原因上面已经说过。
相关文章推荐
- Qt QTableWidget 点击事件 重复问题的解决
- 在QT中通过键盘事件过滤,改变QTableWidget的键盘导航行为
- qt Qtablewidget某些单元格的控件不显示
- jqgrid标题换行、隐藏滚动条、重新提交数据加载页面、单元格绑定点击事件
- QT QTableWidget中实现整行选中和禁止编辑单元格
- UIView添加手势 然后UITableView 添加进这个View 导致UITableView 的单元格点击事件无效
- EasyUI TreeGrid编辑单元格的点击事件和赋值
- Fragment容易忽略的错误,点击击穿,实现下面的fragment的点击事件。
- QTableWidget 点击标题栏 设置排序
- EasyUI TreeGrid编辑单元格的点击事件和赋值
- QT QTableWidget中实现整行选中和禁止编辑单元格
- 取消单元格的点击事件
- EasyUI TreeGrid编辑单元格的点击事件和赋值
- 单元格点击事件
- 界面更新android 转载 widget点击事件界面更新
- Widget的点击事件
- 关于qtablewidget中单元格按键改写
- QTableWidget 用法总结(只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象)
- EasyUI TreeGrid编辑单元格的点击事件和赋值
- 102_widget的点击事件