Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 21.10.2011
Сообщений: 24
Записей в блоге: 1

Требуется совет по проектированию с использованием Qt

31.01.2015, 13:16. Показов 683. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
проектирую сейчас такую структуру: есть объект класса, унаследованного от QObject, назовем его источник. И есть несколько объектов класса, так же унаследованных от QObject, назовем их приемники. Число приемников определяется на этапе выполнения пользователем. Приемники, естественно, подключаются к источнику через сигналы слоты. И по одному сигналу источника должен сработать в порядке очереди один приемник, а не все. Так как приемников неизвестное число, я не могу прописать в источнике персональный сигнал для каждого приемника. Сейчас придумал только решение на основе постоянно использования конструкции
QObject::connect(...)
emit ...
QObject::disconnect(...)
при каждой передачи сигнала от источника.
Может кто-нибудь подскажет более красивое и менее трактористкое решение?)
Заранее благодарен за ответы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2015, 13:16
Ответы с готовыми решениями:

Нужен совет по проектированию БД
Здравствуйте! У меня есть две сущности: Teacher, Student, каждая из сущностей мб пользователем с определенным наборо ролей. Поля у...

Нужен просто совет по проектированию таблицы
Здравствуйте. Такое дело, при проектировании БД получается что таблица (недвижимость) имеет столбцов чуть больше чем 70 - это все свойства...

Нужен совет по "правильному" проектированию базы
Добрый день. Обращаюсь за помощью. Начальные данные из предметной области: Есть три сущности: прибор, блок, аксессуар. Прибор...

9
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
31.01.2015, 14:31
Слоты и так выполняются в порядке очереди.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
31.01.2015, 15:54
Variag, Ну вот вижу такой выход. Твой сигнал пусть имеет параметр - номер очередного приемника. А в классе приемника переменная - его собственный номер. Приемник анализирует совпадение параметра-номера с собственным номером, и в случае несовпадения просто делает return.
А давать номера приемникам через статическую переменную класса Приемник.
Другой подход. Связать сигнал источника с одним слотом другого объекта. Назовем его X. Ему должен быть известен весь массив приемников resept[n]. И этот слот вызывает метод обработки соответствующего приемника
resept[i]->Metod();
Туманно?
1
1 / 1 / 0
Регистрация: 21.10.2011
Сообщений: 24
Записей в блоге: 1
31.01.2015, 16:24  [ТС]
Спасибо. Варианты интересные. Буду думать как прикрутить их к моему проекту.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
31.01.2015, 16:49
Байт, хрень. В таком случае есть Наблюдатель
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
31.01.2015, 17:40

Не по теме:

Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Байт, хрень.
Знаете, никакой другой реакции я от вас не ожидал.:rofl:

Но, ИМХО, чтобы использовать предложенный вами замечательный патерн, надо сначала чуток поломать зубки самому. Хотя бы, чтоб понять о чем речь идет. А уж после этого оценить всю его мощь и красоту.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
31.01.2015, 18:48
Байт, если знаешь номер, то проще вызвать соответствующих метод, без всяких сигналов и слотов.
Цитата Сообщение от Байт Посмотреть сообщение
надо сначала чуток поломать зубки самому.
ничего, что там готовый код написан?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
31.01.2015, 19:28
Да и при чем тут код, это известный паттерн, только я чет подозреваю что ТС нужно другое.
0
31.01.2015, 19:47

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
только я чет подозреваю что ТС нужно другое.
А вот мы посидим, подождем. Пока ТС, как сонный удав переваривает...:)

0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
31.01.2015, 19:56
Да тут переваривать в принципе нечего, если переписать метод наблюдателя:

C++
1
2
3
4
5
    void SupervisedString::_Notify()
    {
       if(!_observers.empty())
            _observers.front()->handleEvent(*this);
    }
То будет приблизительно то что нужно ТС. Но конечно данный код не позволяет использовать связь между потоками, кроме того есть кое-какие нюансы в данной реализации.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.01.2015, 19:56
Помогаю со студенческими работами здесь

Требуется совет.
Есть вот такое задание: Вобщем например есть карта здания,кот.разбита на сектора.Например сектор 1-комната от 1 - 50 и т.д.Теперь есть...

Требуется совет
Всем привет! С прошедшими праздниками всех и с блин с наступающими трудовыми буднями... Ситуация. В первых числах января сайтику...

Требуется совет
Задание первое. (2x{e}^{y}+{y}^{3}{e}^{x}+2)dx+({x}^{2}{e}^{y}+3y'{e}^{x})dy=0 Задание второе. y'={e}^{x+y}+{e}^{x-y} Пришлите,...

Требуется совет.
Доброго времени суток. Не уверен, что создал тему в нужно разделе, поэтому прошу модеров не ругаться) Итак, я начинающий программист,...

Требуется совет
Добрый день уважаемые участники форму. Хотел бы спросить у вас совета. Мне 24 года работаю менеджером, но очень хочется кардинально...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru