gpt4 book ai didi

c++ - QListWidget 更改文本的部分颜色

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:16 24 4
gpt4 key购买 nike

点击这里打开示例图片,红色箭头是我想要的,但是输出只显示了所有代码,并没有像蓝色箭头那样工作

我尝试使用 < font color = red >...< /font > || < span >...< /span >在 QListWidget 中,但没有任何效果

我想要的是这样的东西:

item1 <font color=red>apple</font> ("item1" black, "apple" will output as red color)
item2 <font color=green>durian</font> (durian will output as green color)

有人可以帮忙吗?

Ps: 其实我想要的是下图: 当我输入单词“cola”时,QListwidget 的列表将突出显示/将颜色“%cola%”更改为不同的颜色。

最佳答案

QListWidget 默认情况下不呈现 Html,但为此 Qt 具有允许自定义 View 的委托(delegate)类。

在这种情况下,我们使用以下委托(delegate):

#ifndef HTMLDELEGATE_H
#define HTMLDELEGATE_H

#include <QPainter>
#include <QStyledItemDelegate>
#include <QTextDocument>

class HtmlDelegate : public QStyledItemDelegate
{
public:
void paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
QStyleOptionViewItem options = option;
initStyleOption(&options, index);

painter->save();

QTextDocument doc;
doc.setHtml(options.text);

options.text = "";
options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);

painter->translate(options.rect.left(), options.rect.top());
QRect clip(0, 0, options.rect.width(), options.rect.height());
doc.drawContents(painter, clip);
painter->restore();
}

QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const
{
QStyleOptionViewItem options = option;
initStyleOption(&options, index);

QTextDocument doc;
doc.setHtml(options.text);
doc.setTextWidth(options.rect.width());
return QSize(doc.idealWidth(), doc.size().height());
}
};

#endif // HTMLDELEGATE_H

然后使用QListWidgetsetItemDelegate()方法如下图:

ui->listWidget->setItemDelegate(new HtmlDelegate);

得到如下图所示:

enter image description here

完整的例子可以在下面的link找到.

关于c++ - QListWidget 更改文本的部分颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46189816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com