看到一个不错的文字和图片对应起来的方式,记录下

给每个item传入Qt::UserRole item->setData(Qt::UserRole, i.key());

根据 item->data(Qt::UserRole).toInt();返回dialog返回信息

Qt 带有图片的listwidget_数据

QMap<int, QString> symbolMap;
symbolMap.insert(132, QObject::tr("Data"));
symbolMap.insert(135, QObject::tr("Decision"));
symbolMap.insert(137, QObject::tr("Document"));
symbolMap.insert(138, QObject::tr("Manual Input"));
symbolMap.insert(139, QObject::tr("Manual Operation"));
symbolMap.insert(141, QObject::tr("On Page Reference"));
symbolMap.insert(142, QObject::tr("Predefined Process"));
symbolMap.insert(145, QObject::tr("Preparation"));
symbolMap.insert(150, QObject::tr("Printer"));
symbolMap.insert(152, QObject::tr("Process"));
while (i.hasNext()) {
i.next();
QListWidgetItem *item = new QListWidgetItem(i.value(),
listWidget);
//设定一个Icon(视图)
item->setIcon(iconForSymbol(i.value()));
//将ID保存到QListWidgetItem中去---Qt::UserRole为自定义角色(模型数据)
item->setData(Qt::UserRole, i.key());
}
QString fileName = ":/images/" + symbolName.toLower();
fileName.replace(' ', '-');
return QIcon(fileName);
void flowchartsymbolpicker::done(int result) {
id = -1;
if (result == QDialog::Accepted) {
QListWidgetItem *item = listWidget->currentItem();
if (item) {
id = item->data(Qt::UserRole).toInt();
}
}
QDialog::done(result);
}