Сохранить QPointer в QVariant - PullRequest
0 голосов
/ 26 июня 2019

Могу ли я сохранить QPointer, например QPointer<QTcpSocket> внутри QVariant, а затем извлечь его из него?

Я пытался с:

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

Но я получил ошибку - QVariant::QVariant(void*)' is private.

1 Ответ

0 голосов
/ 26 июня 2019

После еще нескольких исследований это возможно, используя 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
...