Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,020
1

Передача объектов пользовательских классов через QVariant

11.04.2012, 08:46. Просмотров 3810. Ответов 2
Метки нет (Все метки)


Требуется передать объект пользовательского класса , не наследованного от QObject, через QVariant. Как это можно сделать, не могу разобраться?
Вот функция, которая должна вернуть объект моего класса:
C++ (Qt)
1
2
3
4
5
QVariant Класс1::data(int row) const
 {
    qRegisterMetaType<Класс2>("Класс2");
    return {объект класса2};
 }
Получаю ошибку:
error C2664: 'QVariant::QVariant(QVariant::Type)' : cannot convert parameter 1 from 'Класс2' to 'QVariant::Type'

Либо я что то не правильно делаю?

Добавлено через 3 часа 17 минут
Все, сам разобрался.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2012, 08:46
Ответы с готовыми решениями:

Передача объектов дочерних классов через массив объектов родительского класса в функцию
Здравствуйте. Возможно, вопрос больше относится к теории ООП, но все же я не решился задавать его в...

Копирование объектов пользовательских классов
Доброго времени суток) Есть вот такие структуры: Struct A { Shape *S; }; Struct B

Сложение объектов базового и наследуемых классов через виртуальную функцию
Нужно определить базовый класс с виртуальной функцией сложения. Кроме того перегрузка этой же...

Передача классов между процессами через WCF
Есть ли способ передать класс из одного процесса в другой? То есть первый процесс пользуется...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
2
Автор FAQ
2728 / 1424 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
11.04.2012, 10:45 2
ну раз разобрался то и опиши в чем касяк был
0
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,020
11.04.2012, 11:06  [ТС] 3
Чистый,
Вообщем у меня задача была передать указатель на нужный мне объект.

Самое главное это прописать в глобальной области.
C++ (Qt)
1
2
typedef НазваниеТипа *НазваниеУказателяНаТип; //это что бы использовать указатель на объект
Q_DECLARE_METATYPE(НазваниеУказателяНаТип)
Дальше передача параметра:
C++ (Qt)
1
2
3
QVariant var;
var.setValue<НазваниеУказателяНаТип>(УказательНаОбъект);
return var;
Пока сделал так, сейчас думаю как данную конструкцию упростить.

Прием параметра:
C++ (Qt)
1
НазваниеУказателяНаТип myObject=var.value<НазваниеУказателяНаТип>();
Примерно так можно передать практически любой объект.

Почему qRegisterMetaType не работала, я так и не понял.

Добавлено через 5 минут
Все нашел
C++ (Qt)
1
2
3
QVariant var;
var.setValue<НазваниеУказателяНаТип>(УказательНаОбъект);
return var;
можно заменить:
C++ (Qt)
1
return qVariantFromValue(УказательНаОбъект);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2012, 11:06

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Linux. Передача объектов через сокеты. Как?
День добрый, господа! Мое первое сообщение на форуме, прошу любить и жаловать) Написал небольшой...

Передача объектов другого класса в конструктор через params
Здравствуйте. В учебнике есть пример: класс Figure, класс Point. В зависимости от того, сколько...

Копирование пользовательских классов
Вопрос таков: Есть у нас пользовательский класс MyProcess, listProcess - ArrayList объектов типа...

Преобразование пользовательских классов
у меня есть два класса: class Int; class Compl { float real; float...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.