Восстановить пользовательский тип, хранящийся в QVariant - PullRequest
0 голосов
/ 11 марта 2020

Я видел Как проверить, что QVariant типа QVariant :: UserType является ожидаемым типом? и я понимаю, как сказать, что объект класса MyType был сохранен в объекте QVariant. Я прочитал документацию для QVariant :: convert () , но я не слежу за тем, как я вызываю функцию-член, определенную в MyType для объекта, который я получил как QVariant.

* 1006 Скажем, у меня есть
class MyType
{
public:
    void myFunction;
    .
    .
    .
};
Q_DELCARE_METATYPE(MyType)
MyType m;
QVariant var (QVariant::fromValue (m));

Как мне вызвать MyType :: myFunction для объекта MyType, сохраненного в var?

1 Ответ

1 голос
/ 11 марта 2020

Согласно комментарию, вы можете использовать QVariant::value, чтобы получить копию объекта, удерживаемого QVariant. Так что в данном конкретном случае что-то вроде ...

/*
 * Check that the conversion is possible.
 */
if (var.canConvert<MyType>()) {

  /*
   * Obtain a copy of the MyType held.
   */
  auto m = var.value<MyType>();

  /*
   * Use as per normal.
   */
  m.myFunction();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...