Details
-
Bug
-
Resolution: Out of scope
-
P2: Important
-
4.5.0
-
None
Description
Rendering of simple lines using QGraphicsView is broken. The lines are almost vertical (just one pixel of horizontal shift): Line ( x1, y1, x1+1, y2) and with y2-y1 very large. The problem happens when using native engine and no AA. Running with "-graphicssystem raster" solves the issue.
Test case (use the scrollbar down and up and watch the artifacts):
#include <QtGui/QtGui> class GraphLine : public QGraphicsView { public: GraphLine() : QGraphicsView() { QGraphicsScene *scene = new QGraphicsScene(this); setScene(scene); QLineF fline1; QLineF fline2; QLineF fline3; QLineF fline4; QLineF fline5; QLineF fline6; QLineF fline7; QLineF fline8; float dy = -1000.0; float dx = 100.0; fline1.setLine (15.0, 10.0, 16.0, 20010.0); fline2.setLine (25.0, 20.0, 26.0, 20020.0); fline3.setLine (55.0, 50.0, 56.0, 20050.0); fline4.setLine (65.0, 60.0, 66.0, 20060.0); fline5.setLine (15.0+dx, 10.0+dy, 16.0+dx, 20010.0-dy); fline6.setLine (25.0+dx, 20.0+dy, 26.0+dx, 20020.0-dy); fline7.setLine (55.0+dx, 50.0+dy, 56.0+dx, 20050.0-dy); fline8.setLine (65.0+dx, 60.0+dy, 66.0+dx, 20060.0-dy); QGraphicsLineItem* line1 = new QGraphicsLineItem(fline1); QGraphicsLineItem* line2 = new QGraphicsLineItem(fline2); QGraphicsLineItem* line3 = new QGraphicsLineItem(fline3); QGraphicsLineItem* line4 = new QGraphicsLineItem(fline4); QGraphicsLineItem* line5 = new QGraphicsLineItem(fline5); QGraphicsLineItem* line6 = new QGraphicsLineItem(fline6); QGraphicsLineItem* line7 = new QGraphicsLineItem(fline7); QGraphicsLineItem* line8 = new QGraphicsLineItem(fline8); scene->addItem(line1); scene->addItem(line2); scene->addItem(line3); scene->addItem(line4); scene->addItem(line5); scene->addItem(line6); scene->addItem(line7); scene->addItem(line8); setMinimumSize(200, 400); setWindowTitle(tr("Lines")); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); GraphLine widget; widget.show(); return app.exec(); }