在 QTableView 中为一行着色
Posted
技术标签:
【中文标题】在 QTableView 中为一行着色【英文标题】:Color a row in QTableView 【发布时间】:2018-11-24 16:55:17 【问题描述】:我需要。不是项目,我需要排!我正在使用 QSqlQueryModel。据我所知,它是由 QItemDelegate 执行的。帮我 对不起我的英语,但我需要它!
【问题讨论】:
请以文本形式提供代码而不是图像。 到目前为止你有什么尝试? 要编写委托,请查看此示例:doc.qt.io/qt-5/qtwidgets-itemviews-stardelegate-example.html,您可以使用 setItemDelegateForRow 一次为整行设置委托。但是,您也可以考虑编写 QSqlQueryModel 的后代并覆盖 data 方法并处理 Qt::BackgroundRole 的请求 这对我没有帮助(It doesn't help me
它的哪些方面没有帮助?你试过什么,为什么没有成功?请具体说明这些。
【参考方案1】:
试试这样的。 我在这里写了这段代码,所以 idk 是否有效。
ItemDelegatePaint::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
if(index.row() == 1) /*check for your row*/
painter->fillRect(option.rect, Qt::red);
painter->setPen(QColor(Qt::white));
painter->drawText(option.rect, Qt::AlignCenter, index.data(Qt::DisplayRole).toString());
else
QStyledItemDelegate::paint(painter, option, index);
【讨论】:
@sardorkun 我更新了我的评论。但是,请尝试了解它是如何工作的,并用自己的方式制作。以上是关于在 QTableView 中为一行着色的主要内容,如果未能解决你的问题,请参考以下文章