#qt #pyqt
#qt #pyqt
Вопрос:
Как я могу получить строку из модели? Действительно ли необходимо проходить по строке и получать шаг за шагом каждый элемент?
Я использую эту функцию, она работает, но я не очень доволен этим. Есть ли лучший способ, как это сделать?
def row(self, r):
row = []
for c in range(self.columnCount()):
index = self.index(r, c)
value = self.data(index).toString()
row.append(value)
return row
Ответ №1:
Поместить все в список для понимания:
row = [self.data(self.index(r,c))
for c in xrange(self.columnCount())]
вероятно, быстрее, хотя, конечно, не очень приятно читать.
Если вы хотите использовать модели, предоставляемые Qt — тогда да, это единственный способ получить доступ к базовым данным.
Вы могли бы использовать QStandardItemModel
, что позволило бы вам сделать
row = [self.item(r,c) for c in xrange(self.columnCount())]
однако это позволяет избежать необходимости создания индекса.
В зависимости от вашего варианта использования, вы, конечно, могли бы реализовать общие модели Qt на основе списков или dicts Python, которые позволили бы получать доступ к элементам способом Qt и способом python.