Добавим к этим типам собственный класс или структуру, чтобы с ней можно было бы общаться как с другими типами - помещать и извлекать из QVariant.
class SomeClass
{
//всё что нужно
};
Q_DECLARE_METATYPE(SomeClass)
Итак, достаточно после определения класса вызвать макрос Q_DECLARE_METATYPE()
Что это дает?
Помещаем экземпляр класса в QVariant.
SomeClass scl;
QVariant vclass = QVariant::fromValue(scl);
Всё, теперь экземпляр класса SomeClass, хранится как QVariant и с ним можно делать всё, что и с объектами типа QVariant.
Обратное преобразование.
scl = qvariant_cast
Вообще говоря, в классе SomeClass крайне желательно определить оператор присваивания и конструктор копирования, на случай если вдруг возникнет желание помещать его в контейнер типа QList
Теперь об одной особенности макроса Q_DECLARE_METATYPE(). Он не приемлет запятых в определении.
Написать что-то типа
Q_DECLARE_METATYPE(QVector<QPair<QString, QString> >)
не получится, из-за запятой в определении шаблона.Лечится это хитрым патчем.
#define Q_DECLARE_METATYPE_COMMA(...) \
QT_BEGIN_NAMESPACE \template <> \
struct QMetaTypeId< __VA_ARGS__ > \
{ \
enum { Defined = 1 }; \
static int qt_metatype_id() \
{ \
static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \
if (!metatype_id) \
metatype_id = qRegisterMetaType< __VA_ARGS__ >( #__VA_ARGS__, \
reinterpret_cast< __VA_ARGS__ *>(quintptr(0))); \
return metatype_id; \
} \
}; \
QT_END_NAMESPACE \
Я даже не буду рассказывать, что здесь делается т.к. сам не понимаю и хитрый патч вытащен откуда-то из просторов интернета.
Главное, что с его помощью мы можем написать
Q_DECLARE_METATYPE_COMMA(QVector<QPair<QString, QString> >)
* This source code was highlighted with Source Code Highlighter.
И тогда мы сможем назначить typedeftypedef QVector<QPair<QString, QString> > VectorPair;
Q_DECLARE_METATYPE_COMMA(VectorPair)
* This source code was highlighted with Source Code Highlighter.
и использовать тип VectorPair как QVariant.
парсер съел SomeClass в
ОтветитьУдалитьscl = qvariant_cast< SomeClass >(vclass);
и если же объявлено
typedef QVector< QPair< QString, QString > > VectorPair;
то можно писать Q_DECLARE_METATYPE(VectorPair) не прибегая к Q_DECLARE_METATYPE_COMMA
Извините, что влез немного не по теме, но...
ОтветитьУдалитьВы не знаете как сконвертировать файлы проекта QtCreator (.pro) в файлы проекта studio 2010 (.vcxproj)?
http://doc.qt.io/vs-addin/
ОтветитьУдалитьVarangaOfficial - варанга цена - все, что бы хотели знать об этом препарате. Воспользовавшись данным интернет-порталом, вы получите возможность узнать подробную информацию касательно этого натурального лекарственного комплекса. Увидеть данные о клиническом тестировании геля, прочитать реальные отзывы пациентов и врачей. Изучить инструкцию по применению, прочесть об особенностях и методах работы мази, уяснить, в чем заключаются особенности работы крема Варанга, где можно купить оригинальный сертифицированный препарат и, как избежать покупки подделки. Мы очень тщательно и скурпулезно проверяем размещаемые на сайте данные. Предоставляем посетителям нашего онлайн-ресурса сведения, которые берутся только из авторитетных источников. Если вы обнаружили у себя признаки появления грибкового заболевани или же долго и безрезультатно пытаетесь избавиться от этого неприятного недуга, у нас на сайте вы найдете быстрый и простой способ устранения проблемы. Приобщайтесь и живите полноценной, здоровой жизнью. Мы собрали ответы на все вопросы на одном информационном ресурсе.
ОтветитьУдалитьБонгакамс - это целый бонг видеочат, который собрал в себе огромное количество различных чатов. На сайте комнат вы можете выбрать собеседника для абсолютно любой темы разговора. Представьте себе, что сотни, а параллельно и многие, с самыми изощренными фантазиями, уже размещены только в каталоге. Единственное, что крайне необходимо, это подобрать тему бонг кам, заглянуть, и вам откроется здесь множество чатов интересующего вас направления. Дает возможность заказчику не только переписываться с заявителем на экране, но и в то же время разговаривать, а если вы просто хотите посмотреть, это все еще возможно. Видеочат бонга уже собрал самых неожиданных девушек для людей. Ты хочешь рыжую? Пожалуйста. Ты хочешь брюнетку или блондинку? Пожалуйста. Вы можете и облысеть, если правильно посмотрите видеочат бонгакамса. Если вы нажмете на чат бонгакамс, вы окажетесь только в комнате с единомышленниками, которые либо просто наблюдают, либо активно общаются и переписываются. Можно даже принять непосредственное участие в bongacams, подключив гарнитуру, или спокойно начать печатать на ресурсе. Все понимают, что сайт бонга кам популярен своим разнообразием и вседозволенностью. Если вам восемнадцать лет, вы получаете возможность безопасно смотреть и изучать порно бонгакамс вместе с нами. В любую погоду, в любое время дня и ночи, посетив бонгакамс, или, где его альтернативно любят называть бонг видеочат, вы найдете горячих моделей и заводных парней, они уже давно разогрелись и сразу намерены заказать откровенное знакомство с пользователями. Вы можете составить список своих самых сокровенных чувств и самых безумных фантазий раньше. Будьте всегда уверены, что, посетив видеочат bongacams позже, все гарантии из вашего списка будут изменены на реальные, даже виртуальные. Поскольку вы дорожили этой цифрой, и поклонник кино, естественно, хотел бы получить работу для получения дополнительной информации о порно видео чат с девушками Пожалуйста, посетите нашу собственную страницу.
ОтветитьУдалитьПотребительские кредиты на сумму не менее от 1000 до ста тысяч рублей только в диапазоне от 0% до одного% в день на срок от 61 до 180 дней, без наценок и залога. Пск (полная номинальная стоимость кредита) составляет от 182 000 % годовых до 365 000 % годовых. Сумма переплаты по кредиту также зависит от поставленного и срока, на который предоставляется кредит. Требования к клиентам: гражданство российской федерации, возраст от восемнадцати до 75 лет, предъявление документов. Например, был выдан кредит в размере 10 тыс. Руб. Срок действия кредита составляет 70 дней, ставка составляет 1% в день, с аннуитетным (регулярным) платежом в срок каждые две недели в виде 2912,84 руб. Общая сумма составляет 14 564,18 рубля: 10 тысяч рублей основной долг 4564,18 рубля проценты. Так как вы дорожили этой цифрой, поэтому вы спокойно хотели бы получить более подробную информацию о Рейтинг МФО Пожалуйста, посетите нашу собственную страницу.
ОтветитьУдалить