Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 22

Thema: Bilder mit Qt laden???

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59

    Question Bilder mit Qt laden???

    Wie kann ich Bilder in mein Qt-Programm laden?
    Also zum Beispiel eine bmp-, jpg- oder sonst eine andere Datei.

    Geht das mit einer bereits vorgefertigten Funktion, oder muss ich die Dateien dann selbstständig auslesen?

    Gruß,
    Miles

  2. #2
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hi,

    bitte stell deine frage etwas genauer. was hast du mit dem bild vor?

    gruss,


    tuxipuxi.

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Ich habe vor ein Bild aus einer externen Datei (*.bmp, *.jpg,...) zu laden und dann eben in einem Widget auszugeben (auf einem Label oder etwas anderem).

    Nur weiß ich keine Funktion dafür. Ich weiß nicht ob ich das mit QImage, QPixmap oder sonst wie machen muss. Oder ob ich eben alles mit einer eigenen Funktion selbst auslesen muss.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn du es nur darstellen willst, kannst du es gleich in ein QPixmap laden.

    Wenn du es bearneiten willst, zuerst in ein QImage.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Und wie lade ich eine Bild-Datei in ein QPixmap? Ich hab schon versucht es im Konstruktor als String anzugeben (so wie es in der Doku steht), aber es will nicht klappen. Muss ich da irgendetwas beachten? Die Bitmapgröße (256 mal 256 Pixel) passt so.

    Könnte es daran liegen, wie ich den String angebe, der sagt welche Datei geladen werden soll? Ich bin mir da nicht sicher unter Linux.

  6. #6
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hi,

    da musst du eigentlich nichts beachten, ausser das es ein absoluter pfad ist( sonst wuerde er nur im workdir gucken).

    edit:

    und der richtige datentyp, ich glaube es werden viele formate nicht unterstuetzt. (nicht sicher)
    Geändert von tuxipuxi (27-05-2003 um 18:52 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Ok. Soweit klappt das jetzt schon. Nur ein Problem gibt es noch:

    Wenn ich den Pfad ganz angebe (also mit dem Root-Directory etc.), dann passt alles. Aber wenn ich das Directory nur von der lokalen Position (also mit ./) angebe passiert immer irgend ein Blödsinn. Woran liegt das? Und wie kann ich es verhindern, dass mein Programm immer in einem festen Pfad sein muss, damit es funktioniert?

  8. #8
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    ich verstehe dein problem nicht ganz. warum kannst du nicht den kompletten pfad angeben?
    du koenntest mal versuchen den dateinamen im aktuellen verzeichnis mit z.b. ("datei.jpg") anzugeben.

  9. #9
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Im aktuellen Verzeichnis tut der Dateiname, ohne ./

    Du bist wahrscheinlich in die Typfalle gelaufen
    Ein char* wird als xpm data array interpretiert, wenn du explizit einen QString angibst, interpretiert er es als Filename.

    Im Zweifelsfalle die Methode load benutzen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  10. #10
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Nein, nein. Es liegt nicht daran. Ich hab es jetzt nochmal expliziet mit QString probiert. Es macht keinen Unterschied:

    Wenn ich bei load() bzw. dem Konstruktor das gesamte Verzeichnis angebe klappt alles wunderbar. Auch mit mehreren Instanzen des Programms. Aber wenn ich nur ein lokales Direktory angebe macht es Probleme. Als ob ich immer die gleiche Zwischenspeicher-Datei laden würde. Es wird nämlich dann immer mit der veränderten, alten Datei weitergearbeitet, anstatt dass sie neu geladen wird. - HE? ^^

  11. #11
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich kann dir nicht ganz folgen.

    Vielleicht kannst du ein kleines Beispiel posten.

    Wenn nötig als tgz oder so

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #12
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Ich packs echt nicht. Es FUNKTIONERT EINFACH nicht. Und ich weiß nicht wieso. Ich will einfach ein Bild laden. Es ist im gleichen Directory wie die Anwendung. Dann müsste ich doch
    Code:
    if(!pPixmap->load("test.jpg"))
      ...
    schreiben können. Kann ich aber nicht. Es funktioniert einfach nicht. Es gibt immer den Wert 'false' zurück.

    Aber wenn ich
    Code:
    if(!pPixmap->load("/my_data/programming/test3/test.jpg"))
      ...
    angebe (also das absolute Directory), dann funktioniert es anstandslos. Wieso???

    Ich hab auch schon ewig lange mit QDir herumprobiert. Aber mit dem funktioniert auch nichts.
    Wie kann ich einfach ein Bild aus meinem aktuellen Directory laden? Auch mit "./" klappt es nicht.

  13. #13
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    Hi,


    ich glaube du taeuschst dich einfach in deinem vermeintlichen workdir. liegt das bild im gleichen ordner wie die ausgefuehrte executable?

    und nochmal die frage, das stoert dich an abs. path.

    gruss,


    tuxipuxi.

  14. #14
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Achso. Jetzt versteh ichs. Wenn ich nur die Datei angebe sucht er bei mir nicht im gleichen Verzeichnis wie die exe. Aber wieso? Er geht dann immer nach "/root/". Ins "aktuelle" Verzeichnis.

    Aber was muss ich machen, wenn ich direkt in dem Direktory, in dem Die exe ist, die Datei laden will? Geht das?
    Ich hab z.B. die exec test im Directory "/my_data/programming/test3".
    Wie mache ich das? (ohne das Directory genau zu wissen, sodass das Programm von allen Directories aus funktioniert, vorausgesetzt die Dateien sind alle dabei)

  15. #15
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    es tut mir leid, aber ich habe wirklich keinen schimmer was du mir sagen moechtest. ich kann nur etwas in der art rausfinden, dass du als root arbeitest, das solltest du dringlichst unterlassen.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •