QTableView中使用Delegate方式来实现对特定列的文本进行换行
实现 方式 进行 文本 特定 换行 Delegate 使用
2023-09-11 14:19:35 时间
问题:由于表格的一个列中,有个别文本过长,默认情况下,QTableView不支持对某列的文本换行,所以需要通过Delegate方式来实现这样的效果
头文件的Delegate
1 #pragma once 2 3 #include <QStyledItemDelegate> 4 #include <QPainter> 5 6 class WrapTextDelegate : public QStyledItemDelegate 7 { 8 Q_OBJECT 9 10 public: 11 explicit WrapTextDelegate(QObject *parent = Q_NULLPTR); 12 ~WrapTextDelegate(); 13 14 public: 15 void paint(QPainter *painter, const QStyleOptionViewItem &option, 16 const QModelIndex &index) const override; 17 };
Delegate实现文件:
1 #include "WrapTextDelegate.h" 2 3 WrapTextDelegate::WrapTextDelegate(QObject *parent) 4 : QStyledItemDelegate(parent) 5 { 6 } 7 8 WrapTextDelegate::~WrapTextDelegate() 9 { 10 } 11 12 void WrapTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const 13 { 14 (void)(index); 15 16 QString text = index.model()->data(index, Qt::DisplayRole).toString(); 17 //绘制文本 18 painter->drawText(option.rect, Qt::TextWordWrap | Qt::AlignVCenter | Qt::AlignLeft, text); 19 //如果当前有焦点,就绘制一个焦点矩形,否则什么都不做 20 // drawFocus(painter, option, option.rect); 21 22 23 }
最后在初始化QTableView的代码中写下:
1 auto delegate = new WrapTextDelegate(); 2 3 ui->table->setItemDelegateForColumn(column, delegate);
这样就完成了。如果你想用setTextElideMode(Qt::TextElideMode mode)来达到Wrap文本的效果,也可以,不过我觉得这么做不太美观。
references:
http://www.cppblog.com/biao/archive/2009/08/07/92577.html
http://blog.csdn.net/xbnlkdbxl/article/details/51396336
http://bbs.csdn.net/topics/390834107
相关文章
- js实现图片加载特效(从左到右,百叶窗,从中间到两边)
- Java实现 LeetCode 558 四叉树交集(四叉树,第一次遇到,研究了半天)
- Java实现 LeetCode 480 滑动窗口中位数
- Java实现 LeetCode 84 柱状图中最大得矩形
- Java实现 LeetCode 49 字母异位词分组
- java实现串的反转
- Java实现 蓝桥杯VIP 算法训练 一元三次方程
- Java实现 蓝桥杯VIP 基础练习 芯片测试
- (Java实现) 过河卒
- PHP+ajax实现二级联动【post+json方式】
- vuetify框架中服务端分页的实现方式(指定初始显示记录数)
- ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
- SAP ABAP 守护进程的实现方式
- Cloud for Customer里抓取Notification采取的是和CRM呼叫中心传统实现一样的Polling方式
- paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较
- SAP UI5 应用开发教程之九十 - 基于 OData V2 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
- SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定
- ML之FM:基于MovieLens电影评分数据集(文本特征编码)利用FM算法(因子分解机算法)实现(两种模型推理方式)对用户进行Top5电影推荐案例
- Android ViewHolder 的 MVVM实现方式
- 基于JAVA实现的WEB端UI自动化 - WebDriver高级篇 - WebDriver的三种等待方式
- 三次样条插值及三弯矩法完整(Matlab实现)
- 列主消元法(C语言实现)
- 盘点用jQuery框架实现“for循环”的四种方式!
- 教你3种Kafka的指定副本作为Leader的实现方式
- Springboot之整合SSE实现消息推送
- Android实现定时功能,闹钟+前台服务
- Qt 使用QSharedMemory方式实现数据跨界面传输
- OpenFRP实现内网穿透
- Spring注解方式实现任务调度
- Golang三种方式实现超时退出
- JSONP原理及实现跨域方式
- Pytest----通过fixture实现的参数化实现两组数据全排列组合测试
- Spring DI(依赖注入)的实现方式:属性注入和构造注入
- 二叉树的四种遍历方式(递归与非递归实现)
- python 递归方式实现斐波那契数列
- JMeter参数化4种实现方式