Seite 1 von 1
[gelöst] Resourcen für Qt mit Visual Studio 2005
Verfasst: 9. Dezember 2008 21:28
von Kay
Hallo Leute,
Ich hab trotz intensiver Foren- und Google-Suche folgendes Problem:
Ich würde gerne ein paar .png-Icons für meine Toolbar in meinem Programm verwenden. Dazu hab ich wie im Forum auch beschrieben die entsprechende .qrc- Datei mit dem Designer erzeugt, dann diese Datei als Resource ins VS-Projekt eingebunden und einen Custom-Build-Schritt hinzugefügt, der den rcc ausführt und mir eine .cpp-Datei daraus generiert. Diese Datei sieht zumindest richtig aus, den Kommentaren nach zu urteilen. Die .cpp-Datei kann ich auch kompilieren, aber wenn ich auf die Resourcen zugreifen will (mittels bspw. QIcon(":/images/editcopy.png")) dann wird im Programm das Icon aber nicht angezeigt.
Kann es sein, dass der Linker die .obj-Datei nicht mit in mein Projekt linkt, oder was fehlt noch?
Die .cpp-Datei der Resourcen habe ich dem Projekt ja als "Source Files" hinzugefügt.
Übrigens muss der Fehler mit dem Resourcen-System zusammenhängen, denn eine relative Pfadangabe direkt zu den Icons ("images/editcopy.png") funktioniert und die Icons werden angezeigt. Wollte aber gerne das Resourcen-System nutzen, wenn es schon mal da ist.
Hoffe jemand hat ne Idee, wie ich meine Icons über das Resourcen-System richtig mit VS in mein Programm kriege.
Vielen Dank im Voraus,
Kay
Verfasst: 9. Dezember 2008 23:06
von Christian81
Das hatten/haben wir gerade erst im ähnlichen Fall:
http://qtforum.de/forum/viewtopic.php?t=8016
Wenn Du nicht sicher bist ob die buildsteps korrekt sind nimm qmake.
Verfasst: 10. Dezember 2008 14:37
von Kay
Hi,
Den verlinkten Beitrag habe ich auch schon gefunden. Und auch einen anderen, in dem die Buildregeln beschrieben waren. Die Buildregeln dürften ja auch stimmen. Der rcc generiert ja meine cpp-Datei. Die Frage ist nur, was ich damit mache, dass sie richtig in mein Projekt eingebunden und später mit gelinkt wird. Einfach includen geht ja nur bei Header-Dateien.
Und aus einer .pro File eine vcproj - Datei zu generieren halte ich persönlich für einen Weg, der an meinem Ziel vorbei führt. Schließlich nutze ich ja VS um mich nicht mit Konfigurationsdateien kümmern zu müssen. Oder hab ich dich jetzt falsch verstanden?
Grüße,
Kay
Verfasst: 10. Dezember 2008 15:23
von macman
Kay hat geschrieben:Und aus einer .pro File eine vcproj - Datei zu generieren halte ich persönlich für einen Weg, der an meinem Ziel vorbei führt.
Du machst das einmal, nämlich dann wenn Du noch keine vcproj hast. Danach hast Du eine vcproj mit allen Buildschritten usw. und kannst von da an alles mit VS machen.
Verfasst: 11. Dezember 2008 15:44
von Volker
Kay hat geschrieben:
Der rcc generiert ja meine cpp-Datei. Die Frage ist nur, was ich damit mache, dass sie richtig in mein Projekt eingebunden und später mit gelinkt wird. Einfach includen geht ja nur bei Header-Dateien.
Einfach dem Projekt hinzufügen reicht vollkommen. Dann wird die CPP Datei automatisch zur Anwendung gelinkt. Include funktioniert übrigens auch mit CPP Dateien.
Verfasst: 11. Dezember 2008 20:21
von Kay
Hi,
Die erstellte cpp-Datei ist auch mit ins Projekt eingebunden. Aber irgendwie wird das Icon trotzdem nicht angezeigt. Stelle mich wohl zu dusselig an.
Auch meine Versuche, mit qmake ein VS-Projekt zu erstellen, dass dann die Anwendung kompiliert sind immer ohne Icons ausgegangen. Hab mittlerweile keine Ideen weiter, außer die Einbindung über direkten Dateipfad.
Wenn das bei anderen mit der Erstellung eines VS-Projektes über qmake funktioniert, könnte man ja mal schauen, wie die Projekteinstellungen sind, so dass man die auch bei normalen VS-Projekten mit berücksichtigen kann.
Übrigens hab ich das Projekt mit dem VsQtAddIn erstellt. Vielleicht hilft das noch weiter. Ansonsten weiß ich echt nichts mehr...
Danke schonmal für weitere Anregungen,
Grüße,
Kay[/quote]
Verfasst: 11. Dezember 2008 20:36
von Volker
In der von RCC erstellten CPP Datei sollte ein
qt_resource_struct existieren. Dort stehen normal dann auch die korrekten Pfadangaben als Kommentar also z.B.
:/Icons/Resources/logo.png. Wenn ich dann per
Code: Alles auswählen
QIcon(QString::fromUtf8(":/Icons/Resources/logo.png"));
drauf zugreife bekomme ich bei mir ohne Probleme das Bild. Kannst auch mal testen, ob isNull auf dem Icon wirklich true zurückliefert oder ob es evtl. an deinem Code liegt das Icon zu verwenden. Groß- und Kleinschreibung der Pfadangabe dürfte übrigens auch wichtig sein.
Verfasst: 11. Dezember 2008 21:27
von Kay
Hi Volker,
Also ich hab das Icon so wie in deinem Beispiel erstellt. Hab mir dann mal das Ergebnis von isNull() ausgeben lassen und das ist False (bzw. 0). Also müsste das soweit zumindest geklappt haben...
Bei mir gibt es auch einen [i]qt_resource_struct[/i] . In den Kommentaren zu den Pfaden steht aber nach dem Doppelpunkt immer noch der "Ordnername" (dieser Ordner existiert nicht wirklich) [i]newPrefix[/i]. Wenn ich diesen Pfad noch vor den [i]images[/i] - Ordner hinzufüge, wird das Icon angezeigt.
Ein Blick in den Designer, mit dessen Resourcen-Editor ich die qrc-Datei erstellt habe zeigt auch warum. Da steht nämlich extra der Präfix [i]newPrefix[/i] drin. Warum wüsst ich auch gern. Wieder was gelernt. Jetzt funktionierts auf jeden Fall über das Resourcen-System. Danke für den Hinweis auf die Kommentare. Habe die irgendwie nicht für voll genommen.
Danke nochmal,
Grüße,
Kay