QPainter :: drawLine和QPainter :: drawText在Qt中有不同的颜色问题

use*_*217 8 qt

我使用QPainter来绘制不同颜色的线条和文字时遇到问题.我使用以下代码来实现这一点,但它无法正常工作.使用用于绘制文本的颜色集绘制线条和文本.

void MyWidget::drawHorLinesWithText(QPainter & painter, const QRect & rect)
{  
    for(int i=0; i < 5; i++)
    {
        QPen penHLines(QColor("#0e5a77"), 1, Qt::DotLine, Qt::FlatCap, Qt::RoundJoin);
        painter.setPen(penHLines);
        painter.drawLine(10, 50 - (5*(i+1)), 200, 50 - (5*(i+1)));

        QString strNumber = QString::number((2)*(i+1));

        painter.setFont(QFont("Arial", 8, QFont::Bold));
        //QBrush brush(QColor("#00e0fc"));
        //painter.setBrush(brush);
        QPen penHText(QColor("#00e0fc"));//Here lines are also drawn using this color
        painter.setPen(penHText);
        painter.drawText(5, 50 - (5*(i+1)) - 10), 20, 30, Qt::AlignHCenter | Qt::AlignVCenter,
                         strNumber);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何为绘制线条和文本设置不同的颜色.有什么建议.谢谢.

Mit*_*tch 6

Qt 5.3对我有用; 也许这是你使用的版本中的一个错误?

#include <QtWidgets>

class Widget : public QWidget
{
public:
    Widget() {
        resize(200, 200);
    }

    void paintEvent(QPaintEvent *) {
        QPainter painter(this);
        for(int i=0; i < 5; i++)
        {
            QPen penHLines(QColor("#0e5a77"), 10, Qt::DotLine, Qt::FlatCap, Qt::RoundJoin);
            painter.setPen(penHLines);
            painter.drawLine(10, 50 - (5*(i+1)), 200, 50 - (5*(i+1)));

            QString strNumber = QString::number((2)*(i+1));

            painter.setFont(QFont("Arial", 8, QFont::Bold));
            QPen penHText(QColor("#00e0fc"));
            painter.setPen(penHText);
            painter.drawText(5, 50 - (5*(i+1)) - 10, 20, 30, Qt::AlignHCenter | Qt::AlignVCenter, strNumber);
        }
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Widget w;
    w.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我将线宽增加到10,看看发生了什么:

QPainter的


Ste*_*Chu 0

QPainter 使用 QBrush 绘制文本,而不是 QPen。文本用字形笔划渲染,然后用当前画笔填充。当前笔仅控制线条和笔画。

  • 根据文档:[QPainter::setPen()](http://developer.qt.nokia.com/doc/qt-4.8/qpainter.html#setPen)“笔定义如何绘制线条和轮廓,并且它还定义了文本颜色。” (4认同)