Python PYQT4,ListView:如何使用QStandarItemModel获取选定行

Python PYQT4,ListView:如何使用QStandarItemModel获取选定行,python,checkbox,pyqt4,qlistview,Python,Checkbox,Pyqt4,Qlistview,我想在Pyqt4中使用ListView来显示一些项目,每个项目前面都有一个复选框。 而且,我想获取这些选定的项目,但self.ui.listView.SelectedIndex()的返回值为None,我真的不知道该怎么做才能获得我想要的。 我的代码如下: #coding=utf-8 from loadtsklist import * from PyQt4.QtCore import * from PyQt4.QtGui import * import sys, os class MyLoadT

我想在Pyqt4中使用ListView来显示一些项目,每个项目前面都有一个复选框。 而且,我想获取这些选定的项目,但self.ui.listView.SelectedIndex()的返回值为None,我真的不知道该怎么做才能获得我想要的。
我的代码如下:

#coding=utf-8
from loadtsklist import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys, os

class MyLoadTskList(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.initTaskList()
    def initTaskList(self):
        global connectserver
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.btsure.clicked.connect(self.test)


        tsklist = [u'北京',u'南京', u'海南', u'青岛', u'西安']
        model = QStandardItemModel()
        for task in tsklist:
            print(task)
            item = QStandardItem(QString(task))
            check = Qt.Unchecked
            item.setCheckState(check)
            item.setCheckable(True)
            model.appendRow(item)
            self.ui.listView.setModel(model)
    def test(self):
        print len(self.ui.listView.selectedIndexes())
        print "hello this is LoadTskList"

app = QApplication(sys.argv)
tsk = MyLoadTskList()
tsk.show()
app.exec_()

有人能告诉我怎么做吗?提前谢谢

首先,可以提高加载列表的代码的效率,如下所示:

    model = QStandardItemModel(self)
    self.ui.listView.setModel(model)
    for task in tsklist:
        item = QStandardItem(task)
        item.setCheckable(True)
        model.appendRow(item)
def test(self):
    model = self.ui.listView.model()
    for row in range(model.rowCount()):
        item = model.item(row)
        if item.checkState() == QtCore.Qt.Checked:
            print('Row %d is checked' % row)
然后,要获取选中的项目,需要另一个循环,如下所示:

    model = QStandardItemModel(self)
    self.ui.listView.setModel(model)
    for task in tsklist:
        item = QStandardItem(task)
        item.setCheckable(True)
        model.appendRow(item)
def test(self):
    model = self.ui.listView.model()
    for row in range(model.rowCount()):
        item = model.item(row)
        if item.checkState() == QtCore.Qt.Checked:
            print('Row %d is checked' % row)