Russian Qt Forum
Ноябрь 25, 2024, 10:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема со свойством класса QString при передаче в сигнал  (Прочитано 2808 раз)
joffadark
Гость
« : Январь 06, 2015, 16:11 »

Здравствуйте, уважаемые форумчане.

Столкнулся со странной проблемой:
Есть некий объект, у которого имеется слот. В котором создается объект другого класса ( = new CClassName(params)).
У этого другого объекта через конструктор заполняется небольшое количество свойств. Среди них есть свойства QString.
Затем сразу из этого же слота вызывается сигнал, в который передается этот объект класса с QString'ами.

Если обработчик этого сигнала делает что-либо с любым свойством типа QString, то после возврата к emit происходит Segmentation Fault.
Самое смешное, что если заполнить одно из свойств "ручками", присвоив некое значение прямо в слоте-генераторе сигнала, то при работе с таким свойством SegFault не происходит.

Сейчас для понятности попробую написать примерный код:

Код:
void CSomeObject::SomeSlot()
{
    CDataObject* dataObject = new CDataObject(); // в конструкторе свойства dataObject заполняются
    dataObject->someQStringProperty = "Example text";
    emit onSomeObjectSignal(dataObject); 
}
   

Вот это приемник сигнала onSomeObjectSignal:
Код:
void CSomeAcceptObject::onSomeObjectSignal(CDataObject* dataObject)
{
    qDebug() << dataObject->SomeQStringProperty;               // вот это выведется
    qDebug() << dataObject->SomeAnotherQStringProperty;    // вот на этом будет segmentation fault
}

Еще одна деталь: это происходит только со свойствами типа QString. Свойства с числовыми типами читаются без ошибок.

Подскажите, в чем может быть дело?
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #1 : Январь 06, 2015, 16:44 »

минимальный проект - в студию!

(что такое свойство - что делает функция его READ)
Записан
joffadark
Гость
« Ответ #2 : Январь 06, 2015, 19:07 »

Блин, накидал проект, который в точности имитирует ситуацию. Чтобы отправить сюда.
И такой проблемы нет  Шокированный WTF
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Январь 06, 2015, 21:48 »

это явный признак того, что где-то баг в твоем коде. может объект где-то удаляешь случайно?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.249 секунд. Запросов: 23.