将QPOINTER存储到QVariant中

Store QPointer into a QVariant

本文关键字:QVariant 存储 QPOINTER      更新时间:2023-10-16

我可以存储一个QPointer,例如QPointer<QTcpSocket>QVariant中,然后从中提取它?

我尝试了:

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

但是我有一个错误-QVariant::QVariant(void*)' is private

在进行更多研究之后,使用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