查看完整版本: [-- 封装QTableView,支持冻结列,绘制表头,按钮,复选框,支持字体指定颜色设置等一系列骚操作!!!! --]

QTCN开发网 -> Qt 作品展 -> 封装QTableView,支持冻结列,绘制表头,按钮,复选框,支持字体指定颜色设置等一系列骚操作!!!! [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

1250479606 2018-07-27 19:24

封装QTableView,支持冻结列,绘制表头,按钮,复选框,支持字体指定颜色设置等一系列骚操作!!!!

封装QTableView,支持以下操作
1、绘制复选框
2、绘制按钮,点击响应
3、支持字体指定颜色的设置
4、绘制表头,支持排序、全选等操作
5、支持冻结列,移动滚动条时固定显示前几列
封装这个QTableView类,花了很多心血和时间进行测试,调试,现在已经是成熟的产品了!!!!
程序EXE下载链接:https://download.csdn.net/download/u012765446/10575337
欢迎大家下载程序,进行指正(本人已经测了很多遍,已用于项目中)。。。。。。。
若对源码感兴趣,有偿提供,毕竟花了太多精力,源码不止有QTableView封装类,还有窗口,对话框,QPushButton等封装类。。。。。。。。
联系QQ:2587939109
[attachment=19264]
[attachment=19265]
[attachment=19266]
[attachment=19267]

[attachment=19268]


shawking 2018-07-28 12:32
做到这一步,不容易

xdh873939316 2018-07-31 19:00
404

chl20002008 2018-07-31 20:32
404

1250479606 2018-08-01 18:56
之前上传的资源未审核,所以链接打不开,现在已经可以下载了

toby520 2018-12-03 13:46
划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
其他列隐藏,并且使用stackUnder()把其放在最上面,然后第二个模型在他下面。
隐藏视图的竖直方向上的头部
说白了,就是一个view放到另外一个view的上面,上面的view不动,下面的view动,就可以实现这种效果!
2个tableview 共享一个model

2.Delegate实现各种cell的样式和交互:
    1.使用QItemDelegate的paint函数
    2.若是想显示一个自定义Widget 可实现:
    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;
    void setEditorData(QWidget *editor, const QModelIndex &index) const;
    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &) const;
    QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;

john_duan 2018-12-03 17:51
toby520:划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
....... (2018-12-03 13:46) 


futureq 2018-12-08 07:42
可以,qt中好像有个例子,西门子系统里刀具界面好像也有固定列

donglaile 2018-12-08 22:49
toby520:划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
....... (2018-12-03 13:46) 

之前也做了一个冻结表格,就是这个思路,赞一下

随心所遇 2019-03-12 21:30
toby520:划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
....... (2018-12-03 13:46) 

这个重点画的好牛逼

vaehate 2020-07-27 15:35
toby520:划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
....... (2018-12-03 13:46) 

大佬,这是要断了楼主的财路啊

yunduan41 2020-12-21 13:01
应该还有一个思路吧,就是继成QAbstractitemView,然后重新实现一个QTableView,在paintevent方法,当滚动条滚动的时候,判断一下冻结的列的宽度,对于未冻结的部分列,重新计算它的宽度,进行绘制。在Qt里面QTableView中的paintevent里面应该是标记的dirtyArea里面绘制时,重新计算一个rect吧。

闲人马大姐 2022-01-07 11:00
冻结列qt官网有例子,是冻结第一列,然后官网讨论区,有人实现了冻结最后一列。

代码如诗 2024-03-19 14:22


查看完整版本: [-- 封装QTableView,支持冻结列,绘制表头,按钮,复选框,支持字体指定颜色设置等一系列骚操作!!!! --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled