Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Denjs от Май 14, 2011, 15:45



Название: ресурсы из динамической библиотеки?
Отправлено: Denjs от Май 14, 2011, 15:45
как бы мне сделать так, что бы объект который сгенерирован в недрах динамически подключаемой библиотеки, мог использовать ресурсы, которые были подключены к проекту при сборке этой самой библиотеки?

а то всякие "new QIcon(":mysynonym")"  не проходят... что вызывает у меня немного печали и огорчение.

подозреваю, что объект будучи переданным в приложение начинает пытаться использовать ресурсы к немцу подключенные? и не находит оных естественно...

ну или подскажите технологию как можно подключать к приложению ресурсы из внешней библиотеки? что бы можно было подключая разные библиотеки получать на вуходе того самого "new QIcon(":mysynonym"); " азные иконки - которые к этой библиотеке подключены?

пользую Qt 4.7.2 если это важно...
библиотека на Qt писанная, загружающая программа - тоже.


Название: Re: ресурсы из динамической библиотеки?
Отправлено: asvil от Май 14, 2011, 18:31
Q_INIT_RESOURCE() ?


Название: Re: ресурсы из динамической библиотеки?
Отправлено: Denjs от Май 14, 2011, 19:17
в ассистанте написано что он может помочь для ресурсов из статических библиотек.
кроме того, это я уже проверял...  :-\


Название: Re: ресурсы из динамической библиотеки?
Отправлено: ieroglif от Май 14, 2011, 21:27
а если хранить в либах пути ресурсов (типа ":myres"), а из либы вытаскивать по именам их QByteArray?
QImage QIcon и прочие легко берут данные из байтов


Название: Re: ресурсы из динамической библиотеки?
Отправлено: Denjs от Май 16, 2011, 06:15
а если хранить в либах пути ресурсов (типа ":myres"), а из либы вытаскивать по именам их QByteArray?
QImage QIcon и прочие легко берут данные из байтов
да вроде как и КюРесурсес не проблема инициировать по ссылке на кусок бинарника...
Вопрос тогда в том, как "вкомпилить" ресурсы в библиотеку а потом в самой библиотеке - получить ссылку на кусок "вкомпиленных" бинарных данных.

Потому что кажется даже в библиотеке (в функциях в ней определённых) не выходит по синониму или пути обращаться к ресурсам... но это я ещё ещё перепроверю... может у меня не работает это внутри объекта а в непосредственно самой функции - будет работать... >_<

можно конечно скомпилить ресурс в .rcc и потом его динамически подключать... но не хочу таскать 2 файла (библиотечка и файл ресурсов).


Название: Re: ресурсы из динамической библиотеки?
Отправлено: GreatSnake от Май 16, 2011, 09:32
Вот смотри как сами тролли это делают для хранения своего лого:

qmessagebox.qrc:
Код
XML
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/trolltech/qmessagebox">
  <file>images/qtlogo-64.png</file>
</qresource>
</RCC>
 

Код
C++ (Qt)
static void initResources()
{
...
Q_INIT_RESOURCE_EXTERN(qmessagebox)
Q_INIT_RESOURCE(qmessagebox);
...
}

Код
C++ (Qt)
void QMessageBox::aboutQt(QWidget *parent, const QString &title)
{
...
QPixmap pm(QLatin1String(":/trolltech/qmessagebox/images/qtlogo-64.png"));
...
}


Название: Re: ресурсы из динамической библиотеки?
Отправлено: danquimby от Май 17, 2011, 10:02
вопрос на засыпку , а где они это путь берут ?
Код:
QPixmap pm(QLatin1String(":/trolltech/qmessagebox/images/qtlogo-64.png"));


Название: Re: ресурсы из динамической библиотеки?
Отправлено: GreatSnake от Май 17, 2011, 10:05
вопрос на засыпку , а где они это путь берут ?
Код:
QPixmap pm(QLatin1String(":/trolltech/qmessagebox/images/qtlogo-64.png"));
Странный вопрос.
Это же путь относительно корня ресурсов. Они его сами и создают в qmessagebox.qrc.