Seite 1 von 1

QGraphicsview Performance Probleme...

Verfasst: 18. Dezember 2013 17:27
von flownfluid
Hallo Leute,

ich habe ein recht grosses Performance Problem mit QT. Ich habe folgenden Code:

Code: Alles auswählen

  QApplication* l_App = new QApplication(argc,argv);

  QGraphicsScene* l_Scene = new QGraphicsScene();
  l_Scene->setSceneRect(0,0,1000,1000);

  for(int i = 0 ; i < 1000000 ; i++)
  {
	  l_Scene->addLine(i*2,0, i*2,10,QPen(Qt::black));
  }

  QGraphicsView l_View;
  l_View.setScene(l_Scene);
  l_View.show();

  l_App->exec();
Das Programm macht nichts anderes als 1 Million Linien. Scroll ich nun die View oder ändere ich die Grösse des Fenster springt mein CPU auf 100% und das Programm ist blockiert für die nächste Minute...

Kann mir jemand mal sagen wieso das soooo langsam ist? Oder mach ich da irgendwo ein Überlegungsfehler?

Vielen Dank schon im voraus

Re: QGraphicsview Performance Probleme...

Verfasst: 18. Dezember 2013 18:42
von Christian81
1 Million Linien sind einfach zu viel. Außerdem: was soll ein Nutzer bei 1 Million Linien noch sehen?
Wenn Du graphen anzeigen willst würde ich mal qwt anschauen.

Re: QGraphicsview Performance Probleme...

Verfasst: 18. Dezember 2013 18:55
von flownfluid
Hallo Christian,

was man mit 1 Million Linien noch sehen kann? Hmm als Bsp. könnte man ein Röhrensystem(Kanalsystem) einer Stadt nachbilden.
Und genau da bringt Qt Graphicsview genau das nötige Instrumen das man etwas sieht...
Rausgezoomt sieht man nur noch die Hauptstränge und je mehr man reinzoomt desto genauer sieht man die einzelnen Stränge.

Schade das dies QT übern haufen wirft... Da ja die View nur jedesmal einen Auszug der Szene zeigt, dachte ich dies sei ohne Probleme möglich

Gruss Matthias

Re: QGraphicsview Performance Probleme...

Verfasst: 18. Dezember 2013 19:16
von Christian81
Aber selbst da sollte man je nach zoomlevel nur das anzeigen was man wirklich sieht - 1 Mio Linien zeigt niemand einfach so auf den Bildschirm an. Der Ansatz ist einfach falsch.