C++ QPaint,为文本部分指定不同的颜色

C++ QPaint,为文本部分指定不同的颜色,c++,qt,colors,qpainter,C++,Qt,Colors,Qpainter,我有下面的代码通过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

我有下面的代码通过
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类/func可以为您做这项工作,所以您可以自己做:

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 ] );
}
QPainter painter(本);
painter.setRenderInt(QPainter::抗锯齿);
fillRect(QRect(10,10,200,100),QColor(100,100,100,120))//矩形颜色
QColor colors[3]={QColor(255,0,0255),QColor(0255,0255),QColor(0,0255,255)};
QString文本[3]={“1”、“2”、“3”};
QFontMetrics-fontmetrics(painter.font());
int y=20,
x=20;
对于(int i=0;i<3;++i)
{
painter.setPen(颜色[i]);
painter.drawText(x,y,text[i]);
x+=fontmetrics.width(文本[i]);
}

上面的代码使用
QFontMetrics
计算插入文本的长度(以像素为单位),然后将其添加到
x
中以获得下一个字符串

谢谢,效果很好,但是如何添加间距?只需更改字符串即可。例如到
QString文本[3]={“1”、“2”、“3”}。或者其他很多方式。这取决于您的实际代码中最有意义的内容。“替代”方法是使用Qt的富文本类(QTextDocument、QTextLine、QTextLayout)以多种格式绘制一条线,并绘制该线。@peppe富文本类在我看来对他的问题范围过于苛刻+谢谢你提到他们。