QPixmap aus Projektordner laden



  • Hi,
    wenn ich eine QPixmap lade, muss ich den Speicherort angeben.
    Zum Beispiel bei der QPixmap QP1:

    QP1->load("E:/C++/Qt/Bilder/Bild1.png");
    

    Das hat den Nachteil, dass das Projekt nicht "portabel" ist.
    Wenn ich es kopiere muss ich also jedes mal den neuen Speicherort angeben.
    Gibt es eine möglichkeit, dass dies automatisch erledigt wird?
    Also ich meine ohne händisches Laden über File Dialog.
    Man könnte sich zum Beispiel vorstellen, dass die Bilder im Projektordner liegen
    und Qt eine Möglichkeit bereitstellt, diese direkt zu laden.
    Zu beachten ist, dass nach dem Kopiervorgang die User Datei gelöscht wird
    und das Projekt neu konfiguriert wird.
    Das muss glaube ich immer so sein.



  • Du kannst auch einen relativen Pfad angeben.



  • Für so etwas gibt es das Qt Resource System.



  • @theAnfänger77 sagte in QPixmap aus Projektordner laden:

    Zu beachten ist, dass nach dem Kopiervorgang die User Datei gelöscht wird
    und das Projekt neu konfiguriert wird.
    Das muss glaube ich immer so sein.

    Bahnhof.



  • Bitte entschuldigt den unnötigen letzten Abschnitt 😅
    Das Beste ist hier wohl eine .qrc Datei zu erstellen.
    Die Lösung würde dann so aussehen:

    QP1->load(":/new/prefix1/Bild1.png");
    

    Wie man sieht habe ich jetzt in der .cpp Datei den absoluten Pfad durch den relativen ersetzt. Diesen kann man sich nach einem Rechtsklick auf die Datei Bild1.png direkt rauskopieren. Die Datei Bild1.png findet man im Baum unter "Ressourcen".



  • @theAnfänger77 sagte in QPixmap aus Projektordner laden:

    Wie man sieht habe ich jetzt in der .cpp Datei den absoluten Pfad durch den relativen ersetzt.

    Das war nicht gemeint. Das ist auch kein Pfad im Dateisystem.



  • @Swordfish. Das ist schon richtig so, s. den Link von @manni66...



  • @Th69

    By default, resources are accessible in the application under the same file name as they have in the source tree, with a 😕 prefix, or by a URL with a qrc scheme.

    Habe ich nicht gewusst. Streng genommen ist es trotzdem kein Pfad im Dateisystem. Und das meinte ich auch nicht mit meiner ersten Antwort.



  • Mir ist das schon klar, aber ein relativer Pfad bringt wenig, wenn nicht auch die Ressource-Datei mit ausgeliefert (d.h. mit kopiert) wird.



  • @Th69 Wir reden aneinander vorbei. Im OP war nicht die Rede davon daß es ein Problem ist zusätzliche Dateien mitzuliefern sondern es ging um die Angabe des Pfads. Dann war da noch irgendwas wirres von "Benutzerdateien löschen" und kopieren. Aber da @theAnfänger77 mit den Resources happy zu sein schein ist ja alles toll. 👍🏻

    Was anderes: Könntest Du vielleicht dazu (Frage ganz unten) noch etwas sagen?


Log in to reply