Seite 1 von 1

QObject::QTimer macht Probleme bei ModelView

Verfasst: Donnerstag 3. März 2011, 00:12
von Shaldy
Hallo zusammen!

Habe mich jetzt an die ModelView Architektur von PyQt herangewagt und dazu ein Tutorial nachprogrammiert. Das Programm läuft (wenn ich es via Kommandozeile ausführe) fehlerfrei, erst, wenn ich es beende erscheint (nicht immer) die Nachricht:

QObject::startTimer: QTimer can only be used with threads started with QThread

Hier mein Code:

Code: Alles auswählen

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Model(QAbstractListModel):

    def __init__(self, colors, parent = None):
        QAbstractListModel.__init__(self, parent)
        self.__data = colors

    def rowCount(self, parent):
        return len(self.__data)

    def data(self, index, role):
        if role == Qt.DisplayRole:
            return self.__data[index.row()].name()
        elif role == Qt.DecorationRole:
            pixmap = QPixmap(self.__data[index.row()])
            icon = QIcon(pixmap)
            return icon
        elif role == Qt.ToolTipRole:
            return QString("Hex Code: %1").arg(self.__data[index.row()].name())

class View(QListView):
    def __init__(self, model, parent =None):
        QListView.__init__(self, parent)
        self.setModel(model)

app =QApplication([])
colors = [QColor(0, 0, 0), QColor(234, 75, 20), QColor(57, 83, 165)]
m = Model(colors)
v = View(m)
v.show()
app.exec_()

Re: QObject::QTimer macht Probleme bei ModelView

Verfasst: Freitag 4. März 2011, 13:14
von snafu
Ein ziemlich ähnlich gelagertes Problem hatte ich vor kurzem auch. Ich kann dir nicht sagen, woran es genau liegt, aber als ich von PyQt auf PySide umgestiegen bin, kam die Meldung (und damit auch der Segfault) nicht mehr.

Re: QObject::QTimer macht Probleme bei ModelView

Verfasst: Samstag 5. März 2011, 12:09
von lunar
Es ist unnötig, aus der Farbe eine Pixmap und daraus dann nochmals ein Symbol zu erzeugen. Du kannst direkt ein QColor-Objekt zurückgeben. Außerdem musst Du dem Model-Objekt bei der Erzeugung die Ansicht als Vater mitgeben.