不能将QBrush设置为QPainter

Cant set QBrush to QPainter

本文关键字:QPainter 设置 QBrush 不能      更新时间:2023-10-16
void Widget::paintEvent(QPaintEvent *) {
    QPainter painter(this);
    QBrush br;
    br.setColor(Qt::blue);
    painter.setBrush(br);
//    painter.setBrush(QBrush(Qt::blue));
    painter.drawRect(10, 10, 50, 50);
}

这段代码不起作用,没有绘制蓝色矩形。但是注释行工作得很好。为什么?

除了设置笔刷的颜色,还需要设置笔刷的样式:

br.setStyle(Qt:SolidPattern);

如果检查第二个示例中使用的默认构造函数和构造函数签名,您将看到上面的调用是必需的:

QBrush ( const QColor & color, Qt::BrushStyle style = Qt::SolidPattern )

QBrush::QBrush ()

构造一个样式为Qt::NoBrush的默认黑色画笔(即笔刷无法填充形状)

从http://doc.qt.io/qt - 4.8 -/- qbrush.html

QBrush::QBrush ( Qt::BrushStyle style )

构造一个给定样式的黑色画笔。

QBrush::QBrush ()

构造一个样式为Qt::NoBrush的默认黑色笔刷(即此笔刷将不填充形状)。

QBrush br = QBrush();