Seite 1 von 1

dartsellungsfehler bei graphicsitems

Verfasst: 29. Dezember 2009 23:37
von slash-ex
Ich habe Darstellungsfehler bei einem Zeichentest, den ich ausführe bevor ich eine komplexere Zeichenfunktion auf graphicsitems übertrage. aber ich weis leider nicht warum der fehler auftritt.
Standardmäßig wird immer Qt::NoBrush verwendet, nur falls ich einen anderen setze soll das rechteck gefüllt werden. leider kommt es zu artefakten wenn ich dann scrolle (siehe thumbs). der fehler tritt auch auf, wenn ich statt NoBrush einen anderen brush setze, es bilden sich immer weise zwischenräume beim scrollen.

Code: Alles auswählen

	NucItem(int iPosX, int iPosY, int iWidth, int iHeight, QString sNuc, int iIndex = 0,
			QBrush bBrush = QBrush(Qt::NoBrush) );

Code: Alles auswählen

    QGraphicsView view;
    QGraphicsScene *scene = new QGraphicsScene;

    for(int y = 0; y < 100; y++)
    	for(int x = 0; x < 100; x++) {
    		NucItem *item;
    		if(x%2 == 0)
    			item = new NucItem(x+x*16, y+y*16, 16, 16, "A", y*100+x);
    		else item = new NucItem(x+x*16, y+y*16, 16, 16, "B", y*100+x, QBrush(Qt::red) );
    		scene->addItem(item);
    	}

    view.setScene(scene);
    view.show();

Code: Alles auswählen

void NucItem::paint(QPainter *pPainter, const QStyleOptionGraphicsItem *pOption, QWidget *pWidget) {
    QRect rRect(m_iPosX, m_iPosY, m_iWidth, m_iHeight);
    QPen pPen(Qt::black, 1);

	pPainter->setBrush(m_bBrush);
	pPainter->setPen(pPen);

	m_ppPath.addRect(rRect);
//	m_ppPath.addText(m_iPosX+m_iWidth/2, m_iPosY+m_iHeight/2, QFont(), m_sNucleotide);

	pPainter->drawPath(m_ppPath);
	pPainter->drawText(rRect, Qt::AlignCenter, m_sNucleotide);
}
nicht gescrollt:
Bild
gescrollt:
Bild

edit:
tritt anscheinend nur bei painterpath' auf

Verfasst: 30. Dezember 2009 08:36
von franzf
Warum verwaltest du Position selber?
Dein Problem ist ziemlich sicher ein fehlerhaft implementiertes boundingRect().