一、设置可视化的组件

参考:

  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 rowQAbstractItemDelegate *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 二次整理的更多相关文章

  1. 函数基础(二)(day11整理)

    目录 昨日内容 函数的定义 函数的三种定义方式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 实参 今日内容 可变长参数 可变长形参 可变长实参(仅作了解) 函数对象 函数嵌 ...

  2. xfs磁盘(文件)碎片查看和整理

    网上有些帖子说XFS不用做碎片整理,其实是错误的.XFS用延迟写入等技术确实可以减少碎片的出现,但是如果服务器用了几年,并且文件操作比较频繁,还是会出现碎片的,应该整理.注意:在Debian中XFS相 ...

  3. Excel表3级数据整理工具

    前言 做专题经常会遇到做数据级联的需求,大部分需求都长一个模样.销售给你一个excel表,然后你做一个省市经销商的级联.不知道以前大家是怎么样做的,我之前是把excel复制到sublime中,然后使用 ...

  4. 重新整理 .net core 实践篇—————日志系统之结构化[十八]

    前言 什么是结构化呢? 结构化,就是将原本没有规律的东西进行有规律话. 就比如我们学习数据结构,需要学习排序然后又要学习查询,说白了这就是一套,没有排序,谈如何查询是没有意义的,因为查询算法就是根据某 ...

  5. RocketMQ架构原理解析(二):消息存储

    一.概述 由前文可知,RocketMQ有几个非常重要的概念: broker 服务端,负责存储.收发消息 producer 客户端1,负责产生消息 consumer 客服端2,负责消费消息 既然是消息队 ...

  6. delphi控件属性大全-详解-简介

    http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...

  7. Java 之 I/O 系列 01 ——基础

    Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 整理<疯狂j ...

  8. Hadoop经典面试题(转)

    单项选择题 1. 下面哪个程序负责 HDFS 数据存储. a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 2. ...

  9. 2.JAVA垃圾回收机制

    前言 线程独享的内存区域有程序计数器,虚拟机栈,本地方法栈,这些区域不用考虑内存回收的问题,随着线程的执行结束,自然就回收了,而堆内存和方法区的回收则不一样,他们的内存分配和回收是动态的. 1.对象存 ...

随机推荐

  1. BZOJ.2287.[POJ Challenge]消失之物(退背包)

    BZOJ 洛谷 退背包.和原DP的递推一样,再减去一次递推就行了. f[i][j] = f[i-1][j-w[i]] + f[i-1][j] f[i-1][j] = f[i][j] - f[i-1][ ...

  2. FTP和TCP的文件传输效率对比测试分析

    前言 最近因项目需要,需要把一定数量的中等文件从开发板上传到电脑上,分别选择了FTP和TCP自定义协议两种方式进行传输,进行了简单的对比测试,故做如下记录. 测试环境 开发板:Linux,ARMv7 ...

  3. AngularJS中页面呈现html代码段

    如何在页面呈现一段html代码段呢? 在textarea中我们这样写: <textarea name="" id="" cols="30&quo ...

  4. 从零开始优雅的使用mongodb实例

    基本连接 一.创建express工程testmon express testmon 二.精简app.js var express = require("express"); var ...

  5. Session.Abandon和Session.Clear的实现和区别

    我在网上找了一个比较贴切的描述: Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面啥都没有.但是Session对象还保留.Session.Abando ...

  6. asp.net mvc Session RedisSessionStateProvider锁的实现

    最近项目用到了RedisSessionStateProvider来保存session,发现比内存session慢,后来慢慢了解,发现asp.net session是有锁的.我在文章 你的项目真的需要S ...

  7. 关于Python ,requests的小技巧

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xie_0723/article/details/52790786 关于 Python Request ...

  8. JNI学习小结

    Java中类型与C/C++中对应关系   Java中的类的对应   Sign签名, 用来识别对应各个方法. JDK下的javap.exe能输出签名.用法javap -s -p 完整类名     下面是 ...

  9. 洛谷 P1016 旅行家的预算

    P1016 旅行家的预算 题目OJ链接https://www.luogu.org/problemnew/show/P1016 题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时 ...

  10. 对linux安装中文字体库

    问题描述: linux提供的web服务,能在网页展示中文,下载pdf出现中文无法读取!,甚是迷瞪,经分析展示是本地浏览器的解析,下载pdf是服务器端的响应,因此要在服务端安装对应的字体库就可以解决此问 ...