Продвижение виджетов в 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.