0

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

我试过:

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

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

4

1 回答 1

0

经过更多研究,可以使用QVariant::fromValue()and 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
于 2019-06-26T15:04:22.973 回答