Seite 1 von 1

Redisign eines Shadereditors für QT4 (QListview, MDI...)

Verfasst: 1. Januar 2007 19:27
von oc2k1
Hi @ all,

Ich hab in den letzten 3 Monaten ein programm mit QT3 und QSA1.1 geschrieben, welches Rendermonkey oder FX Composer ersetzten kann. Da QT3 nicht unter windows kompeliert werden kann hatte ich eigendlich die portrung mit eingeplant gehabt, allerdings sind die unterschiede zwischen QT3 und TQ4 so groß das ich wenigstens das Mainwindow neu schreiben muss.

erst mal ein paar Bilder von dem altem Programm:

http://cpux.de/index.php?url=/editor10.png (scriptcode volkommen veralltet)
http://cpux.de/index.php?url=/editor36.jpg
http://cpux.de/index.php?url=/editor42.jpg
http://cpux.de/index.php?url=/editor45.jpg

und der Quellcode: http://cpux.de/opengl.qsa9.tar.bz2

Das ganze Programm ist quasi um den Tree herumgebaut. DIe Items im Scenetree sind alle cvon einer gemeinsammen Basisklasse abgeleitet, die durch Mehrfachvererbung aus QListViewItem und QObject entsanden ist. (Dies war umbedingt nötig damit QSA auf die Items im Tree als Objekte zugreifen kann)

Der zweite große problempunkt war das MDI interface, welches im Handling alles andere als komfortabel ist (war dafür sehr schnell einzubauen.

So stell ich mit die neue QT4 basierende Löung vor:

Das MDI interface wird provesorisch durch ein Dockwidget ersetzt, welches den rechten berech neben dem Tree nutzen kann. Dadurch können sich die einzelnen Fenster nicht mehr überdecken.
Mit QT4.1 hatte dies ein optimales Verhalten, jedoch schein es so als wenn mit QT4.2 sich die angedockten Widget nicht mehr nebeneinander plazieren lassen, dafür ist das tabbing sehr praktisch. Später könnte dieser Manager eventuell mal durch einen einen Layoutmanager ersetzt werden.

Weit aus größere Sorgen macht mir das Redesign des Scenetrees: Ich möchte weitgehen auf QT3 kompatiblitätsklassen verzichten, außerdem war die Mehrfachvererbung noch nicht optimal. AUf jedenfall müssen sich die Items im Tree umbennen lassen und es sollte ein einfacher check möglich sein, damit keine zwei Objekte in einem Node vorkommen, die den gleichen namen haben (mag QSA überhaupt nicht gerne). Was sollte ich hier als Basis benutzen?

Der dritte Punkt wäre das ich endlich eine Laden /SPeichern funktion für den Tree brauchte. Da die Texturen aus binärdaten bestehen wäre XML nicht umbedingt optimal (eventuell wäre eine base64 encodierung zuim Kapseln möglich)

Noch ein Punkt: QSA ist extrem mächtig. Files Lesen und schrieben sind sofort möglich wenn eine Utilfactory vorhanden ist. Da befürchte ich ein mehr oder weniger großes Makrovierenproblem. Hier würde es sich aber eher lohnen ein extra Topic zu eröffnen