Qt 将对象添加到QListWidget

Qt 将对象添加到QListWidget,qt,qlistwidget,Qt,Qlistwidget,我有一节课 class MyClass { public: QString name; int age; }; ... MyClass* itm1= new MyClass(); itm1->name="John"; itm1->age=20; 我想将itm1添加到QListWidget,它将显示itm1->name,当我双击列表中的项目时,会在消息框中显示itm1->age。 欢迎任何帮助 我会尝试: QListWidgetItem项目(itm1->名称); it

我有一节课

class MyClass
 {
  public:
  QString name;
  int age;
 };
...
MyClass* itm1= new MyClass();
itm1->name="John";
itm1->age=20;
我想将itm1添加到QListWidget,它将显示
itm1->name
,当我双击列表中的项目时,会在消息框中显示
itm1->age
。 欢迎任何帮助

我会尝试:

QListWidgetItem项目(itm1->名称); item.setData(Qt::UserRole,itm1); 将其添加到QListWidget

slot:void itemActivated(QListWidgetItem*item),并从该项获取用户数据

另一个可能性是,如果您有一个itemas列表(在点击过程中不能更改),那么可以将索引存储在userdata中。 (我在Qt4中的一些组合框中使用了第二种方法)

这应该是可行的

QListWidget*listWidget=new QListWidget();
连接(listwidget,信号(itemDoubleClicked(QListWidgetItem*))、yourClass,插槽(itemDoubleClicked(QListWidgetItem*));
MyClass*itm1=新的MyClass();
itm1->name=“John”;
itm1->年龄=20岁;
QListWidgetItem*项目(itm1->名称);
item->setData(Qt::UserRole,itm1->age);
listWidget->addItem(项目);
然后只需将其添加为插槽

void YourClass::itemDoubleClicked(QListWidgetItem*item){
int age=item->data(Qt::UserRole);
QMessageBox消息框;
setText(QString::number(age));
messageBox.exec();
}