c – 如何在QTableView中为特定单元格着色或使文本变为粗体?

c – 如何在QTableView中为特定单元格着色或使文本变为粗体?,第1张

概述我已经使用QTableView来查看我的Qt程序中的表格数据,并且我需要将某些单元格区别于其他单元格,可以在这些特定单元格中绘制字体粗体或绘制这些特定单元格的背景. 有人可以提供代码,而不仅仅是说使用QAbstractItemDelegate吗? 我阅读了QAbstractItemDelegate的文档,但无法理解,请使用示例进行解释. 无需使用抽象委托. Styled delegate完成了您需 我已经使用QtableVIEw来查看我的Qt程序中的表格数据,并且我需要将某些单元格区别于其他单元格,可以在这些特定单元格中绘制字体粗体或绘制这些特定单元格的背景.

有人可以提供代码,而不仅仅是说使用QAbstractItemDelegate吗?

我阅读了QAbstractItemDelegate的文档,但无法理解,请使用示例进行解释.

解决方法 无需使用抽象委托. Styled delegate完成了您需要的大部分工作.使用它并重新实现只需要的行为.

.H:

#include <qstyledItemDelegate>class MyDelegate : public qstyledItemDelegate{    Q_OBJECT    public:        explicit MyDelegate(QObject *parent = 0);        voID paint(QPainter *painter,const qstyleOptionVIEwItem &option,const QModelindex &index) const;    private:        bool shouldBeBold(const QModelindex &index);}

的.cpp:

MyDelegate::MyDelegate(QObject *parent) :    qstyledItemDelegate(parent){}voID MyDelegate::paint(QPainter *painter,const QModelindex &index) const{    qstyleOptionVIEwItem opt = option;    initStyleOption(&opt,index);    QVariant data = index.data(...); // pick the data you need here    opt.Font.setBold(shouldBeBold(data));    qstyledItemDelegate::paint(painter,opt,index);}bool MyDelegate::shouldBeBold(const QModelindex &index){    // you need to implement this}

然后将委托应用于视图.如果shouldBeBold()返回false,则委托将绘制为标准的.如果返回true,则将应用粗体字体.

我希望你能够开始.

总结

以上是内存溢出为你收集整理的c – 如何在QTableView中为特定单元格着色或使文本变为粗体?全部内容,希望文章能够帮你解决c – 如何在QTableView中为特定单元格着色或使文本变为粗体?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存