Resource Compiler

Mit Hilfe des Resource Compilers (oder kurz RC), können Dateien direkt in die ausführbare Datei mit eingebunden werden. Dieser Mechanismus bietet den Vorteil, dass die eingebundene Datei bestimmt vorhanden ist und nicht etwa vom Benutzer gelöscht wurde. Ein typischer Anwendungsfall ist z.B. das Einbinden von Icons für die Anwendung.
Qt realisiert diese Funktionalität über eine *.qrc-Datei. Diese *.qrc-Datei gibt an, welche Dateien eingebunden werden und über welchem Pfad auf sie zugegriffen wird.

Einbindung von Dateien

Als Beispiel werden wir jetzt das proggen.org-Logo in ein Qt-Programm einbinden. Es kann aber jedes beliebige Bild verwendet werden (dessen Format von Qt unterstützt wird).

Qt Creator

Die praktischere Variante ist das Einbinden von Ressourcen über den Qt Creator. Genau wie z.B. eine neue Klasse angelegt wird, kann auch eine neue Ressourcen Datei hinzugefügt werden.

Da in einem Programm mehrere dieser Dateien verwendet werden können, muss ein eindeutiger Dateiname vergeben werden.

Ist dieser Punkt ebenfalls erledigt, wird man automatisch zur Ressourcen-Ansicht des Qt-Creators weitergeleitet.

Bevor jedoch Dateien angegeben werden können, muss zuerst mindestens 1 Präfix erstellt werden. Präfixe werden verwendet, um die eingebundenen Dateien zu organisieren. Sie kann ähnlich wie auf dem Dateisystem eine Hierarchie erstellt werden. Ein Präfix wird über die Buttons „Add“ - „Add Prefix“ angelegt. Danach kann im unteren Bereich noch der Name geändert werden, in unserem Beispiel verwenden wir den Namen „images“.

Nun können wir schlussendlich Dateien in unseren Kompiliervorgang einbinden. Wir wählen die Datei „proggen.png“ und als Alias „logo“. Ein Alias bezeichnet jenen Namen, unter dem auf die Datei zugegriffen wird.

Manuell (Konsole)

Natürlich können Ressourcen auch manuell über die Konsole hinzugefügt und verwaltet werden. Dazu wird wie beim Qt-Creator eine *.qrc-Datei erstellt, dessen Inhalt aber händisch bearbeitet werden muss. Diese Datei beinhaltet XML-Code in folgendem Format:

<RCC>
    <qresource prefix="/images">
        <file alias="logo">proggen.png</file>
    </qresource>
</RCC>

Aufgrund des obigen Beispiels mit dem Creator sollte der Syntax selbsterklärend sein. Schlussendlich muss die *.qrc-Datei noch in unserer Projekt-Datei angegeben werden:

RESOURCES += \
  data.qrc



Nun haben wir die Datei erfolgreich zu unserem Projekt hinzugefügt. Beim nächsten Kompiliervorgang wird die Datei eingebunden und ist in unserem Programm verfügbar.

Verwendung im Programm

Im Programm kann nun ganz normal über den Pfad der Datei auf sie zugegriffen werden. Der Pfad setzt sich folgendermaßen zusammen:

:/prefix/alias

Für unsere Datei haben wir vorhin das Präfix “/images/“ und den Alias „logo“ verwendet. Dadurch ergibt sich folgender Pfad:

:/images/logo

Um unser Bild anzuzeigen, kann folgendes kurze Programm verwendet werden, bei dem das Bild über HTML in einem Label angezeigt wird:

#include <QApplication>
#include <QLabel>
 
int main( int argc, char *argv[] )
{
  QApplication app( argc, argv );
  QLabel label;
 
  label.setText( "<img src=\":/images/logo\">" );
  label.show();
 
  return app.exec();
}