python tablewidget 颜色_QT中,QTableView鼠标移动到item上时该item所在行的背景颜色变成其他颜色,这要怎么实现...

展开全部

//不解释,自己看。不保证完整,仅供思路参考

#include 

#include "TableView.h"

#include 

#include 

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QStandardItemModel model;

for ( int col = 0; col 

{

QList list;

for ( int row = 0; row 

{

list.append(new QStandardItem);

}

model.appendColumn(list);

}

TableView view;

view.setModel(&model);

view.show();

return a.exec();

}

#ifndef IVIEW_H

#define IVIEW_H

class 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_OBJECT

private:    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 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 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 &= ~32313133353236313431303231363533e78988e69d8331333332626134QStyle::State_MouseOver;

QStyledItemDelegate::paint(painter, o, index);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java8 垃圾 不同_【不同的Java垃圾回收器的比较】

现在已经是2014年了,但是对大多数开发人员而言有两件事情仍然是个谜——java垃圾回收以及异性(码农又被嘲笑了)。由于我对后者也不是特别了解,我想我还是试着说说前者吧,尤其是随着Java8的到来,这个领域也发生了许多重大的变化及提…

。。。第一次。。。

记得第一次给你发短信。。问你。。数据结构期末考试有没有范围啊。。没有告诉你。。那次只是给你发短信的借口。。记得第一次打电话给你。。问你。。那个。。什么什么。。的那道题。。你会做吗。。第一次在电话里听你的声音。。是那样的甜美。。记得第一次和安子。阿昆吃饭的时…

“一边熬夜一边求不要猝死”,90后养生朋克指南,条条扎心!

随着一批又一批的90后步入中年秃头、失眠、衰老...健康的压力如影如随是时候开始养生朋克了当代青年:养生朋克指南养生朋克一边作死一边自救的养生方式比如一边熬夜一边涂贵价护肤品用最贵的眼霜 熬最长的夜心理活动经常是:一边熬夜一边祈祷自己不要猝死…

EntityFramework Core查询数据基本本质

【导读】在EntityFramework Core中、当查询出数据后,是如何将数据映射给实体的呢?本节我们预先做个基本探讨,后续给出其底层原理本质前不久,我们在探索性能时,给出利用反射达到性能瓶颈时的方案即使用委托,…

pythonmt4通讯swot矩阵_swot分析矩阵范例(各部门)

优势(Strengths)S1.团队工作氛围和谐融洽,作风吃苦耐劳,积极主动、自我改进意识强S2.品质管控专业人才工作能力强、沟通能力强,执行力坚决S3.产品质量管控体制、流程健全,拥有质量监督管控权S4.产品检测、试验设备齐全&#xff0c…

2009从知到行知识管理培训公开课最后一期

由知识管理中心(Knowledge Management Center)举办的“从知到行:知识管理理论与实施”培训班第十六期将于2009年11月26-27日于北京举办,这也是KMC举办的2009年最后一期面向CKO、知识管理总监、经理和知识管理专员等知识管理实施人…

java socket 多次write_java NIO2异步socket的write事件与read事件的完成次数不一致是怎么回事...

引用来自“Black_JackQ”的评论异步的,client需多次read处理完数据。是这样做的,但是目前观察消息接受率只有70%左右,代码如下:socket.read(byteBuffer, null, new CompletionHandler() {Overridepublic void completed(Integer r…

万级 K8S 集群背后,etcd 如何保持稳定性?

这几年,随着 Kubernetes 成为容器编排领域霸主,etcd 越来越火,GitHub star 已超过 34.2K。这与它的应用场景广泛密不可分,从服务发现到分布式锁,从配置存储到分布式协调,可以说,etcd 已成为云原…

mysql 10分钟一聚合_SQL-根据DateTime查询多个聚合-MySQL

这是一个复杂的过程.但是我有一个表,其中包含一个DATETIME字段,以及一些其他的int和float字段,需要对其求和并求平均值.我们希望基于时间戳在此表上进行求和和平均,最终旨在开发3个在某种意义上可以相互补充的查询.所以能力看起来像这样TIMESTAMP |subj_diff| SCR2 | SCR32011-…

qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍

双 11 刚过,双 12又来了每年这个时候作为一名设计师,真的很难...老板压着做电商 banner还有很多人指指戳戳让你改稿好不容易按照别人的想法过稿结果banner 的点击率还不高其实,只需要稍微调整视觉重点你的电商banner 就会变得变得更吸引人&am…

判断文件是否存在一个API函数

一、声明(方式有两种): 1. functionPathFileExists(pszPath:string):Bool;stdcall;externalshlwapi.dllNamePathFileExistsA;2. functionPathFileExistsA(pszPath:string):Bool;stdcall;externalshlwapi.dll;二、使用(此处用第二种方式&#…

穿背心的老院士,86岁,重病,还在敲代码,单手!

昨天有幸看到了一个视频,视频中,一位老先生穿着朴素的白背心,伏在桌上,对着电脑,一手按着写满密密麻麻数学公式的本子,另一只手仅用单指吃力又缓慢地按着键盘。老先生全神贯注地研究他是 “背心院士” 高伯…

百度广告点击软件_结束了,百度 “毒瘤” 广告!

“ 通过本文,你可以获取一款上网必备的插件,让你摆脱各种"毒瘤"广告。”大家天天逛网页,最恼人的也就是广告了吧。尤其是百度搜索时。01—毒瘤广告有多愁?百度广告有多可怕,小哥哥给你演示一下。百度搜“智齿…

java跳转画面后画面白了_如何跳转指定页面后再次跳转到另一页面或原来的页面...

c#图解教程第5版数万读者认可的新99.33元(需用券)去购买 >这里可以采用redirect以get形式向指定页面发出get请求,指定页面完成后会再次跳转到redirect后边指定的页面(注意:这里的redirect只是一个自定义参数,并不是自带的,名称…

用PHP实现POP3邮件的收取(一)

POP协议简介 本文简要说明了通过POP3协议收取邮件、MIME邮件的解码的原理;针对收取和MIME解码,提供了两个实用的PHP类,并提供了运用的样例。分为邮件收取、MIME解码两个部分。这里我们先向您介绍邮件的收取,解码部分会在以后的文章…

【基础数学知识】带你理解泰勒展开式本质

推荐阅读时间:5min~8min主要内容:更好的理解,并且记忆泰勒展开式我们学习泰勒展开,本质上就是为了在某个点附近,用多项式函数取近似其他函数。可能有些童鞋就要问了,既然有一个函数了,为什么还需…

C#使用NPOI进行word的读写

目录一、简介1、操作Word的类库:二、简单使用1、XWPFDocument类的实例化2、设置页面的大小3、段落处理4、表格处理5、页眉页脚处理三、综合示例四、参考一、简介1、操作Word的类库:二、简单使用1、XWPFDocument类的实例化该类的实例对应一个word文档XWPF…

weblogic修改控制台ip_「Weblogic学习」Weblogic知识要点之JNDI/JTA编程开发

给它一个名字,它就能提供你要的服务,JNDI就是这么地任性。想任性的霸占数据?JTA为你把风。这期,谈谈JNDI和JTA的简单介绍,一起看看吧……JNDI编程JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的…

java不适合开发cv吗_JavaCV开发环境的配置

一.安装opencv2.4.4、测试运行OpenCV-2.4.4.exe,就是解压,把它解压到一个你喜欢的地方 ——1.1 路径最好不要太深,点啊点的最讨厌了2. 添加 ***\OpenCV2.4.4\build\x64\vc11\bin; 到环境变量的PATH后面 ——2.1 ***是你放OpenCV2.4.4的地方…

NA-NP-IE系列实验5:配置文件的备份和IOS 的备份

实验5:配置文件的备份和IOS 的备份<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验&#xff0c;读者可以掌握如下技能&#xff1a;&#xff08;1&#xff09; 熟悉TFTP 服务器的使用&#xff08;2&#xf…