crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> автоматический disconnect, сигналы и слоты
zss
  опции профиля:
сообщение 19.8.2009, 14:24
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня создается окно. его слот подписывается на сигнал и окно отображается. Это диалог.

Безопасно ли просто закрыть окно (соответственно просто разрушить его). Произойдет ли автоматическое отключение от сигнала ?

если нет, то как этого добиться ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 19.8.2009, 14:26
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(zss @ 19.8.2009, 15:24) *
Безопасно ли просто закрыть окно (соответственно просто разрушить его). Произойдет ли автоматическое отключение от сигнала ?

Произойдет.

Сообщение отредактировал BRE - 19.8.2009, 14:26
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zss
  опции профиля:
сообщение 20.8.2009, 9:59
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 19.8.2009, 15:26) *
Произойдет.

спасибо. вроде получилось.
Только возник такой вопрос. У QWidget есть слот repaint. Он возможно используется для перерисовки.
Но я у QDialog (наследника QWindow) хочу создать слот с этим же именем.

Что произойдет если кто-то подпишется на этот слот. Будет вызван мой или QWidget - это же не виртуальный слот.
Есть подозрение, что будет обычное перекрытие метода. Нужно ли тогда предпринять какие действия, для вызова QWidget::repaint ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.8.2009, 10:07
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(zss @ 20.8.2009, 13:59) *
QDialog (наследника QWindow)
:scratch_one-s_head:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zss
  опции профиля:
сообщение 20.8.2009, 10:12
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 112
Регистрация: 9.6.2009
Пользователь №: 815

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.8.2009, 11:07) *
:scratch_one-s_head:

QWidget :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 20.8.2009, 10:15
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(zss @ 20.8.2009, 10:59) *
Он возможно используется для перерисовки.

не возможно а 100%

Цитата(zss @ 20.8.2009, 10:59) *
Но я у QDialog (наследника QWindow) хочу создать слот с этим же именем.


уважаемый вы что китайский коммунист? сами придумываете трудности и сами преодолеваете?
шутка.

вообще такое не рекомендуется.
при чем тут виртуальный слот или нет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.8.2009, 10:17
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(zss @ 20.8.2009, 13:59) *
очу создать слот с этим же именем.
плохая затея, лучше уникальное имя придумай.

Цитата(kwisp @ 20.8.2009, 14:15) *
при чем тут виртуальный слот или нет?
еслиб был виртуальный, то вызывался бы слот объекта при соединении с ним. (в случае его существования)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 20.8.2009, 10:25
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(Litkevich Yuriy @ 20.8.2009, 11:17) *
еслиб был виртуальный, то вызывался бы слот объекта при соединении с ним. (в случае его существования)

ни че не понял.
функции и методы можно переопределять и без виртуальных "примочек".
вообще такие вопросы каверзные лучше проверять тестами что и как вызовется соберется ли без ошибок и предупреждений не будет ли ругаться moc при выполнение программы и прочее.

надо посмотреть код Qt что там используется при вызове слота по соединению указатель на QObject или преобразованный указатель на верхний по иерархии класс содержащий Q_OBJECT. я думаю скорее всего 2. следовательно если и вызовется то вызовется переопределенный слот.
опять же тест все покажет. однако зачем и кому надо в этом разбираться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 19:21