博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QTableView中使用Delegate方式来实现对特定列的文本进行换行
阅读量:6571 次
发布时间:2019-06-24

本文共 1388 字,大约阅读时间需要 4 分钟。

问题:由于表格的一个列中,有个别文本过长,默认情况下,QTableView不支持对某列的文本换行,所以需要通过Delegate方式来实现这样的效果

头文件的Delegate

1 #pragma once 2  3 #include 
4 #include
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) const13 {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:

转载于:https://www.cnblogs.com/foohack/p/8328837.html

你可能感兴趣的文章
Java线程专栏文章汇总(转)
查看>>
listview中getview异步加载网络图片
查看>>
【AdaBoost算法】积分图代码实现
查看>>
如何让jquery-easyui的combobox像select那样不可编辑
查看>>
Linq之扩展方法
查看>>
【Bug Fix】Error : Can't create table 'moshop_1.#sql-534_185' (errno: 150)
查看>>
Android DownloadManager 的使用
查看>>
Android数据的四种存储方式
查看>>
上海互联网整体沉沦:盛大巨人全没落 8年没出一个马云
查看>>
fabric批量操作远程操作主机的练习
查看>>
css知多少(7)——盒子模型
查看>>
【转】在Ubuntu上下载、编译和安装Android最新源代码
查看>>
Dubbo入门实例--转载
查看>>
设计模式C++学习笔记之三(Singleton单例模式)
查看>>
【Oracle学习笔记-4】内连接和外连接的区别
查看>>
CSS初始化示例代码
查看>>
管道的故事(转)
查看>>
基于jquery响应式网站图片无限加载瀑布流布局
查看>>
关于开源的金玉良言
查看>>
Library Cache: Lock, Pin and Load Lock
查看>>