crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Сигнал
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
silver47 Дата 18.4.2011, 8:57
 
Цитата(MJIbIu @ 18.4.2011, 10:50) *
а что тебе мешает сделать так ?
childClass = new ChildClass(this);
QObject::connect(this, SIGNAL(someParentSignal()), childClass, SLOT(someParentSlot));


Ну, видимо, ничего. Вот и нашлось более изящное решение.

UPD: все-же SLOT(someChildSlot())
MJIbIu Дата 18.4.2011, 8:50
 
Цитата(silver47 @ 18.4.2011, 8:36) *
Цитата(Litkevich Yuriy @ 18.4.2011, 8:43) *
а почему нет проблем?


Совсем запутался. Дочерний класс будет испускать любые сигналы, и базовый класс вполне легко их будет видеть. Чтобы дочерний класс увидел сигналы базового класса, как мне кажется, нужно или указатель на родительский класс тащить в дочерний, или, тупо, вызывать какой-либо публичный метод в дочернем классе.

Как-то так:
// Базовый класс А
childClass = new ChildClass(this);
QObject::connect(childClass, SIGNAL(childSignal()), this, SLOT(someParentSlot()));
// теперь при испускании дочерним классом сигнала childSignal, будет выполняться слот someParentSlot родителя

// чтобы выполнить какой то слот у дочернего класса из родительского достаточно сделать так:
childClass->someChildSlot();
// при условии что someChildSlot() объявлен в разделе public slots:


Правильно я думаю?

а что тебе мешает сделать так ?
childClass = new ChildClass(this);

QObject::connect(this, SIGNAL(someParentSignal()), childClass, SLOT(someParentSlot));

silver47 Дата 18.4.2011, 7:36
 
Цитата(Litkevich Yuriy @ 18.4.2011, 8:43) *
а почему нет проблем?


Совсем запутался. Дочерний класс будет испускать любые сигналы, и базовый класс вполне легко их будет видеть. Чтобы дочерний класс увидел сигналы базового класса, как мне кажется, нужно или указатель на родительский класс тащить в дочерний, или, тупо, вызывать какой-либо публичный метод в дочернем классе.

Как-то так:
// Базовый класс А
childClass = new ChildClass(this);
QObject::connect(childClass, SIGNAL(childSignal()), this, SLOT(someParentSlot()));
// теперь при испускании дочерним классом сигнала childSignal, будет выполняться слот someParentSlot родителя

// чтобы выполнить какой то слот у дочернего класса из родительского достаточно сделать так:
childClass->someChildSlot();
// при условии что someChildSlot() объявлен в разделе public slots:


Правильно я думаю?
Litkevich Yuriy Дата 18.4.2011, 6:43
 
Цитата(Yaroslav @ 18.4.2011, 4:23) *
Чтобы передать сигнал из класса В в класс А проблем нет
а почему нет проблем?
silver47 Дата 18.4.2011, 4:53
 
Цитата(Yaroslav @ 18.4.2011, 3:23) *
Есть базовый класс А. .. стандартно он называется MainWindow ... есть какой класс В.. Чтобы передать сигнал из класса В в класс А проблем нет ... А как это сделать наоборот????


Передать указатель на базовый класс в дочерний? Или сделать еще проще. В базовом классе при возникновении сигнала отрабатывается некий слот, который вызывает публичную процедуру дочернего класса на выполнение.
Yaroslav Дата 18.4.2011, 1:23
  Есть базовый класс А. .. стандартно он называется MainWindow ... есть какой класс В.. Чтобы передать сигнал из класса В в класс А проблем нет ... А как это сделать наоборот????
Гость Дата 17.4.2011, 22:15
  Что? По нормальному объясните, что хотите.
Yaroslav Дата 17.4.2011, 20:02
  Как передать сигнал классам с MainWindow ..?

Спасибо!
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 0:23