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

头文件的Delegate

 #pragma once

 #include <QStyledItemDelegate>
#include <QPainter> class WrapTextDelegate : public QStyledItemDelegate
{
Q_OBJECT public:
explicit WrapTextDelegate(QObject *parent = Q_NULLPTR);
~WrapTextDelegate(); public:
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const override;
};

Delegate实现文件:

 #include "WrapTextDelegate.h"

 WrapTextDelegate::WrapTextDelegate(QObject *parent)
: QStyledItemDelegate(parent)
{
} WrapTextDelegate::~WrapTextDelegate()
{
} void WrapTextDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
(void)(index); QString text = index.model()->data(index, Qt::DisplayRole).toString();
//绘制文本
painter->drawText(option.rect, Qt::TextWordWrap | Qt::AlignVCenter | Qt::AlignLeft, text);
//如果当前有焦点,就绘制一个焦点矩形,否则什么都不做
// drawFocus(painter, option, option.rect); }

最后在初始化QTableView的代码中写下:

 auto delegate = new WrapTextDelegate();

 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

QTableView中使用Delegate方式来实现对特定列的文本进行换行的更多相关文章

  1. Swift UIViewController中的delegate方式传值

    ios swift开发中有几种方式传值,看到简书上一篇不错的文章. 链接:http://www.jianshu.com/p/3e1173652996 一.通过segue进行传值 二.通过delegat ...

  2. QTableView中修改某个单元格或者行或者列内容颜色

    QTableView的单元格内容实现还是继承了TableViewModel类的data(const QModelIndex &index, int role) const函数,那个设置颜色的问 ...

  3. ios中关于delegate(委托)的使用心得

    ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...

  4. C#中的委托(Delegate)和事件(Event)

    原文地址:C#中的委托(Delegate)和事件(Event) 作者:jiyuan51 把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写的设计模式--观察者(Obs ...

  5. (转)C#中的委托(Delegate)和事件(Event)

    转自:http://blog.chinaunix.net/uid-576762-id-2733751.html   把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写 ...

  6. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  7. jquery中on/delegate的原理

    jquery中on/delegate的原理 早期版本中叫delegate, 后来有过live函数,再后来统一用on.下面的方法等效: // jQuery 1.3 $(selector).(events ...

  8. 浅谈c#中的delegate和event了

    一.开篇忏悔 对自己最拿手的编程语言C#,我想对你说声对不起,因为我到现在为止才明白c#中的delegate和event是怎么用的,惭愧那.好了,那就趁着阳光明媚的早晨简单来谈谈delegate和ev ...

  9. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

随机推荐

  1. ARDC Android 远程桌面助手 录屏 演示 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. WebView JS交互 addJavascriptInterface MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. AI 经典书单 | 人工智能学习该读哪些书

    转载 2018年01月16日 00:00:00   人工智能相关岗位中,涉及到的内容包含: 算法.深度学习.机器学习.自然语言处理.数据结构.Tensorflow.Python .数据挖掘.搜索开发. ...

  4. 服务器主体 "sa" 无法在当前安全上下文下访问数据库 XXX[SQLSTATE 08004] (错误 916). 该步骤失败。

    作业脚本为use XXX go 修改为选择XXX数据库

  5. Python实现爬虫设置代理IP和伪装成浏览器的方法(转载)

    https://www.jb51.net/article/139587.htm chrome_options = webdriver.ChromeOptions() chrome_options.ad ...

  6. z-index的堆叠规则

    原文: https://www.cnblogs.com/starof/p/4424926.html 对于所有定位,最后都不免遇到两个元素试图放在同一位置上的情况.显然,其中一个必须盖住另一个.但,如何 ...

  7. NSProxy

    NSProxy类在分布式对象架构中是很重要的.由于作用比较特别,NSProxy在Cocoa程序中出现频率很低. NSProxy 是一个抽象类,它为一些表现的像是其它对象替身或者并不存在的对象定义一套A ...

  8. 【Python】使用torrentParser1.02对多文件torrent的分析结果

    C:\Users\horn1\Desktop\python\41-torrentParser>python torrentParser.py 文件名=./6.torrent 文件结构: anno ...

  9. C语言编程流程

     大家都知道,写程序大体步骤为:1.用编辑器编写源代码,如.c文件.2.用编译器编译代码生成目标文件,如.o.3.用链接器连接目标代码生成可执行文件,如.exe.但如果源文件太多,一个一个编译时就会特 ...

  10. 解决 IllegalArgumentException: Could not resolve placeholder in string value "${XXXXXX}"

    如题: 导致这一问题的原因:使用了重复的property-placeholder 如一个配置文件中使用了 <context:property-placeholder location=" ...