无法将QBrush设置为QPainter

时间:2013-04-21 11:47:07

标签: c++ qt user-interface paint

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

此代码不起作用,未绘制蓝色矩形。但评论的行很好。为什么?

2 个答案:

答案 0 :(得分:2)

除了设置画笔的颜色外,还需要为画笔设置样式:

br.setStyle(Qt:SolidPattern);

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

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

QBrush::QBrush ()

     

构造一个带有Qt :: NoBrush样式的默认黑色画笔(即这个   刷子不会填充形状)。

答案 1 :(得分:1)

来自http://doc.qt.io/qt-4.8/qbrush.html

QBrush::QBrush ( Qt::BrushStyle style )

构造具有给定样式的黑色画笔。

QBrush::QBrush ()

使用Qt :: NoBrush样式构造默认的黑色画笔(即此画笔不会填充形状)。

所以

QBrush br = QBrush();

应该可以实例化对象。