Russian Qt Forum
Сентябрь 22, 2024, 21:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Сигналы и слоты в плагинах  (Прочитано 20938 раз)
andrew.k
Гость
« Ответ #45 : Сентябрь 07, 2012, 16:45 »

знает какой из конструкторов QObject ему использовать. andrew.k подскажи как ты решал эту проблему?
Зачем ты при наследовании интерфейса добавляешь наследование от QObject. У тебя получается множественное наследование от QObject.

Вот так должно быть.
Код
C++ (Qt)
class FRUITSSHARED_EXPORT Fruits : public TestInterface {
   Q_OBJECT
   Q_INTERFACES(TestInterface)
 

QObject is ambiguous base of [имя плагина]. Насколько я понял компилер не знает какой из конструкторов QObject ему использовать.
Именно!
« Последнее редактирование: Сентябрь 07, 2012, 16:50 от andrew.k » Записан
lighting
Гость
« Ответ #46 : Сентябрь 10, 2012, 11:27 »

Тогда компилятор ругается что класс QObject ему недоступен при экспорте плагина:
Код
C++ (Qt)
class FRUITSSHARED_EXPORT Fruits : public TestInterface {
   Q_OBJECT
   Q_INTERFACES(TestInterface)
Код
C++ (Qt)
#include "fruits.h"
 
Fruits::Fruits()
{
}
 
Fruits::~Fruits()
{
}
 
...
 
Q_EXPORT_PLUGIN2(TestInterface, Fruits)
 
На последнюю строку он ругается
..\fruits\fruits.cpp:28: ошибка: 'QObject' is an inaccessible base of 'Fruits'
Записан
andrew.k
Гость
« Ответ #47 : Сентябрь 10, 2012, 12:46 »

Не знаю, почему не компилится. Возможно ты забыл убрать вызов конструктора QObject?
Вот по-быстрому переделал пример хокса.
Компилится и работает.
« Последнее редактирование: Сентябрь 10, 2012, 15:54 от andrew.k » Записан
lighting
Гость
« Ответ #48 : Сентябрь 11, 2012, 13:50 »

ответ оказался банальным - H-ник интерфейса не был включен в pro-файл плагина, просто включен в h-ник самого плагина. При этом если убрать QObject из интерфейса то все собирается, а если добавить QObject то собирается только после того как интерфейс добавить в plugin.pro.
Записан
andrew.k
Гость
« Ответ #49 : Сентябрь 11, 2012, 16:23 »

ответ оказался банальным - H-ник интерфейса не был включен в pro-файл плагина, просто включен в h-ник самого плагина. При этом если убрать QObject из интерфейса то все собирается, а если добавить QObject то собирается только после того как интерфейс добавить в plugin.pro.
Это понятно.
h-ник должен быть в pro-файле обязательно, если в нем есть Q_OBJECT. Иначе как до него доберется moc?
А без moc ничего не выйдет.
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 20.