qt stylesheet 隐藏_Qt QDockWidget实现鼠标移出自动隐藏
//不解释,自己看。不保证完整,仅供思路参考#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实现鼠标移出自动隐藏相关推荐
- mac虚拟机桌面图标隐藏_桌面美化,任务栏、桌面图标和鼠标箭头自动隐藏!
生命不息,折腾不止!自动用上电脑,人类就在电脑桌面美化的道路上行走.从苦苦寻觅各种壁纸,到各种主题DIY:从图标美化,到鼠标指针美化:从任务栏透明化,到各种桌面挂件.甚至有的小伙伴们,硬生生把Wind ...
- iview select多选下拉 鼠标移出自动收回
方法 //鼠标移出下拉框范围,模拟鼠标点击xy位置,收回下拉框 let mouseLeave = () => {let simulateClick = function () {var evt ...
- html中文字过长 自动隐藏,css 实现文字过长自动隐藏功能
单行 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 多行(兼容各个浏览器)//通过覆盖最后几个字的形式 p{ posi ...
- axure 鼠标变成手,Axure教程|鼠标移入移出自动显示与隐藏三级菜单
前几天因工作需要做一个鼠标移入显示隐藏菜单,鼠标移出自动隐藏菜单, 做的时候觉得没有什么问题,做完后预览就发现一个很严重的问题,就是鼠标移出一级菜单向二级菜单时二级菜单不显示,或者二级菜单显示三级菜单 ...
- HTML鼠标悬停显示隐藏div,JQ实现鼠标悬停显示或隐藏DIV层
$(document).ready(function(){ $("#div1").hide(); //先将层隐藏起来 var canHide = false; //标记是否可隐 ...
- Ubuntu增大屏幕可用面积之——自动隐藏顶部状态栏
Ubuntu顶部有一条用于显示时间等信息的状态栏,而每一个程序却又有一个自己的标题栏,这样在宽屏的显示器上有效的显示面积就少了很多,即便是窗口最大化是,两个顶栏堆在屏幕上非常难看.本文将详细介绍如何自 ...
- Ubuntu使用技巧:WinQQ自动隐藏解决
Ubuntu使用技巧:WinQQ自动隐藏解决 Ubuntu使用技巧WinQQ自动隐藏解决 前言 解决方法一重新登录 解决方法二设置QQ快捷方式 1.前言 在使用Ubuntu系统上的WinQQ时有个很D ...
- ExtJS:鼠标移出菜单后菜单自动隐藏
ExtJS:鼠标移出菜单后菜单自动隐藏 1.使用的是Extjs2.0.2. 2.遇到的问题,简述如下: 当下拉菜单显示后,如果不做任何操作,而直接移开鼠标,此时菜单不会自动消失(隐藏),一直会显示在屏 ...
- vue 移入显示_vue鼠标移入显示点赞图标,移出隐藏点赞图标,现在我想点击点赞图标,鼠标移出不会隐藏图标,怎么做?...
@mouseover="showLike(i)" @mouseleave="hideLike(i)"> @click="likePoint(i) ...
最新文章
- linux代码动态分析软件,举例分析Linux动态库和静态库
- linux如何运行用户程序,Linux系统下,如何以其他用户身份运行程序
- c调用易语言串口,易语言串口API源码
- 【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据
- php伪静态不支持中文,Discuz开启伪静态导致中文会员使用手机无法访问的解决方法...
- antd form rules字数限制_Package - antd-form-rules
- 中文文本标注工具调研以及BRAT安装使用
- 1.2 iostream库简介
- 运放参数的详细解释和分析
- [百度空间] [转]内存屏障 - MemoryBarrier
- linux 中hadoop相关命令学习
- 如何找到生日中阴阳历重合的年份
- 程序员面试技巧必读篇(一套太极剑法传授给你)
- 大航海懒神辅助工具全部更新完毕,祝大家航海愉快!
- LATTICE FPGA MICO32 uCOS开发流程
- android 屏幕亮度广播,Android调节屏幕亮度实现代码
- 思杰虚拟服务器退出管理主机,详解Citrix思杰XenServer虚拟化(8)
- 第一批千万5G手机凉凉之后,第二批近3亿5G手机可能又要凉了,需要买5G手机的请等等...
- ZOJ Monthly, January 2019 - A 规律
- 彻底清楚搞懂toRef和toRefs是什么,也许你知道toRef和toRefs,一直有点蒙蔽,一直没搞懂它,看完这篇文章你彻底清楚