首页 > 解决方案 > 在 QT 中为 QPainter 设置填充颜色(不是描边颜色)

问题描述

如何为QPainterQT 设置填充颜色(不是笔触颜色)?

例如,我有一个负责填充矩形的代码。看起来像:

painter.fillRect(fillRect, Qt::SolidPattern);

painter的类型在哪里QPainter。当然,我知道可以将case中的颜色指定为第二个参数,但是我的程序中有这样的设计,如果我可以painter预先设置填充颜色会好很多(默认颜色是黑色的)。

我尝试使用painter.setBackground(Qt::yellow);,但没有帮助。

嗯。据此,我们有:

将画家的画笔设置为给定的画笔。

画家的画笔定义了如何填充形状。

所以,我希望像

QRect fillRect;
painter.setBrush(QBrush(Qt::yellow));
painter.fillRect(fillRect, Qt::SolidPattern);

去工作。但事实并非如此。我究竟做错了什么?

调试后发现该setBrush方法根本没有更新画笔颜色: 在此处输入图像描述

颜色rgb保持不变:(0, 0, 0)。

标签: c++qtcolorsqt5qpainter

解决方案


fillRect()接受 aQBrush作为第二个参数,所以我可以使用它:

painter.fillRect(r, QBrush(Qt::yellow, Qt::SolidPattern));

更新:

#include <QApplication>
#include <QLabel>
#include <QPainter>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap(128, 128);
    pixmap.fill(Qt::transparent);

    QPainter painter(&pixmap);
    QRect r= pixmap.rect();
    painter.setBrush(QBrush(Qt::yellow));
    painter.fillRect(r, painter.brush());
    painter.end();

    QLabel w;
    w.setPixmap(pixmap);
    w.show();

    return a.exec();
}

在此处输入图像描述


推荐阅读