Qt之QTableView显示富文本
Qt 显示 文本 QTableView
2023-09-14 08:56:50 时间
对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本、进度条、复选框等,今天我们介绍一下关于富文本的显示。
可能绝大多数小伙伴会通过QAbstractTableModel中的data来实现,可是现实告诉我们,那是行不通的,那么我们如何去显示呢?请看正文。
下面我们使用QAbstractItemDelegate来进行富文本的显示,主要通过QTextDocument设置HTML代码来实现。
void CheckBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem option, const QModelIndex index) const QStyleOptionViewItem viewOption(option); initStyleOption( viewOption, index); if (option.state.testFlag(QStyle::State_HasFocus)) viewOption.state = viewOption.state ^ QStyle::State_HasFocus; // ... 省略 // 设置显示文本为空,使用默认样式 QStyle *pStyle = viewOption.widget? viewOption.widget- style() : QApplication::style(); viewOption.text = ""; pStyle- drawControl(QStyle::CE_ItemViewItem, viewOption, painter, viewOption.widget); // 需要显示的HTML QString strHTML = QString(" html \ head \ style \ font{font-size:18px; color:white;} #f{font-size:26px; color: green;} \ /style \ /head \ body \ font %1 /font font id=\"f\" %2 /font \ img src=\":/Images/logo\" width=\"40\" height=\"40\" \ /body \ /html ").arg("I am a ").arg("Qter"); QTextDocument doc; doc.setHtml(strHTML); QAbstractTextDocumentLayout::PaintContext paintContext; QRect textRect = pStyle- subElementRect(QStyle::SE_ItemViewItemText, viewOption); painter- save(); // 坐标变换,将左上角设置为原点 painter- translate(textRect.topLeft()); // 设置HTML绘制区域 painter- setClipRect(textRect.translated(-textRect.topLeft())); doc.documentLayout()- draw(painter, paintContext); painter- restore(); }
首先我们需要保留原有样式,所以设置QStyleOptionViewItem的文本为空,然后调用QStyle的drawControl接口来进行绘制,然后通过QTextDocument设置HTML代码,利用QPainter来进行文本的绘制,绘制区域通过整个文本区域经过坐标变换后得到的。
相关文章
- VS中新建Qt项目工程后显示无法打开源文件“QtWidgets/QApplication”的解决方案「建议收藏」
- QT 读取csv文件「建议收藏」
- Qt浅谈之七:抽奖软件(可显示图片和姓名)
- C/C++ Qt TableDelegate 自定义代理组件
- C/C++ Qt 数据库与Chart实现历史数据展示
- 76.qt qml-QianWindow开源炫酷界面框架(支持白色暗黑渐变自定义控件均以适配)
- Qt官方示例-数据库浏览器
- Linux串口应用开发实践——Qt篇(linux串口qt)
- Qt类库模块划分详解
- Qt QComboBox下拉框及用法(详解版)
- Qt软键盘: 让Linux更快速实现输入(linuxqt软键盘)
- Qt在Linux下的强大开发体验(qt在linux开发)
- 实现Linux下Qt应用静态编译的方法(linux下qt静态编译)
- 在Linux中安装Qt第三方库的指南(linux安装qt库)
- Qt 静态编译在 Linux 的实践(qt静态编译linux)
- 利用Linux系统和QT技术实现高效嵌入式应用程序开发(linux嵌入式qt)
- Linux下Qt发布程序:一步一步教你操作(linuxqt发布程序)
- Linux 下 Qt 动态库实现快速开发手段(linuxqt动态库)
- 入门Linux下Qt编程,掌握技巧!(linux下qt编程入门)
- 快速上手!QT在Linux下的发布指南(qtlinux下发布)
- Linux环境下如何卸载Qt应用(linux卸载qt)
- 深入浅出:使用Qt连接MSSQL(qt 连接mssql)
- 轻松实现QT直连Microsoft SQL Server(qt直连mssql)
- Qt与SQLServer结合,提升开发效率(qt和sqlserver)
- 编程使用Qt快速实现SQLServer数据库编程(qt中sqlserver)
- Qt 与 MySQL 数据库的数据插入操作(qtmysql插入)
- Redis与Qt实现完美连接(redis连接qt)