Hi, from the C++ API's for Qt and KDE I'm using to being able to pass in a KIcon instance whenever an API wants a QIcon, since a KIcon is a QIcon and the compiler will add an implicit conversion operator.
I now discovered that this does apparently not work with PyQt4/PyKDE4. Note I'm using sip API v2 (i.e. no QVariant). In my particular case I'm returning a KIcon from the data() function of a table-model and that works just fine. But the tableview does not render the icon (or the delegate rather I guess). Explicitly creating a QIcon from the KIcon works around this, but I'm wondering wether I'm missing something or this is indeed intended behaviour. Attached is a small example exposing the behaviour, as it is the entry in the table is empty, if one switches the return-lines in the data function it works. Andreas
from PyKDE4 import kdeui, kdecore from PyQt4 import QtCore, QtGui import sys class TableModel(QtCore.QAbstractTableModel): def __init__(self, parent=None): QtCore.QAbstractTableModel.__init__(self,parent) def rowCount(self, parent=QtCore.QModelIndex()): return 1 def columnCount(self, parent=QtCore.QModelIndex()): return 1 def data(self, idx, role): if role == QtCore.Qt.DecorationRole: if idx.row() == 0 and idx.column() == 0: # Switch the two lines and it starts to work #return QtGui.QIcon(kdeui.KIcon("media-playback-start")) return kdeui.KIcon("media-playback-start") return None global app appName = "dummy" programName = kdecore.ki18n("Dummy") version = "0.1.0" aboutData = kdecore.KAboutData(appName, "", programName, version) kdecore.KCmdLineArgs.init(sys.argv, aboutData) app = kdeui.KApplication() win = QtGui.QTableView() model = TableModel() win.setModel(model) win.show() app.exec_()
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt