QPainter,为文本部分分配不同的颜色
QPainter, assigning different colors to text parts
我有下面的代码显示一些文本通过QPainter
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(QColor(10, 10, 10, 255)); // text color
painter.fillRect(QRect(10, 10, 200, 100), QColor(100, 100, 100, 120)); //rectangular color
painter.setFont(font);
painter.drawText(20, 20, "1 2 3 4");
我想通过不同的颜色显示文本的每个部分,例如1
为黑色,2
为白色,3
为蓝色,4
为红色。所有的文字应该在同一行。我该怎么做呢?
我不知道任何Qt类/函数为您做这项工作,所以您可以自己做:
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.fillRect(QRect(10, 10, 200, 100), QColor(100, 100, 100, 120)); //rectangular color
QColor colors [ 3 ] = { QColor(255, 0, 0, 255), QColor(0, 255, 0, 255), QColor(0, 0, 255, 255) };
QString texts [ 3 ] = { "1", "2", "3" };
QFontMetrics fontmetrics ( painter.font () );
int y = 20,
x = 20;
for ( int i = 0; i < 3; ++ i )
{
painter.setPen ( colors [ i ] );
painter.drawText ( x, y, texts [ i ] );
x += fontmetrics.width ( texts [ i ] );
}
上面的代码使用QFontMetrics
来计算插入文本的像素长度,然后将其添加到x
中作为下一个字符串。
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- 如何在24位SDL_Surface上设置像素的颜色
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- 自定义先决条件对移动分配运算符有效吗
- QPainter,为文本部分分配不同的颜色
- 为立方体的每一面分配颜色