qt - Qt 中 QPainter::drawLine 和 QPainter::drawText 具有不同颜色问题

标签 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);
    }
}

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

最佳答案

这对我来说适用于 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();
}

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

qpainter

关于qt - Qt 中 QPainter::drawLine 和 QPainter::drawText 具有不同颜色问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483567/

相关文章:

c++ - Qt 程序与另一个编译器崩溃

python - 在pyqt中禁用窗口功能

C++ 变量不会在范围末尾被删除

c++ - 获取 QGuiApplication 的小部件列表

python - 导入错误 : libOpenGL. so.0:无法打开共享对象文件:没有这样的文件或目录

c++ - 使用 Boost.Signal 代替 Qt 的信号?没有moc吗?

c++ - QChartView QLineSeries 通过鼠标点击选择

c++ - 在 Qt 中读取连续 QProcess 的标准输出

c++ - Qt Grid 与 QgraphicsItem 拖放

c++ - Qt : Software using QOpenGLWidget crash on mainwindow. 显示()