Какова роль в QTreeWidgetItem?
-
21-08-2019 - |
Вопрос
у меня есть QTreeWidget
с несколькими столбцами, я добавляю QTreeWidgetItems
к этому.Я пытаюсь сделать так, чтобы второй столбец содержал числовое значение для каждого Item
поэтому я могу сортировать элементы по этому значению
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
Я не могу найти никакой документации о том, что это role
аргумент есть.Все, что я знаю, это то, что если я установлю его на 1 или 2, что-то появится в столбце, если я установлю на 0 или >=3, в столбце ничего не появится, независимо от того, числа всегда сортируются в алфавитном порядке, что неправильно.
Решение
Вы можете использовать Qt::UserRole для конкретных целей приложения.Поскольку эти данные являются QVariant, вы можете создать QList для установки нескольких данных, а затем преобразовать его в QVariant и установить данные.
Вот пример:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Другие советы
Соответствующую документацию можно найти в разделе Qt::ItemDataRole (нашел через QAbstractItemModel::setData).Роли используются для указания того, для чего следует использовать передаваемые вами данные.Вы можете использовать разные роли, среди прочего, для установки всплывающей подсказки, шрифта или цвета элемента.
Обратите внимание, что item->text()
является эквивалентом удобства item->data(Qt::DisplayRole).toString()