问题描述
在应用Qt的QGraphics图形/视图框架绘制图形项大小、线宽等值不随图层比例放大时需要重写图形项的paint
(操作可参考http://t.csdn.cn/NFh9a),重写后达到效果但原本设置的颜色填充setBrush
会失效
解析:
图形项的绘制工作在paint
中完成,按参考博客中的操作绘制的只是图形项的路径,需要实现setBrush
填充效果需要在paint
中添加对brush
的判断
void XXXX::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
//反比放大缩小
double scaleFactor = painter->matrix().m11();
QPen myPen = this->pen();
myPen.setWidthF(myPen.widthF() / scaleFactor);
painter->setPen(myPen);
//添加颜色填充
if (this->brush() != QBrush())
{
painter->setBrush(this->pen().color());
}
//重绘操作,根据继承的不同类型图形项进行选择
painter->drawRect(this->rect());
}