c++ - QVariant 到 QObject*

标签 c++ qt4

我正在尝试附加一个指向 QListWidgetItem 的指针,以便在插槽 itemActivated 中使用。

我试图附加的指针是一个 QObject* 后代,所以,我的代码是这样的:

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
...

现在我的问题是 itemActivated 插槽。这里我需要从变体中提取我的Image*,我不知道怎么做。

我试过了,但我得到了错误:

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

有什么提示吗?

Image * im = item->data(Qt::UserRole).value<Image *>();

最佳答案

答案是这样的

// From QVariant to QObject *
QObject * obj = qvariant_cast<QObject *>(item->data(Qt::UserRole));
// from QObject* to myClass*
myClass * lmyClass = qobject_cast<myClass *>(obj);

关于c++ - QVariant 到 QObject*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887064/

相关文章:

c++ - 使用未定义的 'Player' 和 'player' 使用未定义的 'Player' 错误

c++ - 读取包括空字节在内的所有字符

c++ - Qt 中的普通 C++ 代码无法构建和运行

linux - 为 Qt 应用程序创建 Linux 安装

qt - QT中如何获取Buttons的paint事件

c++ - 查找 map 中的最大值

javascript - WebGLBuffer 对象和 OpenGL 缓冲区处理 JavaScript 和 C++ 之间的互操作

python - 如何计算 QTreeWidget 内容的高度?

c++ - 当同一个信号可以来自多个地方时使用 Qt 的信号和槽

c++ - QPushButton 中的两种颜色文本