[Qtscript-bindings] [QtScript] QListView and items not rendered with custom QItemDelegate

Kent Hansen khansen at trolltech.com
Mon Jan 19 13:13:00 CET 2009


M. Uenalan wrote:
> Hi,
> I want to construct a QListView with QTextBrowser items. Therefore I
> went forward to derive a custom QItemDelegate. But in this code the
> listview is not rendered at all ? The paint function of my derived
> class is not called as well. Any hints ?
> function QItemDelegateRichtext()
> {
>    this.constructor(); // call constructor of SUPER
>    this.textprop = "test";
> }

"this.constructor()" should rather be "QItemDelegate.call(this)"

> 	 var pen = new QPen(Qt.red);
> 	 var brush = new QPen(Qt.yellow);

The bindings currently doesn't provide the implicit conversion that C++
does, so you will have to do "new QPen(new QColor(Qt.red))". And the
brush expression should probably be "new QBrush(...)". See

>       painter.drawRect(option.rect);

QStyleOption objects currently can't be manipulated via the bindings
currently; see

> var mi = new QModelIndex();
> mi.column = 0;
> mi.row = 0;

You can't construct a QModelIndex like that. You have to call the
model's index() function to obtain a valid QModelIndex.

> t.model = model;
> t.itemdelegate = del;

The model and delegate aren't properties of the view. You'll have to set
them using setModel() and setItemDelegate().
I recommend taking a look at the Qt class documentation to get an
overview of which things are QObject properties (and hence directly
reflected through the bindings) and which aren't. You can also take a
look at the documentation that's generated for the bindings (created
under path-to-qtscriptgenerator/doc).
(What happens in the above case is that the QtScript object will indeed
have properties "model" and "itemdelegate" after the assignments, but
these don't have any effect on the underlying C++ object, since they
aren't QObject properties.)

Thanks for reporting.

More information about the Qtscript-bindings mailing list