связаны друг с другом. Например, в одном из окон происходит изменение настроек, соответственно главное окно должно сразу после нажатия кнопки считать их. Или же виджет, где идёт запись новой строки в базу данных, а виджет с отображением базы должен сразу обновиться. Сделано сейчас через коннекты в главном окне, там виджеты задаются через new, коннектов этих уже довольно много. Вроде бы все работает правильно, но никак не разберусь насколько это оптимально и как лучше сделать?
есть такой шаблон проектирования Observer. Возможно он вам поможет?
Observer это ж и есть сигналы слоты
Синглтон класса настроек с методом void subscribe(QObject*) и сигналом void settings_changed();. Все классы виджетов реализуют слот onSettingsChanged(), и в конструкторе вызывают instanсу settings и subscribe. Этого по идее должно хватить.
возможно лучше вместо синглтона стоит сипользовать shared_pointer? Подписчики хранят указатели внутри. когда их не остается объект уничтожается. Последним кстати вроде бы уничтожится главное окно.
Возможно. Если бы я хоть раз его использовал, может быть так и сказал. А так синглтон вполне себе работающее решение. Деструктор класса синглтона вполне себе можно привязать к сигналу от qApp.
Обсуждают сегодня