将对象添加到QListWidget

3
我有一个类。
class MyClass
 {
  public:
  QString name;
  int age;
 };
...
MyClass* itm1= new MyClass();
itm1->name="John";
itm1->age=20;

我想将itm1添加到QListWidget中,以显示itm1->name,当我双击列表中的项目时,弹出一个消息框显示itm1->age

欢迎任何帮助!

2个回答

1
这应该可以工作。
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();
}

0

我会尝试:

QListWidgetItem item(itm1->name); item.setData (Qt::UserRole, itm1); 然后将其添加到 QListWidget 中。

槽函数:void itemActivated(QListWidgetItem *item),从项目中获取用户数据。

另一种可能性是,如果您有一个项目列表(在单击处理时不能更改),可以将索引存储在 userdata 中。 (我在 Qt4 的某些组合框中使用第二种方法)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接