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);
}
此代码不起作用,未绘制蓝色矩形。但评论的行很好。为什么?
答案 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();
应该可以实例化对象。