Qt之QTableView显示富文本
Qt 显示 文本 QTableView
2023-09-11 14:19:16 时间
对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本、进度条、复选框等,今天我们介绍一下关于富文本的显示。
可能绝大多数小伙伴会通过QAbstractTableModel中的data来实现,可是现实告诉我们,那是行不通的,那么我们如何去显示呢?请看正文。
QT QtableView操作详解 本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删改查功能。
Qt-QML-自定义个自己的文本Text 好久都没有正经的更新自己的文章了,这段时间也辞职了,听了小爱的,准备买个碗,自己当老板,下面请欣赏效果图
对于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来进行文本的绘制,绘制区域通过整个文本区域经过坐标变换后得到的。
QT QtableView操作详解 本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删改查功能。
Qt-QML-自定义个自己的文本Text 好久都没有正经的更新自己的文章了,这段时间也辞职了,听了小爱的,准备买个碗,自己当老板,下面请欣赏效果图
相关文章
- Qt之QTableView显示富文本
- Qt-Qt使用lcdNumber显示LED数据时钟(Qt5.14.2+win10)
- Qt-Qt之QHash的使用分析
- Qt设置窗口不在系统的任务栏上显示
- Qt中QMessageBox的使用与中文按钮显示方法(Qt提示框)
- Qt-Qt的窗口显示的内容转化为图片
- Qt-开发环境中的代码中文显示正常,但是运行后是乱码?
- QT-Qt图片按钮类
- QT-在Qt Widgets Application中怎么显示printf的输出内容?
- Qt编写的项目作品11-带频谱的音乐播放器
- Qt编写安防视频监控系统29-掉线重连
- Qt开发经验小技巧216-220
- Qt-QImage
- qt之实现鼠标操作子控件移动窗体(亲测简单好用,有问题私聊)
- Qt之opencv视频播放带进度条
- QT使用tableWidget显示双排列表 并且选中用红框圈出来
- QT 常见错误
- Qt设置TextEdit一直显示最新的数据
- Qt文本过长时,缩减文本并显示省略号
- Ubuntu16.04打开Qt显示/home/user/.config/QtProject/qtcreator/qtversion.xml : Permission denied
- qt 实现RTSP&RTMP拉流,实时显示视频流
- Qt之窗口居中显示
- QT项目中显示中文
- 嵌入式Linux开发,Qt开发界面中,不显示鼠标箭头
- Qt学习一门:直接使用QT具
- Qt—MVC架构
- 【Qt】通过创建ui界面类成员变量的方式显示窗体
- Qt编写可视化大屏电子看板系统14-标准曲线图
- QT线程3 WaitCondition