Как вызвать из плагина функцию приложения? |
Здравствуйте, гость ( Вход | Регистрация )
Как вызвать из плагина функцию приложения? |
igor_bogomolov |
21.9.2010, 12:06
Сообщение
#11
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Т.е. падение происходит когда приложение испускает сигнал?
Тогда такой вопрос, каким образам вы связываете сигнал приложения со слот плагина? P.S. Перечитал еще раз и запутался окончательно. Если бы вы приложили код было бы понятнее что у вас происходит. |
|
|
wiz29 |
21.9.2010, 12:09
Сообщение
#12
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Извиняюсь, не указал важную деталь и возможно ввел в заблуждение: ошибка происходит в слоте, который является элементом плагина. В остальной части плагина вызов функций основного приложения происходит корректно. Покажите пожалуйста примерный вариант кода (где и как вызыватются нужные методы, с описанием сторон, под сторонами я понимаю плагин/приложение). не обязательно полный. |
|
|
mva |
21.9.2010, 23:02
Сообщение
#13
|
Участник Группа: Участник Сообщений: 104 Регистрация: 15.3.2009 Из: Киров Пользователь №: 615 Спасибо сказали: 3 раз(а) Репутация: 0 |
Вот код плугина
searchparameters.h Раскрывающийся текст
searchparameters.cpp Раскрывающийся текст
Плагин SearchParameters "заряжается" примерно так: Раскрывающийся текст
QtDesigner принимает этот плагин. Написал тестовый пример имитирующий проблему (переделанный стандартный пример из поставки Qt). Сам пример, конечно, не самый элегантный, но все проблемы и возможные способы решения он показывает. Спасибо за пример. Обязательно его изучу. Т.е. падение происходит когда приложение испускает сигнал? Тогда такой вопрос, каким образам вы связываете сигнал приложения со слот плагина? Да, приложение падает, когда испускается сигнал, точнее когда начинает выполняться код соответствующего слота. Сигнал исходит от кнопки, которая является частью плагина и обрабатывается слотом в этом же плагине. |
|
|
igor_bogomolov |
22.9.2010, 2:25
Сообщение
#14
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Видимо в файле проекта плагина отсутствуют следущие файлы
|
|
|
mva |
22.9.2010, 9:50
Сообщение
#15
|
Участник Группа: Участник Сообщений: 104 Регистрация: 15.3.2009 Из: Киров Пользователь №: 615 Спасибо сказали: 3 раз(а) Репутация: 0 |
Все, проблему решил простейшим образом.
CODE void SearchParameters::dictionaryButtonPressed() { app->getDictionaries()->addDictionary(sender()->objectName(), 0); //здесь происходит сбой symbol lookup error .../libplugins.so: undefined symbol: _ZN12Dictionaries13addDictionaryE7QStringi Dictionary* dict = app->getDictionaries()->getDictionary(sender()->objectName()); if (dict != 0) { ... } ... } Всего-то что сделал - объявил функцию addDictionary(QString, int) в классе Dictionaries виртуальной. И все. Т.е. получается, что функции, вызываемые плагином из основного приложения должны быть виртуальными. Всем спасибо за помощь. |
|
|
Текстовая версия | Сейчас: 20.12.2024, 13:35 |