Связка слота и сигнала разных объектов |
Здравствуйте, гость ( Вход | Регистрация )
Связка слота и сигнала разных объектов |
AD |
15.1.2009, 14:18
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Такая ситуация. Есть виджет отрисовки карты, который я переопределил (сделал наследника от QWidget). В нем есть слот, который определяется, когда я в контекстном меню нажимаю определенную галочку.
Каким образом мне определить слот в главном окне так, чтобы он реагировал на то же самое действие? Чтобы не быть голословным, вот небольшой примерчик кода:
|
|
|
spirit |
15.1.2009, 14:21
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: 1 |
можно создать сигнал в наследуемом виджете , а потом сконнектить его в главном окне с нужным слотом.
или я вопрос не понял? |
|
|
Litkevich Yuriy |
15.1.2009, 14:29
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
15.1.2009, 14:52
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Сделал вот так вот:
Выдает ошибку, что checked_dist_measure - защищенная функция. что я не так сделал? Как тогда следует поступить? |
|
|
spirit |
15.1.2009, 14:55
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: 1 |
а Q_OBJECT где?
|
|
|
AD |
15.1.2009, 14:58
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
spirit |
15.1.2009, 15:02
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: 1 |
нельзя так вызывать сигнал. сделайте обертку в наследуемом классе типа _q_emit_cheched.... и там делаете делайте emit checked_dist_measure(is_measure) или же через QMetaObject::invokeMethod. но я вот не пойму зачем такой наворот? разве сразу нельзя вызвать, что надо? а Q_OBJECT где? ты про что? Не понял. Есть он и в наследнике от QWidget и в классе главного окна (TLV) Q_OBJECT нужно вставлять и для наследуемых классов иначе мок не сгенерит нужную инфу и сигналы-слоты работать не будут. Цитата The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt's meta-object system.
|
|
|
AD |
15.1.2009, 15:04
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
нельзя так вызывать сигнал. сделайте обертку в наследуемом классе типа _q_emit_cheched.... и там делаете делайте emit checked_dist_measure(is_measure) или же через QMetaObject::invokeMethod. но я вот не пойму зачем такой наворот? разве сразу нельзя вызвать, что надо? Как именно сделать? Можете показать, пожалуйста? Я не совсем понимаю каким образом это сделать? В каком смысле вызвать напрямую? |
|
|
spirit |
15.1.2009, 15:09
Сообщение
#9
|
Студент Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: 1 |
вот еть код
в нем вы пытаетесь послать сигнал checked_dist_measure , который находится в другом класс (это уже неверно т.к. все сигналы это protected методы, компиль ругается правильно ) и шлете его самому себе, т.е. TLV судя по коннетку
а нельзя ли сделать вот так?
|
|
|
Litkevich Yuriy |
15.1.2009, 15:11
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 21.12.2024, 14:37 |