将对象添加到QListWidget

时间:2015-02-10 16:59:36

标签: 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时。 欢迎任何帮助!

2 个答案:

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