![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Такая ситуация. Есть виджет отрисовки карты, который я переопределил (сделал наследника от QWidget). В нем есть слот, который определяется, когда я в контекстном меню нажимаю определенную галочку.
Каким образом мне определить слот в главном окне так, чтобы он реагировал на то же самое действие? Чтобы не быть голословным, вот небольшой примерчик кода:
|
|
|
spirit |
![]()
Сообщение
#2
|
![]() Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
можно создать сигнал в наследуемом виджете , а потом сконнектить его в главном окне с нужным слотом.
или я вопрос не понял? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
AD |
![]()
Сообщение
#4
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Сделал вот так вот:
Выдает ошибку, что checked_dist_measure - защищенная функция. что я не так сделал? Как тогда следует поступить? |
|
|
spirit |
![]()
Сообщение
#5
|
![]() Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
а Q_OBJECT где?
|
|
|
AD |
![]()
Сообщение
#6
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
spirit |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 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 |
![]()
Сообщение
#8
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
нельзя так вызывать сигнал. сделайте обертку в наследуемом классе типа _q_emit_cheched.... и там делаете делайте emit checked_dist_measure(is_measure) или же через QMetaObject::invokeMethod. но я вот не пойму зачем такой наворот? разве сразу нельзя вызвать, что надо? Как именно сделать? Можете показать, пожалуйста? Я не совсем понимаю каким образом это сделать? В каком смысле вызвать напрямую? ![]() |
|
|
spirit |
![]()
Сообщение
#9
|
![]() Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 13.1.2009 Из: Ukraine, Krivoy Rog Пользователь №: 486 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
вот еть код
в нем вы пытаетесь послать сигнал checked_dist_measure , который находится в другом класс (это уже неверно т.к. все сигналы это protected методы, компиль ругается правильно ![]()
а нельзя ли сделать вот так?
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#10
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.3.2025, 0:56 |