将QPointer存储到QVariant

时间:2019-06-26 15:04:22

标签: c++ qt qvariant qpointer

我可以在QPointer内存储QPointer<QTcpSocket>,例如QVariant,然后从中提取吗?

我尝试过:

    QObject *ob = new QObject();
    QPointer<QObject> qp(ob);
    QVariant qv(qp);

但是我遇到了错误-QVariant::QVariant(void*)' is private

1 个答案:

答案 0 :(得分:0)

经过更多研究,可以使用QVariant::fromValue()QVariant::value()

示例代码:

    QTcpSocket *ob = new QTcpSocket();
    qDebug("%p", ob);
    QPointer<QTcpSocket> qp(ob);
    QVariant qv = QVariant::fromValue(qp);
    qp = qv.value<QPointer<QTcpSocket> >();
    qDebug("%p", qp.data());
    delete ob;
    qDebug("%p", qp.data());

这给出了:

0x137c070
0x137c070
0x0