ich habe mir zur Veranschaulichung das
basicsortfiltermodel.py genommen (wird mit pyqt ausgeliefert)
und aufs wesentliche gekürzt.
Mein problem nun ... Klicke ich auf einen Eintrag möchte ich das mit einer definierten Funktion connecten. Leider klappt das so nicht
Code: Alles auswählen
#!/usr/bin/env python
import sys
from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.proxyModel = QtGui.QSortFilterProxyModel()
self.proxyModel.setDynamicSortFilter(True)
self.proxyGroupBox = QtGui.QGroupBox("Sorted/Filtered Model")
self.proxyView = QtGui.QTreeView()
self.proxyView.setModel(self.proxyModel)
self.proxyView.setExpandsOnDoubleClick(False)
# Wie connecte ich einen Tree Eintrag?
self.connect(self.proxyView,
QtCore.SIGNAL('doubleClicked(QModelIndex*,int)'), self.browse_web)
self.connect(self.proxyModel,
QtCore.SIGNAL('doubleClicked(QModelIndex*,int)'), self.browse_web)
proxyLayout = QtGui.QGridLayout()
proxyLayout.addWidget(self.proxyView, 0, 0, 1, 3)
self.proxyGroupBox.setLayout(proxyLayout)
mainLayout = QtGui.QVBoxLayout()
mainLayout.addWidget(self.proxyGroupBox)
self.setLayout(mainLayout)
def browse_web(self):
print 'hallo'
def setSourceModel(self, model):
self.proxyModel.setSourceModel(model)
def addMail(model, subject, email):
model.insertRow(0)
qsi = QtGui.QStandardItem()
qsi.setText(subject)
qsi.setEditable(False)
model.setItem(0,0,qsi)
qsi = QtGui.QStandardItem()
qsi.setText(email)
qsi.setEditable(False)
model.setItem(0,1,qsi)
def createMailModel(parent):
model = QtGui.QStandardItemModel(0, 2, parent)
model.setHeaderData(0, QtCore.Qt.Horizontal, QtCore.QVariant("Subject"))
model.setHeaderData(1, QtCore.Qt.Horizontal, QtCore.QVariant("E-Mail"))
addMail(model, "subject 1", "email 1")
addMail(model, "subject 2", "email 2")
return model
app = QtGui.QApplication(sys.argv)
window = Window()
window.setSourceModel(createMailModel(window))
window.show()
sys.exit(app.exec_())