//不解释,自己看。不保证完整,仅供思路参考#include #include "TableView.h"#include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QStandardItemModel model; for ( int col = 0; col < 3; col++ ) { QList 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 #include #include #include "IView.h"#include "Delegate.h"class 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 TableView::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_cast(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_cast(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 #include "IView.h"class 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 void 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);}

取消

评论

qt stylesheet 隐藏_Qt QDockWidget实现鼠标移出自动隐藏相关推荐

  1. mac虚拟机桌面图标隐藏_桌面美化,任务栏、桌面图标和鼠标箭头自动隐藏!

    生命不息,折腾不止!自动用上电脑,人类就在电脑桌面美化的道路上行走.从苦苦寻觅各种壁纸,到各种主题DIY:从图标美化,到鼠标指针美化:从任务栏透明化,到各种桌面挂件.甚至有的小伙伴们,硬生生把Wind ...

  2. iview select多选下拉 鼠标移出自动收回

    方法 //鼠标移出下拉框范围,模拟鼠标点击xy位置,收回下拉框 let mouseLeave = () => {let simulateClick = function () {var evt ...

  3. html中文字过长 自动隐藏,css 实现文字过长自动隐藏功能

    单行 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 多行(兼容各个浏览器)//通过覆盖最后几个字的形式 p{ posi ...

  4. axure 鼠标变成手,Axure教程|鼠标移入移出自动显示与隐藏三级菜单

    前几天因工作需要做一个鼠标移入显示隐藏菜单,鼠标移出自动隐藏菜单, 做的时候觉得没有什么问题,做完后预览就发现一个很严重的问题,就是鼠标移出一级菜单向二级菜单时二级菜单不显示,或者二级菜单显示三级菜单 ...

  5. HTML鼠标悬停显示隐藏div,JQ实现鼠标悬停显示或隐藏DIV层

    $(document).ready(function(){ $("#div1").hide();   //先将层隐藏起来 var canHide = false; //标记是否可隐 ...

  6. Ubuntu增大屏幕可用面积之——自动隐藏顶部状态栏

    Ubuntu顶部有一条用于显示时间等信息的状态栏,而每一个程序却又有一个自己的标题栏,这样在宽屏的显示器上有效的显示面积就少了很多,即便是窗口最大化是,两个顶栏堆在屏幕上非常难看.本文将详细介绍如何自 ...

  7. Ubuntu使用技巧:WinQQ自动隐藏解决

    Ubuntu使用技巧:WinQQ自动隐藏解决 Ubuntu使用技巧WinQQ自动隐藏解决 前言 解决方法一重新登录 解决方法二设置QQ快捷方式 1.前言 在使用Ubuntu系统上的WinQQ时有个很D ...

  8. ExtJS:鼠标移出菜单后菜单自动隐藏

    ExtJS:鼠标移出菜单后菜单自动隐藏 1.使用的是Extjs2.0.2. 2.遇到的问题,简述如下: 当下拉菜单显示后,如果不做任何操作,而直接移开鼠标,此时菜单不会自动消失(隐藏),一直会显示在屏 ...

  9. vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...

    @mouseover="showLike(i)" @mouseleave="hideLike(i)"> @click="likePoint(i) ...

最新文章

  1. linux代码动态分析软件,举例分析Linux动态库和静态库
  2. linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
  3. c调用易语言串口,易语言串口API源码
  4. 【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据
  5. php伪静态不支持中文,Discuz开启伪静态导致中文会员使用手机无法访问的解决方法...
  6. antd form rules字数限制_Package - antd-form-rules
  7. 中文文本标注工具调研以及BRAT安装使用
  8. 1.2 iostream库简介
  9. 运放参数的详细解释和分析
  10. [百度空间] [转]内存屏障 - MemoryBarrier
  11. linux 中hadoop相关命令学习
  12. 如何找到生日中阴阳历重合的年份
  13. 程序员面试技巧必读篇(一套太极剑法传授给你)
  14. 大航海懒神辅助工具全部更新完毕,祝大家航海愉快!
  15. LATTICE FPGA MICO32 uCOS开发流程
  16. android 屏幕亮度广播,Android调节屏幕亮度实现代码
  17. 思杰虚拟服务器退出管理主机,详解Citrix思杰XenServer虚拟化(8)
  18. 第一批千万5G手机凉凉之后,第二批近3亿5G手机可能又要凉了,需要买5G手机的请等等...
  19. ZOJ Monthly, January 2019 - A 规律
  20. 彻底清楚搞懂toRef和toRefs是什么,也许你知道toRef和toRefs,一直有点蒙蔽,一直没搞懂它,看完这篇文章你彻底清楚

热门文章

  1. iSCSI又称为IP-SAN
  2. 大型数据库的设计原则与开发技巧
  3. matlab仿真三相交流电路,三相交流调压电路的MATLAB仿真
  4. 基础算法 —— 调度问题 —— 流水调度问题
  5. windy数(BZOJ-1026)
  6. 47 FI配置-财务会计-固定资产-一般评估-定义资产分类中的折旧范围
  7. python怎么运行丘比特之箭_test
  8. 一起学习C语言:数组(三)
  9. C语言 strcspn函数实现
  10. python内置函数可以用来_Python内置函数——compile