Приветствую. Столкнулся со следующей проблемой. Для примера есть вот такой JSON (settings):
{
"keyboard-layout": [
"us",
"ru"
],
"keyboard-variant": [
"chr",
""
]
}
и такой код:
for key, value in layouts:
if key in settings["keyboard-layout"]:
self.layout_item = QTreeWidgetItem(self.ui.layouts)
self.layout_item.setData(0, Qt.DisplayRole, value)
self.layout_item.setData(0, Qt.UserRole, key)
self.ui.layouts.addTopLevelItem(self.layout_item)
for key, values in variants:
value = values.split(":")[0]
description = values.split(":")[1]
if value in self.layout_item.data(0, Qt.UserRole):
for key in settings["keyboard-variant"]:
if key == "":
self.layout_item.setData(1, Qt.DisplayRole, "Empty")
self.layout_item.setData(1, Qt.UserRole, "")
else:
self.layout_item.setData(1, Qt.DisplayRole, description)
self.layout_item.setData(1, Qt.UserRole, key)
Проблема заключается в следующем: при любом условии значения Qt.DisplayRole и Qt.UserRole устанавливаются на всю колонку целиком, а не на конкретные строки. В результате, если ключ равен "", то значение «Empty» установится на всю колонку, и каждая строка в ней будет с этим значением (а не только та, что нужно). Подскажите, есть ли способ индивидуального назначения itemData для каждой строки?