Я думаю, вы неправильно понимаете цель метода data
в классах Model в Qt. Вместо перезагрузки ваших данных (в вашем случае список имен файлов), метод data
должен отображать индекс, заданный ассоциированным QListView
, на элемент в вашем списке testnames
. Например,
def data(self, index, role):
if role == Qt.DisplayRole:
testname = self.testnames[index.row()]
return testname
Похоже, вы хотите, чтобы ваш load_docfiles
метод сохранял список имен файлов в self.testnames
. Вы можете переписать это так:
def load_docfiles(self):
cfg = Config()
for filename in glob.glob(os.path.join(cfg.test_path, 'test_*.rst')):
self.testnames.append(os.path.basename(filename)[5:-4])
filepath = os.path.abspath(filename)
print "load docfile", str(self.testnames)
Ваш класс может быть вызван из вашего основного приложения следующим образом:
self.view = QtGui.QListView(self)
self.model = TestListModel()
self.model.load_docfiles()
self.view.setModel(self.model)