Название: Использование QVariant Отправлено: labview от Август 23, 2010, 19:46 Привет!
Мне нужно передать данные из одного места программы в другое. Для этого я определил структуру данных PortOpenParamsType в одном месте: Код: #ifndef THREAD1_H И внёс это определение в друге место, а так же заполнил значениями: Код: #include "mainwidget.h" Здесь хочу извлечь значение (case 1): Код: #include "thread1.h" Прога вылетает, скажите плиз где я ошибся? Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 19:50 Я про указатель, который никуда не указывает...
Код
Название: Re: Использование QVariant Отправлено: labview от Август 23, 2010, 19:55 Хорошо, я заменил одну строку, или что то друге имелось в виду? Прога ведёт себя так же.
Код: Parameters->IPAdress.fromAscii("IP Adress example"); Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 20:00 Хорошо, я заменил одну строку, или что то друге имелось в виду? Прога ведёт себя так же. Я про указатель, который никуда не указывает...Код
Название: Re: Использование QVariant Отправлено: labview от Август 23, 2010, 20:01 Так тоже вылетает :(
Код: void MainWidget::send() Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 20:08 Сейчас ты помещаешь указатель на структуру Parameters в переменную QVariant, переменная Parameters выделена на стеке и после выхода из метода send() будет разрушена.
Т.е. ты передаешь указатель на структуру, которая будет тут же разрушена. Может в этом дело, может еще в чем. Отлаживай. Название: Re: Использование QVariant Отправлено: kuzulis от Август 23, 2010, 20:09 1. А у нас что, QVariant умеет работать с пользовательскими данными? типо структура, объект класса и т.п. ? О_о
2. Код: .. --- упс.. опередил Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 20:11 1. А у нас что, QVariant умеет работать с пользовательскими данными? типо структура, объект класса и т.п. ? О_о А разве нет?Название: Re: Использование QVariant Отправлено: kuzulis от Август 23, 2010, 20:13 упс... понял, что преждевременно вбросил. :)
Название: Re: Использование QVariant Отправлено: labview от Август 23, 2010, 20:45 Работает! Только я не совсем понимаю что мне, после того как я передал данные, делать с ненужным мне обьектом.
Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 20:47 Работает! Только я не совсем понимаю что мне, после того как я передал данные, делать с ненужным мне обьектом. Передавай его по значению, а не по указателю. Тогда объект разрушиться вместе с QVariant.Название: Re: Использование QVariant Отправлено: labview от Август 23, 2010, 22:03 Работает! Только я не совсем понимаю что мне, после того как я передал данные, делать с ненужным мне обьектом. Передавай его по значению, а не по указателю. Тогда объект разрушиться вместе с QVariant.Вы не могли бы мне помочь, я не знаю как передать значение без указателя. Эта функция требует указатель, иначе к сожалению не компилируется. Находится это в функции void MainWidget::send() ЗЫ кнопка exit останавливает потоки, а крестик аппликацию (пока ещё не запрограммировал). Название: Re: Использование QVariant Отправлено: BRE от Август 23, 2010, 22:05 Вы не могли бы мне помочь, я не знаю как передать значение без указателя. Эта функция требует указатель, иначе к сожалению не компилируется. Я тут набросал небольшой пример:Код
Название: Re: Использование QVariant Отправлено: labview от Август 23, 2010, 22:16 По-моему понял, всё дело было в этой строке:
Код: Q_DECLARE_METATYPE( Type ); вместо: Код: Q_DECLARE_METATYPE( Type *); Спасибо огромное, на этом думаю мой трабл исчез. |