Qt расшарить Custom Component из исходного кода

234
18 июня 2018, 20:20

Есть свой компонент-наследник от QWidget, полностью в исходном коде. В Дизайнере размещаю этот компонент QMyCustomWidget на форме. Далее, делаю сборку, и получаю ошибку:

"Не удалось найти заголовочный файл 'qmycustomwidget.h'"

Далее, смотрю в код сгенерированного заголовочного файла формы, и вижу такое включение:

#include <qmycustomwidget.h>

Из этого включения ясно что Qt ищет мой компонент в библиотеках проекта. Далее, меняю это включение на реальный путь к модулю:

#include "../GUI/Components/QMyCustomWidget.hpp"

И проект успешно собирается.

Пользуюсь:

  • MSVS2017
  • Qt5.11
  • QtDesigner

Подскажите, каким образом мне правильно обучить Qt искать этот модуль (установить путь к заголовочному файлу)?

Answer 1

Подсказали решение. В QtDesigner-е, надо нажать ПКМ на компонент, выбрать "Преобразованные виджеты",

в окне самому можно настроить ссылку на хидер:

Теперь генератор делает правильный код)

Добавлено

Если вы не работаете в дизайнере, есть вариант добавить в *.ui файл фрейма в раздел ui определение своих компонентов:

<?xml version="1.0" encoding="UTF-8"?>
<ui ...>
 ...
 <customwidgets>
  <customwidget>
   <class>QStatusBarWidget</class>
   <extends>QStatusBar</extends>
   <header>../GUI/Components/QStatusBarWidget.hpp</header>
  </customwidget>
 </customwidgets>
</ui>
READ ALSO
Найти и удалить максимальный элемент в списке. (C++)

Найти и удалить максимальный элемент в списке. (C++)

Надо удалить наибольший элемент из первых n-элементов спискаКак-то не соображу как это сделать

462
задача на вектор

задача на вектор

Сережа и Дима играют в игруПеред игроками лежат в ряд n карточек,На каждой карточке написано число, причем все числа на карточках различны,Игроки...

284
Что нужно сделать, чтобы при компиляции под x64_32 передать ссылку на функцию?

Что нужно сделать, чтобы при компиляции под x64_32 передать ссылку на функцию?

При вызове MessageSubscribe в hCallback передаётся часть кода функции main_loop, а не указательИзменение HPROC на void* ничего не меняет

252
Можно ли хранить объекты разных классов (производных одного абстрактного класса) в одном массиве или списке?

Можно ли хранить объекты разных классов (производных одного абстрактного класса) в одном массиве или списке?

Допустим имеется один абстрактный класс: Word - от него производим два класса: Noun и VerbТут сталкиваемся с вопросом: как хранить объекты этих классов?...

259