2009-07-02 10 views
7

Tengo un QTreeWidget con varias columnas, le agregué QTreeWidgetItems. Trato de hacer la segunda columna contiene un valor numérico para cada Item para que pueda ordenar los elementos por este valor¿Qué función desempeña un QTreeWidgetItem?

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 configuro en 1 o 2, aparece algo en la columna, si lo configuro en 0 o> = 3, no aparece nada en la columna, independientemente, los números siempre terminan ordenados alfabéticamente, Cuál está mal.

Respuesta

8

Puede usar Qt :: UserRole para fines específicos de la aplicación. Dado que estos datos son QVariant, puede crear una QList para establecer múltiples datos y luego convertirla en QVariant y establecer los datos.

Aquí se muestra 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); 
+0

Usted no está limitado a Qt: UserRole - es sólo la primera se puede utilizar para sus fines. Puede almacenar fácilmente varios valores sin la necesidad de inventar un nuevo tipo de datos. – pi3

6

La documentación pertinente se puede encontrar en Qt::ItemDataRole (se encuentra en QAbstractItemModel::setData). Los roles se usan para especificar para qué se deben usar los datos que está pasando. Puede usar diferentes roles para configurar la información sobre herramientas, la fuente o el color de un elemento, entre otras cosas.

4

Tenga en cuenta que item->text() es una comodidad equivalente a item->data(Qt::DisplayRole).toString()

Cuestiones relacionadas