Продвижение виджетов в Qt Creator

Создатель Qt имеет возможность продвигать один виджет на специально созданный класс, который получается из базового виджета - я хочу использовать его для продвижения виджета в класс в текущем проекте. Создатель Qt спрашивает меня о имени класса и имени файла заголовка, и эти значения передаются непосредственно в файл *.ui, а затем в ui_myform.h - проблема в том, что этот файл может быть (и обычно) сгенерирован за пределами исходного дерева (в дереве сборки), который может быть в произвольном месте, поэтому прямая спецификация пути в окне продвижения не поможет. Как дать QtCreator/uic знать, где искать правильный заголовок? Возможно ли это?

Возможно, существует какое-то Qt-переменное, определяющее расположение исходного дерева, которое я мог бы вставить в поле имени файла заголовка?

Я использую самокомпилированный QtCreator 2.0.1 + с самокомпилированным Qt 4.7.1.

EDIT:

Почему вы не можете просто ввести полное имя файла заголовка?

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

Ответ 1

Заголовочный файл, который запрашивает у дизайнера в диалоговом окне продвижения, ВАШ собственный заголовочный файл, который определяет пользовательский виджет, а не сгенерированный файл ui _ *. h.

Предположим, что вы хотите продвигать простой QWidget до MyCustomWidget, у вас уже должен быть MyCustomWidget.h, который определяет ваш класс MyCustomWidget, включенный в ваш .pro файл, как это:

HEADERS  += MyCustomWidget.h

И в диалоговом окне продвижения виджета просто введите MyCustomWidget.h. Целью этого является то, что сгенерированный файл заголовка ui (где бы он ни находился) может включать определение класса ВАШ.

Ответ 2

Я уже понял это - я продвигался к моему классу и давал заголовочное имя, которое было написано самостоятельно, это было правильно.

Проблема заключалась в том, что этот (самостоятельно написанный) файл не был непосредственно в каталоге проекта, а в подкаталоге src (где все остальные источники также есть), я не использую шаблон subdirs, но просто добавляю их как

SOURCES += src/myWidget.cpp

Опция продвижения не требует полного пути, но она нуждается в ней, как она появляется в файле *.pro - в этом случае переход от myWidget.h в src/myWidget.h сделал трюк - и он будет работать, если я перейду или поделиться им.

Ответ 3

Если продвинутая форма виджетов (.ui) и файлы классов (.cpp, .h) находятся в подкаталоге проекта Qt Creator, а решение j_kubik не помогает отображать ошибку ("foo.h not found"), попробуйте использовать только имя файла заголовка для продвижения и укажите путь как INCLUDEPATH в файле .pro.