rre*_*ves 5 c++ qt qvariant qcombobox
我正在使用QVariant将对象存储在Qcombobox中,这似乎工作正常.这是实施代码:
在标题中向QVariant添加类型:
Q_DECLARE_METATYPE(CDiscRecorder*)
Run Code Online (Sandbox Code Playgroud)
pDiscRecorder作为CDiscRecorder:
CDiscRecorder* pDiscRecorder = new CDiscRecorder();
Run Code Online (Sandbox Code Playgroud)
然后存储在组合框中
ui->cbDrives->addItem(QString::fromWCharArray(strName), QVariant::fromValue(pDiscRecorder));
Run Code Online (Sandbox Code Playgroud)
当我试图把它拉出来时出现问题:
CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>;
Run Code Online (Sandbox Code Playgroud)
我收到错误:
error C3867: 'QVariant::value': function call missing argument list; use '&QVariant::value' to create a pointer to member
Run Code Online (Sandbox Code Playgroud)
我试图在错误代码中实现提示无济于事,我已经在Qt的组合框中跟随线程添加QObject来实现这种行为,怎么能让我的对象回来?
谢谢
编译器给你提示缺少参数列表 - 你需要做的就是添加括号来告诉它你正试图调用该函数.所以改成它
CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>();
Run Code Online (Sandbox Code Playgroud)
它应该工作.这是一个相当长的路线,可能更清楚,以打破它
QVariant variant = this->ui->cbDrives->itemData(index);
CDiscRecorder* discRecorder = variant.value<CDiscRecorder*>();
Run Code Online (Sandbox Code Playgroud)