QT - 如何从组合框中检索QVariant值?

时间:2013-07-31 21:38:12

标签: c++ qt qcombobox qvariant

我正在使用QVariant将对象存储在Qcombobox中,这似乎工作正常。这是实施代码:

在标题中添加类型到QVariant:

Q_DECLARE_METATYPE(CDiscRecorder*)

pDiscRecorder成为CDiscRecorder:

CDiscRecorder* pDiscRecorder = new CDiscRecorder();

然后存储在组合框中

ui->cbDrives->addItem(QString::fromWCharArray(strName), QVariant::fromValue(pDiscRecorder));

当我试图把它拉出来时出现问题:

CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>;

我收到错误:

error C3867: 'QVariant::value': function call missing argument list; use '&QVariant::value' to create a pointer to member

我试图在错误代码中实现提示无济于事,我已经跟着线程Add QObject in the combo box of Qt实现了这个行为,怎么能让我的对象回来?

由于

1 个答案:

答案 0 :(得分:5)

编译器给你提示缺少参数列表 - 你需要做的就是添加括号来告诉它你正试图调用该函数。所以把它改成

CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>();

它应该有效。这是一个相当长的路线,打破它可能更干净

QVariant variant = this->ui->cbDrives->itemData(index);
CDiscRecorder* discRecorder = variant.value<CDiscRecorder*>();