Вопрос

у меня есть 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()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top