QTableView 二次整理
一、设置可视化的组件
参考:
http://www.cnblogs.com/ribavnu/p/4810412.html
二、常用基本属性
http://www.cnblogs.com/ribavnu/p/4791393.html
三、编辑后提示是否保存
http://www.cnblogs.com/ribavnu/p/4702532.html
四、设置特定列是否能编辑
#
# C_TableView
# 在QTreeView基础上增加限制 特定列是否 可以编辑
#
class C_TableView(QTableView):
def __init__(self, parent=None):
QTableView.__init__(self, parent)
# 设置可以编辑的 列
# column:list
self.c_allow_edit = list()
#
# 设置可以编辑的 列
# allow_edit :list,
# value : 可以编辑的多个列, 列编号从0开始
def c_setAllowEdit(self, allow_edit):
self.c_allow_edit = allow_edit def edit(self, index, trigger, event): args = [index, trigger, event]
columnIndex = index.column() if event is not None:
# 2:鼠标的按下,3:鼠标的释放
# 4:鼠标的双击
# 如果 列 是否可以编辑
event_type = event.type()
if event_type ==4:
if columnIndex not in self.c_allow_edit :
return False return_value =super(QTableView, self) .edit( *args)
return return_value
五、设置特定列的代理,对 一 的 补充。
void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
# 自定义复选框checkbox
class Delegate_CheckBox(QtWidgets.QStyledItemDelegate): def createEditor(self, parent, option, index): editor = QtWidgets.QCheckBox('是', parent)
# 填充背景
#editor.setAutoFillBackground(True)
#editor.setGeometry(self.checkBoxRect(option)) return editor # 计算 check_box的位置 和 大小
def checkBoxRect(self, option): but_style = QtWidgets.QStyleOptionButton()
check_box_rect =QtWidgets. QApplication.style().subElementRect(
QtWidgets.QStyle.SE_CheckBoxIndicator,
but_style) check_box_point = QtCore.QPoint(option.rect.x() +
option.rect.width() / 2 -
check_box_rect.width() / 2,
option.rect.y() +
option.rect.height() / 2 -
check_box_rect.height() / 2);
return QtCore.QRect(check_box_point, check_box_rect.size()) def paint(self, painter, option, index): from PyQt5.QtWidgets import QStyle # 如果选中则高亮
if option.state & QStyle.State_Selected:
painter.fillRect(option.rect, option.palette.highlight()) #获取值
checked = index.model().data(index, QtCore.Qt.DisplayRole)
checked = int(checked)
#按钮的风格选项
checkBoxOption = QtWidgets.QStyleOptionButton()
checkBoxOption.state |= QtWidgets.QStyle.State_Enabled;
#根据值判断是否选中
if checked > 0 :
checkBoxOption.state |= QtWidgets.QStyle.State_On
else :
checkBoxOption.state |= QtWidgets.QStyle.State_Off #返回QCheckBox几何形状
checkBoxOption.rect = self.checkBoxRect(option)
#绘制QCheckBox
QtWidgets.QApplication.style().drawControl(QtWidgets.QStyle.CE_CheckBox,checkBoxOption,painter) def setEditorData(self, spinBox, index): data = index.data()
data = int(data)
if data > 0:
spinBox.setChecked(True)
else:
spinBox.setChecked(False) def setModelData(self, spinBox, model, index): data = spinBox.isChecked()
if data:
model.setData(index, 1)
else:
model.setData(index, 0) def updateEditorGeometry(self, editor, option, index):
# 原始的就这么一句话
#editor.setGeometry(option.rect) # 居中显示
rect = option.rect
option_x= rect.x()
option_y = rect.y()
option_width = rect.width()
# 微调下左边,误差原因不明
rect.moveTo(option_x + option_width /2 - 8 , option_y)
editor.setGeometry(rect)
六、
设置tableview背景透明
from PyQt5.QtGui import QPalette, QBrush, QColor
palette = tableView.palette()
palette.setBrush(QPalette.Base,QBrush(QColor(255,255,255,0)))
tableView.setPalette(palette)
QTableView 二次整理的更多相关文章
- 函数基础(二)(day11整理)
目录 昨日内容 函数的定义 函数的三种定义方式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 实参 今日内容 可变长参数 可变长形参 可变长实参(仅作了解) 函数对象 函数嵌 ...
- xfs磁盘(文件)碎片查看和整理
网上有些帖子说XFS不用做碎片整理,其实是错误的.XFS用延迟写入等技术确实可以减少碎片的出现,但是如果服务器用了几年,并且文件操作比较频繁,还是会出现碎片的,应该整理.注意:在Debian中XFS相 ...
- Excel表3级数据整理工具
前言 做专题经常会遇到做数据级联的需求,大部分需求都长一个模样.销售给你一个excel表,然后你做一个省市经销商的级联.不知道以前大家是怎么样做的,我之前是把excel复制到sublime中,然后使用 ...
- 重新整理 .net core 实践篇—————日志系统之结构化[十八]
前言 什么是结构化呢? 结构化,就是将原本没有规律的东西进行有规律话. 就比如我们学习数据结构,需要学习排序然后又要学习查询,说白了这就是一套,没有排序,谈如何查询是没有意义的,因为查询算法就是根据某 ...
- RocketMQ架构原理解析(二):消息存储
一.概述 由前文可知,RocketMQ有几个非常重要的概念: broker 服务端,负责存储.收发消息 producer 客户端1,负责产生消息 consumer 客服端2,负责消费消息 既然是消息队 ...
- delphi控件属性大全-详解-简介
http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...
- Java 之 I/O 系列 01 ——基础
Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 整理<疯狂j ...
- Hadoop经典面试题(转)
单项选择题 1. 下面哪个程序负责 HDFS 数据存储. a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. ...
- 2.JAVA垃圾回收机制
前言 线程独享的内存区域有程序计数器,虚拟机栈,本地方法栈,这些区域不用考虑内存回收的问题,随着线程的执行结束,自然就回收了,而堆内存和方法区的回收则不一样,他们的内存分配和回收是动态的. 1.对象存 ...
随机推荐
- Gym - 100548G The Problem to Slow Down You
依然是回文树. 我们只需要吧siz[]改成统计两边的siz[][0/1],然后把两个字符中间随便加一个不会出现的字符拼起来,做一遍回文树统计一下就OJBK了 #include<bits/stdc ...
- Python中的pass的作用
1.pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作2.保证格式完整 3.保证语义完整 以if语句为例,在c或c++/java中: ? if(true) ;//do ...
- [HDU1598]find the most comfortable road
思路: 考虑一个暴力:枚举最大的边权和最小的边权,然后将边权在这之间的边全拿出来构成一张无向图,剩下的就是判断是否存在一条从$S$到$T$的路径.相当于判$S$和$T$是否连通,用并查集连一下即可.时 ...
- spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
更多文章点击--spring源码分析系列 主要分析内容: 一.BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor简述与demo示例 ...
- LeetCode全文解锁 √
分享一波大牛整理leetcode,方便整理思路 可以点击下载
- C# 8.0的新的using语法——Using declarations
我们在代码中经常使用using保障非托管资源的释放 static void Main(string[] args) { using (var options = Parse(args)) { if ( ...
- CAP:Alantany 谈 CAP
引用Alantany的话:“CAP理论提出就是针对分布式数据库环境的,所以,P这个属性是必须具备的.P就是在分布式环境中,由于网络的问题可能导致某个节点和其它节点失去联系,这时候就形成了P(parti ...
- Unity Shader-后处理:Bloom全屏泛光
一.简介 今天来学习一下全屏Bloom效果,有时候也叫Glow效果,中文一般叫做“全屏泛光”,这是一种可以模拟出HDR的全屏后处理效果,但是实现原理与HDR相差很远,效果比HDR差一些,但是比HD ...
- (转)Fur Shader
转自:http://qiankanglai.me/misc/2014/11/15/fur-shader/ 花时间看了下毛发效果,苦于囊中羞涩没能买QuickFur.furFX等插件,最后找到了Fur ...
- Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装.
前言:最近心血来潮做了一个以品牌为中心的网站,打算推出本地服务o2o应用.快速开发手机应用,最后选择了phonegap,这里我只是讲述我安装的过程,仅供大家参考. 我开发的一个模型http://www ...