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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сигналы и слоты  (Прочитано 2881 раз)
U.B.M.
Гость
« : Октябрь 19, 2012, 09:06 »

Доброго времени суток!

Создаю окно класса MyParent (наследник QMainWindow), там есть кнопка - по нажатию создается окно класса MyChild (наследник QDialog), в диалоговом окошке есть кнопка - возникает вопрос: как по нажатию кнопки в диалоговом окошке поменять название главного окошка, используя сигналы и слоты?

Делал так:

В MyParent в public slots делаю функцию на изменение заголовка, в Mychild привязываю нажатие кнопки к этому слоту. Всё компилируется, но не работает.

Как правильно сделать?

P.S. Перекрестный include - это нормально или не приветствуется?
Записан
U.B.M.
Гость
« Ответ #1 : Октябрь 19, 2012, 09:27 »

Вроде разобрался сам.

Но вопрос про перекрёсный include (в MyParent.cpp #include <MyChild.h> и наоборот) остается в силе. Может из этого что-нить плохое выйти?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Октябрь 19, 2012, 09:31 »

Плохо делать такие завязки.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
U.B.M.
Гость
« Ответ #3 : Октябрь 19, 2012, 09:36 »

То что плохо - ответ предполагаемый и ожидаемый  В замешательстве
А можно уточнить - чем плохо кроме того что получается трудный к восприятию спагетти-код?

А как правильнее делать? в контексте моего вопроса про изменение заголовка родительского окна по нажатию кнопки дочернего?
« Последнее редактирование: Октябрь 19, 2012, 09:37 от U.B.M. » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Октябрь 19, 2012, 09:38 »

В MyChild определяешь сигнал void changeHeader (const QString &text) и в MyParent коннектишь этот сигнал на свой слот. В итоге, MyChild ничего не должен знать о MyParent.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Октябрь 19, 2012, 09:39 »

А можно уточнить - чем плохо кроме того что получается трудный к восприятию спагетти-код?

Чем меньше зависимостей, тем лучше возможность повторного использования кода.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
U.B.M.
Гость
« Ответ #6 : Октябрь 19, 2012, 09:44 »

В MyChild определяешь сигнал void changeHeader (const QString &text) и в MyParent коннектишь этот сигнал на свой слот. В итоге, MyChild ничего не должен знать о MyParent.

Благодарю. Щас попробую  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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