Название: Наследование сигналов Отправлено: YvenTitan от Февраль 17, 2017, 11:42 Здравствуйте
Можете подсказать, при наследовании классов наследуются ли сигналы? Если наследуются, то можно ли сделать так, чтобы сигнал не наследовался (что-то типа protected члена)? Если можно, то как? Просто поместить в protected? Название: Re: Наследование сигналов Отправлено: Пантер от Февраль 17, 2017, 11:56 Сигналы наследуются. Нет смысла в protected сигналах.
Название: Re: Наследование сигналов Отправлено: gil9red от Февраль 17, 2017, 11:58 А зачем вообще использовать protected для сигналов?
Название: Re: Наследование сигналов Отправлено: YvenTitan от Февраль 17, 2017, 12:10 Я хочу, чтобы в наследуемом классе не было сигнала базового класса. Можно так сделать?
Название: Re: Наследование сигналов Отправлено: Пантер от Февраль 17, 2017, 12:11 На солько я знаю, нет. Да и зачем???
Название: Re: Наследование сигналов Отправлено: GreatSnake от Февраль 17, 2017, 12:17 А зачем вообще использовать protected для сигналов? До Qt5 только такие и были.Название: Re: Наследование сигналов Отправлено: YvenTitan от Февраль 17, 2017, 12:27 Спасибо.
У меня получается, что из предка с помощью сигнала надо вызывать функцию наследника У меня как раз QT4 Название: Re: Наследование сигналов Отправлено: Пантер от Февраль 17, 2017, 12:31 Эм. А зачем вызывать сигналом, а не просто вызовом метода или тем же invokeMethod?
Название: Re: Наследование сигналов Отправлено: ViTech от Февраль 17, 2017, 12:38 Я хочу, чтобы в наследуемом классе не было сигнала базового класса. Можно так сделать? Лучше напишите, что в конечном итоге хотите получить. И чем наследование сигналов мешает. Название: Re: Наследование сигналов Отправлено: ssoft от Февраль 17, 2017, 13:04 Я хочу, чтобы в наследуемом классе не было сигнала базового класса. Можно так сделать? Можно, например, так Код: class BlaBla Можно поискать в недрах Qt, там довольно часто используются приватные сигналы. Но это недокументированные возможности. Только в Qt вся инкапсуляция нарушена напрочь, любой сигнал можно дернуть через invokeMethod. Название: Re: Наследование сигналов Отправлено: ssoft от Февраль 17, 2017, 13:19 Вот так сами Qt шники делают
Код: Q_SIGNALS: Название: Re: Наследование сигналов Отправлено: YvenTitan от Февраль 17, 2017, 13:28 Еще раз спасибо)
Вообще есть окно; от этого окна наследуется несколько окон, сколько именно неизвестно. Надо из первого окна посылать сигналы в наследуемые. Название: Re: Наследование сигналов Отправлено: Пантер от Февраль 17, 2017, 13:33 Для этого не сигналы нужны, а виртуальные слоты.
Название: Re: Наследование сигналов Отправлено: YvenTitan от Февраль 17, 2017, 14:53 Я имел в виду в какое-то конкретно наследуемое.
Это фактически другой вопрос, на который я бы хотел получить ответ. Есть окно(предок), в него приходят данные. В зависимости от того, какие данные, надо часть этих данных передать какому-то конкретному окну. Тк я не знаю сколько окон (это количество определяет пользователь в процессе работы программы), то и не знаю сколько сигналов прописывать в классе. Например, в предок пришла цифра 1 - значит окно номер 1 должно вывести 1, пришла 2 - окно номер 2 должно вывести 2 и тд С помощью чего это реализовать? Можно посылать один сигнал на все окна и окна будут сами понимать им пришло сообщение или нет. Т.е. если пришла цифра 2 в окно номер 1, то окно проверив 1 поймет, что сообщение пришло не ему Название: Re: Наследование сигналов Отправлено: Пантер от Февраль 17, 2017, 15:17 Можно всем посылать. Можно заюзать паттерн Наблюдатель.
Название: Re: Наследование сигналов Отправлено: sergek от Февраль 17, 2017, 15:48 Можно посылать один сигнал на все окна и окна будут сами понимать им пришло сообщение или нет. Т.е. если пришла цифра 2 в окно номер 1, то окно проверив 1 поймет, что сообщение пришло не ему Ну да, всем. Сигнал с параметром. В слоте в зависимости от значения параметра делаете все что нужно. |