Импортировать ресурсы Qt, когда классы main.cpp и GUI находятся в зависимом статическом проекте lib, - PullRequest
0 голосов
/ 02 февраля 2010

Сценарий:

У меня MSVC2005 с установленной надстройкой Qt Visual Studio. В моем решении есть проект A , состоящий из нескольких простых модулей кода C ++, который построен на исполняемый файл A.exe. Проект A не содержит файл .cpp с main(), но имеет зависимость от проекта B .

B - это проект Qt, собранный как статическая библиотека. Он состоит из нескольких классов GUI и типичного для Qt main.cpp (). Компиляция ссылок A и B работает как чудо, и у меня есть Qt-приложение. Я сделал несколько вилок A ( Afork1 , Afork2 и т. Д.), Которые имеют общий интерфейс с графическим интерфейсом, но имеют различные настройки базовой бизнес-логики. , Я могу выполнить пакетную сборку A.exe, Afork1.exe, ... и т. Д., И все они будут иметь один и тот же графический интерфейс, который выглядит довольно аккуратно.

Проблема:

В B имеется файл .qrc с несколькими изображениями, значками и т. Д., Которые используются в графическом интерфейсе. Классы GUI создаются с помощью Qt Designer, и я добавил ресурсы в виджеты GUI. После сборки и запуска A.exe я не вижу эти значки и изображения, место для них зарезервировано в виджетах, но не заполнено содержимым. Я думаю, ресурсы не связаны с исполняемым файлом. Есть ли способ обеспечить связывание ресурсов, которые являются частью проекта Qt static lib?

1 Ответ

2 голосов
/ 02 февраля 2010

Вам необходимо явно инициализировать ресурсы. Из документов Qt :

Если у вас есть ресурсы в статике библиотека, вам может понадобиться инициализация ваших ресурсов вызов Q_INIT_RESOURCE () с Базовое имя файла .qrc. За Пример:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Q_INIT_RESOURCE(graphlib);
    ...
    return app.exec();
}
...