QTableWidget选中Item之后,不改变文字颜色

QTableWidget选中Item之后,保留默认文字颜色

问题描述:

我们有时候需要给表格的不同单元格设置不同的显示颜色,但是当我们选中一个单元格以后,单元格的状态都会变成蓝底白字。即使是给文字设置了颜色,选中后文字颜色也被显示为白色。与我们想要的效果不符。

解决方法:

继承QItemDelegate类,重写paint函数。

主要代码

  • 重写QItemDelegate的paint函数
class ItemDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    ItemDelegate(QObject* pParent = 0): QItemDelegate(pParent)
    {
    }
    void paint(QPainter* pPainter, const QStyleOptionViewItem& rOption, const QModelIndex& rIndex) const
    {
        QStyleOptionViewItem ViewOption(rOption);

        QColor ItemForegroundColor = rIndex.data(Qt::ForegroundRole).value<QColor>(); //记录原有的单元格前景色
        if (ItemForegroundColor.isValid())
        {
            if (ItemForegroundColor != rOption.palette.color(QPalette::WindowText))
            {
                ViewOption.palette.setColor(QPalette::HighlightedText, ItemForegroundColor);
            }
        }
        QItemDelegate::paint(pPainter, ViewOption, rIndex);
    }
};
  • 设置委托
    ui->tableWidget->setItemDelegate(new ItemDelegate(this));
  • 修改文本颜色
ui->tableWidget->item(row,column)->setTextColor(Qt::red);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值