Какова роль в QTreeWidgetItem?

У меня есть QTreeWidget с несколькими столбцами, добавляю QTreeWidgetItems к этому. Я пытаюсь сделать второй столбец содержать числовое значение для каждого Item так что я могу сортировать элементы по этому значению

QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))

Я не могу найти документацию о том, что это role аргумент есть. Все, что я знаю, это то, что если я установлю его на 1 или 2, в столбце появится что-то, если я установлю на 0 или>=3, в столбце ничего не появится, независимо от того, что числа всегда будут отсортированы по алфавиту, что неправильно.

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()

Другие вопросы по тегам