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();
}