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

M. Uenalan murat.uenalan at googlemail.com
Sun Jan 18 18:41:30 CET 2009


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 ?



var mw = new QMainWindow( );
mw.setWindowTitle( "QListView" );

var status = new QStatusBar();
mw.setStatusBar( status );

function QItemDelegateRichtext()
{
   this.constructor(); // call constructor of SUPER
   this.textprop = "test";
}

//inherit and extend
QItemDelegateRichtext.prototype = new QItemDelegate();
QItemDelegateRichtext.prototype.richtext = "<h4>this is rich</h4>";
var isize = new QSize( 50, 50 );
QItemDelegateRichtext.prototype.sizeHint = function( option, index )
{
return isize;
}

QItemDelegateRichtext.prototype.paint = function( painter, option, index )
{
          status.showMessage( "painting ..." + painter + " option=" +
option + " index=" + index );

          painter.save();

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

          painter.setPen(pen);
          painter.setBrush(brush);

      painter.drawRect(option.rect);

	 painter.restore();
}

var del = new QItemDelegateRichtext();

var model = new QStandardItemModel(4,4);

 for (var row = 0; row < 4; ++row)
 {
     for (var column = 0; column < 4; ++column)
     {
	var str = "<<row " + row + " col " + column + ">>";
         var item = new QStandardItem( str );
         model.setItem(row, column, item);
     }
 }

var mi = new QModelIndex();
mi.column = 0;
mi.row = 0;
var v = model.data( mi, Qt.DisplayRole ).toString();
status.showMessage( "DBG: text in model at row 0,0: " + model.item( 0,
0 ).data( 0 ) );


var t = new QListView();

if( 1 )
{

var gsize = new QSize( 100, 100 );
t.gridsize = gsize;
t.viewmode = QListView.ListMode;
t.model = model;
t.itemdelegate = del;


print( "gridsize: " + t.hasOwnProperty( "gridsize" ) );
print( "viewmode: " + t.hasOwnProperty( "viewmode" ) );
print( "model: " + t.hasOwnProperty( "model" ) );
print( "itemdelegate: " + t.hasOwnProperty( "itemdelegate" ) );
}

var d = new QDockWidget();
d.setWindowTitle( "Dock" );
mw.addDockWidget( Qt.RightDockWidgetArea, d);
d.features = QDockWidget.AllDockWidgetFeatures;
d.setParent( mw );
d.setWidget( t );

mw.show();


More information about the Qtscript-bindings mailing list