Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Edynchik от Июль 01, 2013, 10:00



Название: Передача данных между классами
Отправлено: Edynchik от Июль 01, 2013, 10:00
Добрый день. Чую сейчас будут пинать, но все таки напишу о следующей проблеме. Есть у меня некий класс формы, также присутствую еще два класса : опросник порта и обработчик информации. Разнесено для того чтобы данными могли из нескольких классов опросников могли пользоваться неколько классов обработчиков. И вот произошла беда, класс опросник сложил инфу в некую переменную, а как засунуть ее в класс обработчик ума не приложу. В обработчике она должна забирать данные из класса-формы. В класс обработчик передаю класс формы как предок, но не могу получить доступ. Переменная точно публик. Спасибо, сильно не пинайте.


Название: Re: Передача данных между классами
Отправлено: Old от Июль 01, 2013, 10:07
В Qt для этого есть хороший сигнально-слотовый механизм.


Название: Re: Передача данных между классами
Отправлено: Bepec от Июль 01, 2013, 10:14
Парочка вариантов:

1) Гетерами - создаём функцию, которая при вызове возвращает ваши данные в удобоваримом виде. Функция публичная, собственно надо знать лишь указатель на класс.

Сложность - нулевая.
Недостаток - путаница указателей классов между собой.

2) сигнал-слотовым механизмом. О нём написано много, суть - делаем сигнал, передающий данные и привязываем его к слоту.

Сложность - для новичка средне :P
Недостаток - слоты работают медленнее чем прямой вызов функций.

3) сигнлтон. Класс, доступный всем и существующей в единичном экземляре. Позволяет получить доступ к переменным кому угодно, откуда угодно в вашей программе.

Сложность - средняя. (но много инфы ;) )
Недостаток - нужна синхронизация доступа.

4) делать класс - менеджер, руководящий процессом. Имеющий в себе указатели на все ваши основные классы и организующий общение их между собой при помощи прямых вызовов функций.

Сложность - легкая, но архитектуру надо продумать.
Недостаток - архитектура сначала кривая бывает :D

PS эк я выпендрился :D


Название: Re: Передача данных между классами
Отправлено: Edynchik от Июль 01, 2013, 10:34
спасибо за ответы, пока сделал сигнал-слотами. Причиной поста стала проблема передачи сигнала из класса формы в слот класса обработчика. А конкретно пытался сделать коннект в классе обрабочике, а не классе форме. Но интересны другие варианты решения данной проблемы.