Russian Qt Forum
Декабрь 18, 2017, 02:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Пользовательский виджет (плагин)в Qt Designer  (Прочитано 281 раз)
jurijt
Новичок

Offline Offline

Сообщений: 3



Просмотр профиля
« : Декабрь 06, 2017, 06:57 »

Добрый день!
Помогите начинающему окончательно разобраться с пользовательскими виджетами для Дизайнера. Я полагал, что получив .dll с виджетом, и соответственно разместив его, мой виджет будет имеет полную самодостаточность. Т.е. как и встроенные в Дизайнер виджеты. Но оказалось, что при использовании виджета все равно надо подключать (прописывать пути) к исходным файлам виджета. Без этого при компиляции проекта вылезает куча ошибок. Подскажите, имеется ли какая либо возможность сделать, чтоб пользовательские виджеты имели свойства, как и стандартные и не требовали указания путей к исходникам?
Записан
vbv
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #1 : Декабрь 06, 2017, 09:19 »

Рекомендую взять книгу и почитать.

На данном этапе скажу несколько, даже не знаю как назвать, советов/утверждений.

1. Виджет в дизайнере состоит из:
1.1. Заголовочного файла .h
1.2. Библиотеки (в вашем случае dll) реализующий сам виджет.
1.3. И собственно плагина для дизайнера (dll) дающему абстрактный доступ к виджету из п.1.2 и порожденному от QDesignerCustomWidgetInterface

2. При запуске дизайнер находит все плагины (в т.ч. созданные в п.1.3)
3. Когда вы ставите его на форму - дизайнер знает через плагин из п.1.3 как создать виджет из п.1.2.
4. Вы сохраняете виджет в файл ui.

5. Вы подключаете виджет к своему приложению и в этот момент для доступа к свойствам нужно подключить .h файл иначе компилятор не узнает о именах свойств/методов вашего плагина. (тут возможны варианты т.к. о существовании .h файла дизайнер знает) посмотрите файлы созданные moc препроцессором для понимания там уже есть подключение вашего h файла.
6. Вы в .pro или подобный файл приложения подключаете библиотеку т.к. для линковщика надо указать с чем линковать.

Компилируем, собираем, радуемся.

Если коротко - как-то так.
Записан
jurijt
Новичок

Offline Offline

Сообщений: 3



Просмотр профиля
« Ответ #2 : Декабрь 06, 2017, 15:11 »

Спасибо за ответ!
Я всегда пытаюсь самостоятельно найти ответы на свои недопонимания, но в данном случае, увы, истратив порядочно времени  ответа получить не удалсь :-(


5. Вы подключаете виджет к своему приложению и в этот момент для доступа к свойствам нужно подключить .h файл иначе компилятор не узнает о именах свойств/методов вашего плагина. (тут возможны варианты т.к. о существовании .h файла дизайнер знает)
Вот про этот нюанс я и пытаюсь найти ответ! Где ему (Дизайнеру) прописать, чтоб он знал не только о существовании такого файла, но и где он лежит?

Пока таких плагинов-виджетов не много, то вроде можно каждый раз и ручками прописать. Но предполагается, что число их будет со временем расти.
Записан
vbv
Новичок

Offline Offline

Сообщений: 40


Просмотр профиля
« Ответ #3 : Декабрь 06, 2017, 21:04 »

QString QDesignerCustomWidgetInterface::includeFile() const;
Должен вернуть строку содержащую имя .h файла.

QDesignerCustomWidgetInterface это то от чего порождаете ваш плагин....  
Думаю понятно.

Добавлено:
И еще, не знаю где под форточками лежат заголовочные файлы но под linux у меня /usr/include
А не стандартное место указывается дополнением в .pro файл:
INCLUDEPATH += .... где-то там
« Последнее редактирование: Декабрь 06, 2017, 21:09 от vbv » Записан
jurijt
Новичок

Offline Offline

Сообщений: 3



Просмотр профиля
« Ответ #4 : Декабрь 10, 2017, 10:11 »

Спасибо, что пытались мне помочь, но я не понимаю, как это решает мою задачу. Как подключить заголовочные и прочие файлы в проект мне понятно. Но как сделать чтоб их не надо было бы подключать, как это у стандартно встроенных в Дизайнер виджетов, так и не понял   Плачущий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

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