Desidero memorizzare alcuni nomi di file in un QListWidget. Ho bisogno di avere i percorsi completi dei file, ma voglio solo mostrare il nome file di base. Probabilmente potrei memorizzare il nome file completo nel tooltip per ogni elemento, ma preferirei non avere suggerimenti per gli elementi dell'elenco.Posso memorizzare alcuni dati utente in ogni elemento di un QListWidget?
9
A
risposta
17
È possibile impostare i dati e ottenere dati da ciascun QListWidgetItem. Vedi QListWidgetItem::setData() e QListWidgetItem::data(). I dati possono essere impostati per diversi roles. Utilizza Qt :: UserRole, che è "Il primo ruolo che può essere utilizzato per scopi specifici dell'applicazione".
provare qualcosa di simile:
QListWidgetItem *newItem = new QListWidgetItem;
QString fullFilePath("/home/username/file");
QVariant fullFilePathData(fullFilePath);
newItem->setData(Qt::UserRole, fullFilePathData);
newItem->setText(itemText);
listWidget->insertItem(row, newItem);
e:
QListWidgeItem* currentItem = listWidget->currentItem();
if (currentItem != 0) {
QVariant data = currentItem->data(Qt::UserRole);
QString fullFilePath = data.toString();
}