• 12926阅读
  • 13回复

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

上一主题 下一主题
离线1250479606
 

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







离线shawking

只看该作者 1楼 发表于: 2018-07-28
做到这一步,不容易
离线xdh873939316

只看该作者 2楼 发表于: 2018-07-31
404
离线chl20002008

只看该作者 3楼 发表于: 2018-07-31
404
离线1250479606

只看该作者 4楼 发表于: 2018-08-01
之前上传的资源未审核,所以链接打不开,现在已经可以下载了
离线toby520

只看该作者 5楼 发表于: 2018-12-03
划重点:
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;
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线john_duan

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

离线futureq

只看该作者 7楼 发表于: 2018-12-08
可以,qt中好像有个例子,西门子系统里刀具界面好像也有固定列
离线donglaile

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

之前也做了一个冻结表格,就是这个思路,赞一下
离线随心所遇

只看该作者 9楼 发表于: 2019-03-12
回 toby520 的帖子
toby520:划重点:
1. 实现固定列原理:
使用两个视图在同一个模型上,使用叠加技术,到达冻结某列的效果,
原理:两视图共享模型!
先把一个视图放到另外一个视图上面,只保留某一列显示,
....... (2018-12-03 13:46) 

这个重点画的好牛逼
我思顾我在
离线vaehate

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

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

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

只看该作者 12楼 发表于: 2022-01-07
冻结列qt官网有例子,是冻结第一列,然后官网讨论区,有人实现了冻结最后一列。
离线代码如诗

只看该作者 13楼 发表于: 03-19
快速回复
限100 字节
 
上一个 下一个