Qt之QTableView显示鼠标悬浮下的项的信息

        业务上遇到一些需求,某个需求是当鼠标移动到QTableView的item上时,显示该item的某些信息。首先想到的思路就是鼠标悬浮事件,即安装QTableView的事件过滤器,然后在eventFilter进行判断即可。实现很简单,主要在针对qt界面处理子界面的事件响应时,主要是还没搞清楚ui.tableView->viewport()->installEventFilter(this)的使用场景,就先记录一下。步骤如下:

1、安装QTableView的事件过滤器

ui.tableView->installEventFilter(this);
​

网上有一种说法,还需要使用ui.tableView->viewport()->installEventFilter(this),否则QTableView的事件过滤器无效,不过我目前还没有遇到这种情况。

2、重写eventFilter

bool MyViewWidget::eventFilter(QObject *obj, QEvent *event)
{
	if (obj == ui.tableView)
	{
		if (event->type() == QEvent::HoverMove)
		{
			QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
			QPoint pt = mouseEvent->pos();
			qDebug() << "move:" << pt;

			QModelIndex index = ui.tableView->indexAt(pt);
			if (!index.isValid())
			{
				return QWidget::eventFilter(obj, event);
			}
			qDebug() << "index.row:" << index.row()
				<< " index.column:" << index.column();

			onShowInfo(index.row() + 1, index.column() + 1);
		}
	}
	return QWidget::eventFilter(obj, event);
}

​

以上代码捕获到鼠标悬浮在QTableview上的事件,然后根据鼠标的pos得出当前的item的QModelIndex。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值