QPainter绘画一段带多种颜色样式的文本

int pos = text.indexOf(keyWord, 0, Qt::CaseInsensitive);
QString text_one = text.mid(0, pos);
QString strElidedText_one = fm.elidedText(text_one, Qt::ElideRight, fm.width(text_one), Qt::TextShowMnemonic);
painter->setPen(QPen(QColor(255, 255, 255)));
painter->drawText(QRect(x + 80, y + 15, width, height), strElidedText_one);
int len = fm.width(strElidedText_one);
QString strElidedText_keyWord = fm.elidedText(keyWord, Qt::ElideRight, fm.width(keyWord), Qt::TextShowMnemonic);
painter->setPen(QPen(QColor(14, 242, 209)));
painter->drawText(QRect(x + 80 + len, y + 15, width, height), strElidedText_keyWord);
QString text_two = text.mid(pos + keyWord.size());
if (!nickName_two.isEmpty()) {
	len = len + fm.width(strElidedText_keyWord);
	QString strElidedText_two = fm.elidedText(text_two, Qt::ElideRight, fm.width(text_two), Qt::TextShowMnemonic);
	painter->setPen(QPen(QColor(255, 255, 255)));
	painter->drawText(QRect(x + 80 + len, y + 15, width, height), strElidedText_two);
}

目前我采取的方法就是 先确定需要修改颜色的字段,然后从文本获取到改字段位置,然后截取前后字段,分别用QPainter去绘画这些字段对应的文本。
该方法只能凸出某个文本内某字段第一次出现的时候修改其颜色样式。
如若有更好的办法,望告知,谢谢~

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Qt 中,可以使用 QPainter 类来进行绘图操作,其中就包括绘制渐变圆弧。具体步骤如下: 1. 创建 QPainter 对象,并将其绑定到需要绘制的 QWidget 或 QImage 上。 2. 创建 QConicalGradient 对象,并设置其起始角度与结束角度。 3. 使用 setBrush() 方法将 QConicalGradient 对象设置为当前画刷。 4. 使用 drawArc() 方法绘制圆弧。 下面是一个简单的示例代码,可以绘制一个从红色到绿色的渐变圆弧: ```cpp void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 抗锯齿 // 创建 QConicalGradient 对象 QConicalGradient gradient(width() / 2, height() / 2, -90); gradient.setColorAt(0, Qt::red); gradient.setColorAt(1, Qt::green); // 将 QConicalGradient 对象设置为当前画刷 painter.setBrush(gradient); // 绘制圆弧 QRectF rect(50, 50, 200, 200); int startAngle = 30 * 16; // 起始角度(顺时针,以度为单位) int spanAngle = 120 * 16; // 跨度角度(顺时针,以度为单位) painter.drawArc(rect, startAngle, spanAngle); } ``` 在上述代码中,QConicalGradient 对象的构造函数第一个参数表示渐变中心点的 x 坐标,第二个参数表示渐变中心点的 y 坐标,第三个参数表示渐变的起始角度(顺时针,以度为单位)。在本例中,渐变中心点的位置为窗口中心,起始角度为 -90 度,表示从圆心向右的方向开始渐变。 使用 setColorAt() 方法可以设置渐变色的位置和颜色,这里将起始位置设置为 0,颜色为红色,结束位置设置为 1,颜色为绿色。 最后,使用 drawArc() 方法绘制圆弧,其中 QRectF 对象表示圆弧所在的矩形区域,startAngle 和 spanAngle 分别表示圆弧的起始角度和跨度角度。需要注意的是,这里的角度值是以 1/16 度为单位的,因此 30 度对应的值为 30 * 16。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离歌漠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值