我有一个班级
class MyClass
{
public:
QString name;
int age;
};
...
MyClass* itm1= new MyClass();
itm1->name="John";
itm1->age=20;
我想将itm1添加到QListWidget,它将显示itm1->name
,当我双击列表中的项目以在消息框中显示itm1->age
时。
欢迎任何帮助!
答案 0 :(得分:0)
我会尝试:
QListWidgetItem项(itm1-> name); item.setData(Qt :: UserRole,itm1); 将其添加到QListWidget。
slot:void itemActivated(QListWidgetItem * item),并从项目中获取您的用户数据。
另一个可能性是,如果你有一个你的迭代列表,(并且在处理点击时无法更改),则将索引存储在userdata中。 (我在Qt4的一些组合框中使用第二种方法)
答案 1 :(得分:0)
这应该有效。
QListWidget* listWidget = new QListWidget();
connect(listwidget, SIGNAL (itemDoubleClicked(QListWidgetItem*)), yourClass, SLOT(itemDoubleClicked(QListWidgetItem*)));
MyClass* itm1= new MyClass();
itm1->name="John";
itm1->age=20;
QListWidgetItem* item(itm1->name);
item->setData(Qt::UserRole, itm1->age);
listWidget->addItem(item);
然后将其添加为插槽。
void YourClass::itemDoubleClicked(QListWidgetItem* item) {
int age = item->data(Qt::UserRole);
QMessageBox messageBox;
messageBox.setText(QString::number(age));
messageBox.exec();
}