Che cosa è un ruolo in un QTreeWidgetItem?
-
21-08-2019 - |
Domanda
Ho un QTreeWidget
con diverse colonne, aggiungo QTreeWidgetItems
ad esso. Provo a fare la seconda colonna contiene un valore numerico per ogni Item
così posso ordinare gli oggetti da questo valore
QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))
Non riesco a trovare alcuna documentazione su ciò che questo argomento è role
. Tutto quello che so è che se ho impostato a 1 o 2, qualcosa si presenta nella colonna, se ho impostato a 0 o> = 3, non si presenta nella colonna, a prescindere, i numeri finiscono sempre per essere in ordine alfabetico, che è sbagliato.
Soluzione
È possibile utilizzare il Qt :: UserRole per scopi specifici di applicazione. Dal momento che questi dati è un QVariant, è possibile creare un QList per impostare più i dati e dopo che gettarlo ai QVariant e impostare i dati.
Ecco un esempio:
QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);
Altri suggerimenti
La documentazione pertinente, si trova nel Qt :: ItemDataRole (trovato attraverso QAbstractItemModel :: setData ) . I ruoli sono utilizzati per specificare ciò che i dati si sta passando deve essere utilizzato per. È possibile utilizzare diversi ruoli per impostare il tooltip, carattere o il colore di un oggetto, tra le altre cose.
Si noti che item->text()
è una comodità equivalente a item->data(Qt::DisplayRole).toString()