[PyQt] embedding iconic pushButton in TableView and/or TreeView

Hans-Peter Jansen hpj at urpla.net
Sat Nov 27 18:50:59 GMT 2010


On Thursday 25 November 2010, 03:33:28 James Polk wrote:
> Woooohooooo....I got a custom delegate installed....at least
> partially, lol... Using the basic QItemDelegate
> I've first tried a comboBox, which seems a little more
> straightforward,..

Congrats, James. The world isn't as bad as it feels sometimes ;-)

> When using QTableView,...the "index.column()" calls want text
> matching the column headings,...but in QTreeView, the same call wants
> an integer index#...so my code looks like...
>
>
>   def createEditor(self, parent, option, index):
>       if index.column() == 0:         # Thumbnail
>               button = QPushButton(parent)
>               return button
>       if index.column() == 4:         # Format
>               comboBox = QComboBox(parent)
>               comboBox.addItem("ma")
>               comboBox.addItem("mb")
>               comboBox.addItem("obj")
>               comboBox.setEditable(True)
>               return comboBox
>       return QItemDelegate.createEditor(self, parent, option, index)
>
> I was all in celebration mode,...until I began to add the initial
> pushbutton/icon in the first column.....Right now, I'm just using
> QPushButton and will add the image/pixmap later...
>
> Well..the danged curious thing is....that when I run the code,
> and double-click on the cells of the first column, the custom
> delegate dutifully returns a nice PushButton....but my conundrum
> is that I still can't figure out how to add the PushButton to the
> QTreeView on startup!...<sigh>....

You need a item delegate, then.

> You may recall the data layout I'm going for is something like...
>
> 1     [icon1]       data       data      data    etc  
> 2     [icon2]       data       data      data    etc
> 3       etc
> 4       etc
>
> ...and later,...when a user binks on the icon, it will need to
> execute a command...
>
> So,...some progress, but still more jungle ahead,lol...<sigh>
> Maybe I'll go reread your stardelegate code again ;-)

Just remember, that small self contained examples of such issues are the 
ultimate weapon to engage them...

Pete


More information about the PyQt mailing list