//不解释,自己看。不保证完整,仅供思路参考#include QtGui/QApplication#include TableView.h#include QStandardItem#include QStandardItemModel int main(int argc, char *argv[]){ QApplication a(argc, argv); QStandardItemModel model; for ( int col = 0; col 3; col++ ) { QListQStandardItem* list; for ( int row = 0; row 5; row++ ) { list.append(new QStandardItem); } model.appendColumn(list); } TableView view; view.setModel(&model); view.show(); return a.exec();}#ifndef IVIEW_H#define IVIEW_Hclass IView {public: virtual void setMouseOver(const int) =0;};#endif // IVIEW_H #ifndef TABLEVIEW_H#define TABLEVIEW_H#include QTableView#include QMouseEvent#include QStandardItem #include IView.h#include Delegate.hclass TableView : public QTableView, public IView { Q_OBJECTprivate: int currHovered; void mouseMoveEvent(QMouseEvent *event); void disableMouseOver();public: TableView(QWidget *parent = 0); void setMouseOver(const int);};#endif // TABLEVIEW_H #include TableView.h#include QDebugTableView::TableView(QWidget *parent) : QTableView(parent), currHovered(-1){ Delegate *delegate = new Delegate; delegate-setView(this); setItemDelegate(delegate); setMouseTracking(true);} void TableView::setMouseOver(const int row){ if ( row == currHovered) return; QStandardItemModel *_model = static_castQStandardItemModel*(model()); for ( int col = 0; col _model-columnCount(); col++ ) { QStandardItem *item = _model-item(row, col); item-setBackground(QBrush(QColor(red))); } if ( currHovered != -1 ) { disableMouseOver(); } currHovered = row;} void TableView::disableMouseOver(){ QStandardItemModel *_model = static_castQStandardItemModel*(model()); for ( int col = 0; col _model-columnCount(); col++ ) { QStandardItem *item = _model-item(currHovered, col); item-setBackground(QBrush(QColor(white))); }} void TableView::mouseMoveEvent(QMouseEvent *event){ // TODO: you need know when mouse are not in table rect // then you need disable over QTableView::mouseMoveEvent(event);} #ifndef DELEGATE_H#define DELEGATE_H #include QStyledItemDelegate#include IView.hclass Delegate : public QStyledItemDelegate {private: IView *view;public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; void setView(IView *view) { this-view = view; }};#endif // DELEGATE_H #include Delegate.h#include QDebugvoid Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const{ QStyleOptionViewItemV4 o = option; initStyleOption(&o, index); if ( o.state & QStyle::State_MouseOver ) { view-setMouseOver(index.row()); } o.state &= ~QStyle::State_MouseOver; QStyledItemDelegate::paint(painter, o, index);}

取消

评论

html鼠标移上去变成箭头,js实现鼠标移动到div上变成箭头相关推荐

  1. java 中鼠标事件_[Java教程]js中鼠标事件总结

    [Java教程]js中鼠标事件总结 0 2017-07-11 00:00:19 js中鼠标事件主要有onclick,onmousedown,onmouseup,oncontextmenu,ondblc ...

  2. html怎么鼠标经过添加蒙版遮罩,js实现鼠标移动到图片产生遮罩效果

    本文实例为大家分享了js实现鼠标移动到图片产生遮罩效果的具体代码,供大家参考,具体内容如下 mask .pic{ width:300px; height:250px; background:url(i ...

  3. html 图片鼠标移上去点亮,CSS3 实现鼠标移到图片上时一片亮光一闪而过的效果...

    01 效果描述 CSS3 实现鼠标移到图片上时一片亮光一闪而过的效果 02 效果图摘 03 关键代码 html: CSS: .hover14{ width:500px; float:left; } . ...

  4. html鼠标自动向下滑动,js实现鼠标感应向下滑动隐藏菜单的方法

    本文实例讲述了js实现鼠标感应向下滑动隐藏菜单的方法.分享给大家供大家参考.具体实现方法如下: 隐藏在网页左上角感应鼠标向下滑出的隐藏菜单 BACKGROUND-COLOR: blue; BORDER ...

  5. 用鼠标左右拖拽 html,js实现鼠标拖拽div左右滑动

    本文实例为大家分享了js鼠标拖拽div左右滑动的具体代码,供大家参考,具体内容如下 Title body{ position: relative; margin:0; padding:0; width ...

  6. 如何设置鼠标移开后css,如何设置鼠标离开时由hover设置的样式不变?

    1.用js添加延时处理 #div1{ height: 100px; width: 100px; background: #000000; position: relative; } #div2{ he ...

  7. html鼠标移除的效果,css实现鼠标移入移出动态效果

    这篇文章主要介绍了关于css实现鼠标移入移出动态效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 知识点:transform-origin 兼容性:IE10以上 p { positi ...

  8. html鼠标拖动变换大小案例,js实现鼠标拖拽缩放div实例代码_哒哒_前端开发者

    封装为了jq插件,如下 drag. ;(function ($) { $.fn.dragDiv = function (options) { var def = { maxW:600,// 可伸缩的最 ...

  9. win7 开始 计算机箭头,win7系统开机黑屏屏幕上一个箭头的解决办法

    大伙儿有木有碰到过那样的状况:win7系统软件启动后,沒有登陆到一切正常的页面,只是死机了,随后全部显示屏只能1个鼠标箭头.电脑上新手们毫无疑问会感觉无计可施,没事儿,雨林木风小编又来协助大伙儿解决困 ...

  10. vue实现文字过长鼠标移上去显示对应文字,移走隐藏

    vue实现文字过长鼠标移上去显示对应文字,移走隐藏 vue项目里实现列表里因文字过长,加上鼠标移上去显示对应文字效果 示例图片 html js 数据定义 style vue项目里实现列表里因文字过长, ...

最新文章

  1. 无线网中的一些技术名词和解释
  2. 他们翻遍用AI检测新冠的论文,一篇临床可用的也没有?!
  3. 实体类中用基本类型好,还是用包装类型
  4. python常见错误-Python 常见报错类型
  5. 10进制颜色 转换成 16进制
  6. java resume过时方法_面试官没想到,一个 Java 线程生命周期,我可以扯半小时
  7. Dom对象、JavaScript对象、jQuery对象区别
  8. 包装类java_Java 包装类
  9. FineReport:关于扩展行列求各种条件下的函数运用
  10. python3 socketserver源码解析_解读python中SocketServer源码
  11. jnativecpp.dll一定要放到系统目录下吗_「实用」室内甲醛到底该如何去除?关键要做到这两点...
  12. oracle客户端导入dmp文件格式,在linux服务器上导入oracle的DMP文件
  13. HiveQL学习笔记(二):Hive基础语法与常用函数
  14. 怎样快速的学习微信小程序
  15. RecyclerView 内item点击失效
  16. warning: #188-D: enumerated type mixed with another type
  17. android studio : amend commit
  18. JAVA音程_大三度和小三度
  19. TAM: TEMPORAL ADAPTIVE MODULE FOR VIDEO RECOGNITION ∗
  20. 设计模式只是一把锤子,不要拿着到处去敲!

热门文章

  1. 字节跳动 —— 2023暑期实习面试
  2. 企业网站内容维护日常工作有哪些
  3. 如何从excel中删除奇数行或偶数行
  4. C语言虚词怎么在程序里表示,文言虚词用法推断
  5. 计算机网络怎么查看连接打印机驱动,怎么检查电脑中是否已成功连接网络打印机...
  6. 北邮计算机自招,自招 · 帮 | 2019自主招生名额缩减,这样报考,省三也能逆袭985...
  7. linux 搜狗输入法快捷键设置,Linux配置中文输入法(搜狗输入法)-Go语言中文社区...
  8. SLA是什么意思 ?
  9. MacBook安装虚拟机Parallels Desktop
  10. linux点击桌面图标无反应,电脑点击图标没反应怎么回事