在QT中设置QPainter的填充颜色(不是笔触颜色)

时间:2018-06-17 21:22:12

标签: c++ qt colors qt5 qpainter

如何设置QT中inputLine的填充颜色(而不是笔触颜色)?

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

QPainter

painter.fillRect(fillRect, Qt::SolidPattern); 的类型为painter。当然,我知道可以将案例中的颜色指定为第二个参数,但我的程序中有这样的设计,如果我事先设置QPainter填充颜色会更好一些(默认情况下颜色为黑色)。

我尝试使用painter,但没有帮助。

嗯。根据{{​​3}}我们有:

  

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

     

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

所以,我希望像

这样的东西
painter.setBackground(Qt::yellow);

上班。但事实并非如此。我做错了什么?

调试后发现QRect fillRect; painter.setBrush(QBrush(Qt::yellow)); painter.fillRect(fillRect, Qt::SolidPattern); 方法根本不更新画笔颜色: this

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

1 个答案:

答案 0 :(得分:1)

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

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();
}

enter image description here