Могу ли я хранить некоторые пользовательские данные в каждом элементе QListWidget? - PullRequest
13 голосов
/ 21 августа 2011

Я хочу сохранить некоторые имена файлов в QListWidget.Мне нужно иметь полные пути к файлам, но я хочу показать только базовое имя файла.Возможно, я мог бы сохранить полное имя файла во всплывающей подсказке для каждого элемента, но я бы предпочел не иметь подсказки для элементов списка.

1 Ответ

25 голосов
/ 21 августа 2011

Вы можете установить данные и получать данные от каждого QListWidgetItem. Смотрите QListWidgetItem :: setData () и QListWidgetItem :: data () . Данные могут быть установлены для различных ролей . Используйте Qt :: UserRole, которая является «Первой ролью, которую можно использовать для целей приложения».

Попробуйте что-то вроде этого:

QListWidgetItem *newItem = new QListWidgetItem;
QString fullFilePath("/home/username/file");
QVariant fullFilePathData(fullFilePath);
newItem->setData(Qt::UserRole, fullFilePathData);
newItem->setText(itemText);
listWidget->insertItem(row, newItem);

и

QListWidgeItem* currentItem = listWidget->currentItem();
if (currentItem != 0) {
     QVariant data = currentItem->data(Qt::UserRole);
     QString fullFilePath = data.toString();
}
...