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.对象存 ...
随机推荐
- 不让Editplus保存时java文件时生成.bak文件
EditPlus是一个强大的编辑工具,不单单是编辑文字强大,很多的刚开始学习编程语言的初学者会选择它,例如 html,js,php,java.但是却遇到一个问题,就是每次编辑完后点保存就会出 现bak ...
- [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
2003的access数据库文件后缀是mdb2007的access数据库文件后缀是accdb 我装的access2010所以驱动程序选择“Microsoft Access Driver (*.mdb, ...
- Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
linux文件访问权限(像rw-r--rw-是什么意思) Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该 ...
- react-native基础教程(1)
转载链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-foundation-course/ React ...
- File构建实例的路径:绝对路径和相对路径
public static void main(String[] args) throws Exception { File file = new File("bin/dyan.txt&qu ...
- Asp.Net Core异常处理整理
目前版本是Asp.Net Core v1.1,这个版本的感觉对Http请求中的错误处理方便不是很完善. 没有HttpException异常类,不能在任何的地方自由的抛出对应的异常状态. 一.默认的异常 ...
- c++中string类对象和字符数组之间的相互转换
string类在c++中是一个模板类,位于名字空间std中,注意这里不是string.h,string.h是C字符串头文件. 将string类型转换为字符数组char arr[10];string s ...
- Altium Designer 13 安装完整元件库
Altium Designer更新的非常快,都快赶上chrome了,13出来没多久14又出来了,之前一直用AD9.4,算是10之前的最后一个版本,也是很经典的一个版本.安装新版本后看到在目录结构上有些 ...
- Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片
一.问题描述 使用LruCache.AsyncTask实现批量图片的加载并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)加载图片,并放入缓存中 2.及时移除 ...
- React页面隐藏#
将 hashHistory 改为 browserHistory 路由用到的,可以在routes.jsx上把hashHistory 改成browserHistory https://github.com ...