我使用QPainter
使用以下代码绘制我的小部件:
QPen pen(Qt::black, 0.6, Qt::SolidLine);
QPainter painter(this);
painter.setPen(pen);
// vertical
painter.drawLine(startX,0,startX,50);
painter.drawLine((startX += grid),0,startX,50);
painter.drawLine((startX += grid),0,startX,50);
painter.drawLine((startX += grid),0,startX,50);
painter.drawLine((startX += grid),0,startX,50);
painter.drawLine((startX += grid),0,startX,50);
// horizontal
pen.setWidth(0.7);
painter.setPen(pen);
painter.drawLine(0,grid*2,70,grid*2);
painter.drawLine(0,grid*4,70,grid*4);
painter.drawLine(0,grid*6,70,grid*6);
painter.drawLine(0,grid*8,70,grid*8);
当我将这个项目添加到QGraphicsScene
时,线条的宽度有时看起来彼此不同,尤其是当我放大时。任何人都可以解释为什么会发生这种情况以及可以采取哪些措施来解决它?
此屏幕截图显示了问题:
答案 0 :(得分:2)
这是浮点舍入和场景插值/渲染的副作用。在大多数缩放级别,从场景像素到视图像素都不会有完美的一对一匹配。对于小数笔宽度尤其如此。通过在QGraphicsView
:
...
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
....
还可以传入other rendering hints。