LINUX.ORG.RU

Добавление нескольких значений в QTreeWidgetItem

 ,


0

1

Приветствую. Нужно добавить несколько элементов из списка в один QTreeWidgetItem, так, чтобы каждый из этих элементов был на отдельной строке. Код следующего вида:

layouts = load_json(layout_list)
        self.layout_item = QTreeWidgetItem(self.ui.layouts)
        for key, values in layouts.items():
            if values == settings["keyboard-layout"]:
                self.layout_item.setData(0, Qt.DisplayRole, key)
                self.layout_item.setData(0, Qt.UserRole, values)
        self.ui.layouts.addTopLevelItem(self.layout_item)

self.ui.layouts

это обычный QTreeWidget, состоящий из двух колонок.

layouts
подгружает json-файл со списком языков раскладки (например «Russian»: «ru»), а в
settings["keyboard-layout"]
находится дефолтное значение вида
"keyboard-layout": [
    "ru",
    "us"
  ],

Если элемент в списке один, то все работает - в QTreeWidget появляется строка Russian, а

self.layouts_item.data(0, Qt.UserRole)
возвращает значение «ru». Но когда элементов несколько, или один, но заключенный в список, в QTreeWidget пустота. Подскажите пожалуйста, как решить эту проблему?

★★★★★

Последнее исправление: Sunderland93 (всего исправлений: 1)

На каждый элемент списка нужен свой QTreeWidgetItem. Одна строка - один QTreeWidgetItem.

layouts = load_json(layout_list)
        for key, values in layouts.items():
            if values == settings["keyboard-layout"]:
                self.layout_item = QTreeWidgetItem(self.ui.layouts)
                self.layout_item.setData(0, Qt.DisplayRole, key)
                self.layout_item.setData(0, Qt.UserRole, values)
                self.ui.layouts.addTopLevelItem(self.layout_item)
DrBrown
()