Tôi đang cố đính kèm một con trỏ vào một số QListWidgetItem
, được sử dụng trong vùng itemActivated
.QVariant to QObject *
Con trỏ Tôi đang cố gắng để đính kèm là một hậu duệ QObject*
, vì vậy, mã của tôi là một cái gì đó như thế này:
Image * im = new Image();
// here I add data to my Image object
// now I create my item
QListWidgetItem * lst1 = new QListWidgetItem(*icon, serie->getSeriesInstanceUID(), m_iconView);
// then I set my instance to a QVariant
QVariant v(QMetaType::QObjectStar, &im)
// now I "attach" the variant to the item.
lst1->setData(Qt::UserRole, v);
//After this, I connect the SIGNAL and SLOT
...
Bây giờ vấn đề của tôi, khe itemActivated
. Ở đây tôi cần trích xuất số Image*
từ biến thể, và tôi không biết làm thế nào.
tôi đã cố gắng này, nhưng tôi nhận được lỗi:
‘qt_metatype_id’ is not a member of ‘QMetaTypeId’
void MainWindow::itemActivated(QListWidgetItem * item)
{
Image * im = item->data(Qt::UserRole).value<Image *>();
qDebug(im->getImage().toAscii());
}
Bất kỳ gợi ý?
Image * im = item->data(Qt::UserRole).value<Image *>();
Từ 'QVariant (int typeid, const void * bản sao) 'ctor tài liệu: "Thông thường, bạn không bao giờ phải sử dụng constructor này, sử dụng [QVariant :: fromValue()] (http://doc.qt.io/qt-5/qvariant.html#fromValue) để thay thế các biến thể từ các kiểu con trỏ được biểu diễn bằng QMetaType :: VoidStar và QMetaType :: QObjectStar . " –
Cũng lưu ý rằng loại '& im' là' Hình ảnh ** ', không phải' Hình ảnh * '. –