Продвижение виджетов в Qt Creator - PullRequest
13 голосов
/ 05 февраля 2011

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

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

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

РЕДАКТИРОВАТЬ:

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

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

Ответы [ 3 ]

22 голосов
/ 05 февраля 2011

Файл заголовка, который Designer запрашивает у вас в диалоговом окне продвижения, - YOUR собственный файл заголовка, определяющий пользовательский виджет, а не сгенерированный ui _ *. H файл.

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

HEADERS  += MyCustomWidget.h

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

3 голосов
/ 06 февраля 2011

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

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

SOURCES += src/myWidget.cpp

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

1 голос
/ 18 июня 2013

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

...