¿Qué es un papel en una QTreeWidgetItem?
-
21-08-2019 - |
Pregunta
Tengo un QTreeWidget
con varias columnas, puedo añadir QTreeWidgetItems
a ella. Trato de hacer la segunda columna contiene un valor numérico para cada Item
así que puede ordenar los elementos por este valor
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
No puedo encontrar ninguna documentación sobre lo que este argumento es role
. Todo lo que sé es que si lo fijo a 1 o 2, algo que aparece en la columna, si lo fijo a 0 o> = 3, no aparece nada en la columna, sin tener en cuenta, los números siempre terminan siendo ordenados alfabéticamente, el cual es un error.
Solución
Puede utilizar el Qt :: UserRole para fines específicos de la aplicación. Dado que estos datos es un QVariant, se puede crear un QList para establecer múltiples datos y después echarlo a QVariant y establezca los datos.
Aquí es un ejemplo:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Otros consejos
La documentación pertinente se puede encontrar en Qt :: ItemDataRole (encontrado a través de QAbstractItemModel :: setData ) . Las funciones se utilizan para especificar lo que los datos que está de paso se debe utilizar para. Se pueden utilizar diferentes funciones para configurar la información de herramienta, la fuente o el color de un elemento, entre otras cosas.
Tenga en cuenta que item->text()
es una comodidad equivalente a item->data(Qt::DisplayRole).toString()