Как инициализировать ресурсы Qt из общей библиотеки? - PullRequest
9 голосов
/ 01 декабря 2010

Я не могу понять, как инициализировать ресурсы Qt, объявленные и используемые общей библиотекой в ​​Red Hat Enterprise Linux 5.2.

Я добавил файл ресурсов Qt в свою общую библиотеку, добавил префикс с именем "ресурс ", и добавил файл" files / styleSheet.xsl ".Файл ресурсов называется «resources.qrc».QFile :: exist возвращает false?

MySharedLib::MySharedLib()
{

   // I think Q_INIT_RESOURCE basically expands to this:
   // The resource file is named "resources.qrc"
   extern int qInitResources_resources();
   qInitResources_resources(); 

      QString resourcePath = ":/resource/files/styleSheet.xsl";
      if( false == QFile::exists(resourcePath))
      {
         printf("*** Error - Resource path not found : \"%s\"\n",   resourcePath.toLatin1().data());
      }

}

Заранее благодарим за любые советы или предложения,

1 Ответ

11 голосов
/ 01 декабря 2010

Проблема в том, что в Linux вы не можете иметь файлы ресурсов Qt с одинаковым именем (* .qrc) как в вашей общей библиотеке, так и в приложении. В Windows это не проблема, но в Linux он загружает только один из файлов ресурсов с одинаковыми именами. Я назвал файлы ресурсов и в приложении, и в файлах общей библиотеки "resources.qrc". Я переименовал в «resourcesmylib.qrc» и «resourcesmyapp.qrc», и все было хорошо. Мне не нужно было добавлять вызов Q_INIT_RESOURCES в мою библиотеку или вызывать qInitResources_resources *.

Решение

  • Использовать уникальные имена файлов ресурсов Qt для ваша библиотека и приложение под Linux.

Кредит отправляется Джако Н. в список рассылки Qt-Interest. Спасибо, Джако!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...