libzeug icon indicating copy to clipboard operation
libzeug copied to clipboard

Further Improvements to propertyguizeug

Open mjendruk opened this issue 10 years ago • 0 comments

Here is a list of things that currently bother me about propertyguizeug's implementation:

Usage of QTreeView

Problem:

QTreeView and the MVC implementation are great … for large tables and simple editors, because they only render what is shown and only create editors when needed, but they are a pain for small lists of properties.

The QAbstractItemModel and QAbstractItemDelegate interfaces needed to be implemented are very rigid and needlessly complicated to comply with (I had to add additional beforeAdd and afterAdd etc. signals to PropertyGroups to react to property additions ...). Moreover, besides implementing just an widget for each type, I also have to implement at least a paint() methods for each type, an additional sizeHint() method would be necessary to make it right.

It is also very tedious to implement the painting right, because once you want to add custom drawing of your types, you have to implement all the default highlighting etc. by yourself. I had to read Qt's source code to make it right and it is still not working as intended.

Implementing #18 is almost out of scope, because the QAbstractItemModel interface is heavily based on indices and dynamically disabling properties would invalidate all indices provided by PropertyGroup, which were added to implement the model in the first place.

Solution: Don't use QTreeView and the MVC framework for properties

Edit 28 Nov 2014: Using QTreeView also led to the special treatment of std::array properties.


I would like to invite everyone to comment on this and maybe add additional annoyances.

mjendruk avatar Nov 27 '14 00:11 mjendruk