KDevelop, in ausführbare Datei eigene Grafiken integrieren
-
Hi,
habe ein kleines Programm mit KDevelop erstellt, erstmals habe ich dabei eigene Grafiken die im Programmverzeichnis liegen verwendet. Wenn ich das Programm in KDevelop ausführen lasse, werden die Grafiken auch korrekt angezeigt. Wenn ich aber ohne KDevelop die ausführbare Datei des Projekts (die mit dem Zahnrad) ausführe, so fehlen meine Grafiken. Der Pfad dieser ist im Projekt schon richtig angegeben.
Ich will auch gar nicht mit makefile oder so eine Installationsdatei erstellen. Ich möchte einfach nur eine einzelne ausführbare Datei haben, in der auch meine Bilder angezeigt werden.
Ich denke mal das die Antwort für jemand Erfahrenen hier ziemlich einfach ist. Wie müsste ich vorgehen. Danke schon mal.
-
Programmierst du in Qt?
Dann musst du hier nachlesen:
http://doc.trolltech.com/4.2/resources.html
-
In diesem Falle ist es ein reines KDevelop Projekt, wo lediglich Qt Bibliotheken benutzt werden.
Ich habe aber rausgefunden, dass ich per Konsole und ./meinestartDatei das Programm auch mit meinen Grafiken zum Laufen bekomme.
-
Hallo,
gibt es dafür schon eine Lösung. Ich habe ien kleines Programm ohne KDevelop geschrieben (daran liegts also nicht) und verwende QLabel und QImage um eine grafik anzuzeigen. Der pfadname ist natürlich relativ, und wnen cih das programm über die konsole starte funktionierts, wenn ich im konqueror einfach druafklicke aber nicht. mit nem absoluten pfad gehen beide methoden.
weiß jemand was konqueror dem programm für ein arbeitsverzeichnis mitgibt, oder woran es sonst liegt?
EDIT: Achja, ich habe QT 4.2.2
-
CGI-BIN schrieb:
weiß jemand was konqueror dem programm für ein arbeitsverzeichnis mitgibt, oder woran es sonst liegt?
Leider weiß ich grad nicht welches Verzeichnis Konqueror als Arbeitsverzeichnis mitgibt. Dass es nicht das ist, in welchem dein binary liegt, dagegen schon
Und auch dass das der Grund für das Fehlen der Grafiken ist.
Der Link zur Lösung wurde schon gepostet: Stichwort Resources(*).
Meines Wissens nach bringt Windows selbst ein System zum Einbinden von Resourcen mit, unter Linux fehlt dagegen ein einheitliches System. Deshalb bringt Qt eine eigene Lösung mit.Grüße
Franz(*) Mit Resourcen kannst du z.B. Bilder in dein Binary mit einkompilieren. Somit brauchen sie nicht mehr auf der Festplatte abgelegt werden.
Nachteil: Dein Binary wird größer.
-
Leider kommt das direkte einkompilieren für mich nicht in Frage, da ich immer wieder andere Grafiken einbinden möchte, und die auch im Betrieb gewechselt werden sollen.
Vielleicht findet sich ja noch jemand der weiß, warum der Konqueror das so macht, und wie man ihm das abgewöhnt.
-
CGI-BIN schrieb:
Leider kommt das direkte einkompilieren für mich nicht in Frage, da ich immer wieder andere Grafiken einbinden möchte, und die auch im Betrieb gewechselt werden sollen.
Vielleicht findet sich ja noch jemand der weiß, warum der Konqueror das so macht, und wie man ihm das abgewöhnt.Du kannst dir dein Arbeitsverzeichnis anzeigen lassen:
char *getcwd(char *buf, size_t size);
-
Vielen Dank,
das hat mir sehr geholfen, jetzt weiß ich schonmal genau woran es liegt. Das Arbeitsverzeichniss, dass Konqueror setzt, ist mein Homeverzeichnis.
jetzt ist die Frage nur noch, warum ist das so, und wie kann ich das abstellen.
-
Du erbst das aktuelle Verzeichnis vom Konqueror. Und dieser hat den vom System bekommen.
Du solltest dein Programm so stricken, dass es egal ist, wie man es aufruft.
-
Zum Beispiel mit
QDir::homePath ();
Das geht dann auch unter Windows und MacOS..
-
vielen dank, aber in der qdir doku habe ich leider nichts fidnen können was mir den pfad zu meinem executable gibt.
Ich stelle mir halt vor, dass man das programm mitsamt der bilder und ja auch configdateien einfach aus einem tar entpackt und starten kann. ohne das man spezielle ordner im homeverzeichnis anlegt.
aber wenn das nicht geht, werden mir eure tipps sehr helfen den richtigen homeordner zu finden für mein dateienverzeichnis.
-
Mir fiel gerade das noch ein
http://doc.trolltech.com/4.2/qcoreapplication.html#applicationDirPath
Ist wahrscheinlich genau das was du suchst.
-
super, danke. ist doch eines der besten foren
werde heute abend mal testen, ob die beschriebene unix-warnung zutrifft oder alles funktioniert. wer weiß, was konqueror da wieder macht, aber ich denke den programmstart kriegt er ordnungsgemäß hin.
MfG
-
für alle die's noch interessiert, ich hab hier quasi die gleiche lösung aber in kompakter Form gefunden:
http://wiki.qtcentre.org/index.php?title=Current_Working_Directory