Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 22 von 22

Thema: Bilder mit Qt laden???

  1. #16
    Registrierter Benutzer
    Registriert seit
    17.05.2003
    Beiträge
    59
    Oh man.
    Ok. Ich versuche es so gut zu erklären, wie es mir möglich ist. Also. Nehmen wir an, ich schreibe ein Programm. Wenn es dann fertig ist will ich, dass auch andere Leute mein Programm benutzen können. Dazu stelle ich es auf irgendeiner Seite zum Download bereit.

    Jetzt stellen wir uns weiter vor, WIR sind so ein Benutzer, der unbedingt mein Programm testen will. Wir laden und das Programm herunter und packen das ganze Programm in irgendein Directory, welches wir uns SELBST aussuchen wollen. Wir laden also die Executable in IRGENDEIN Directory. Jetzt ist bei dem Programm aber noch eine JPG-DATEI. Wie sollte aber das Programm wissen, wo die JPG-Datei ist? Wenn ich im Programm den GANZEN PFAD angegeben hab, dann muss das doch spätestens jetzt wo es ein anderer benutzt, nicht mehr das gleiche Directory sein, oder? (Ich hoffe, es war bis jetzt verständlich.)

    Mein Programm (die Executable) muss also wissen, wo die JPG-Datei ist. Also wäre es doch am praktischsten, wenn das Programm wüsste, wo SEINE EIGENE EXECUTABLE ist, also in welchem DIRECTORY sie gestartet wurde. Dann müsste ich einfach dieses Directory + Name der JPG-Datei angeben. Und alle wären glücklich.

    Biiiitte, war das verständlich, was ich brauche? ^__^"""""" Damit ist gewährleistet, dass MEIN PROGRAMM in JEDEM BELIEBIGEN DIRECTORY ausführbar ist (vorausgestetzt die JPGs sind dabei).

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

    ich wuerde es ja immer noch mit load( "name.jpg" ) machen, aber das geht ja wohl net.

    gibt eine andere einfache loesung: getenv(). damit kannst du dir umgebungsvariablen holen.

    dein beispiel:
    Code:
    QString workDir = getenv( "PWD" );
    dann halt load( workDir+"name.jpg" ).

    gruss,

    tuxipuxi.

  3. #18
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich hab schon ziemlichweit vorne geschrieben, dass für Dateien im aktuellen Pfad der Dateiname reicht.

    Das ist schliesslich der Referenzpunkt für das Programm.
    Ist so auf allen Betriebsystem die ich kenne.

    Wenn deine Bilder zB Icons sind und damit kleine statische Daten, kannst du sie als xpm direkt ins Programm kompilieren.

    In einer KDE Anwendung wäre dir der Ort der Datei völlig egal, da du sie ohnehin immer über KStandardDirs bzw. der Funktion locate findest.

    Einer der Vorteile, wenn man für eine Plattform programmiert

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #19
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von tuxipuxi

    Code:
    QString workDir = getenv( "PWD" );
    QDir::current?
    QDir::currentDirPath?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #20
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Original geschrieben von anda_skoa


    Wenn deine Bilder zB Icons sind und damit kleine statische Daten, kannst du sie als xpm direkt ins Programm kompilieren.


    _

    Hallo Anda_Soka

    genau das würde ich auch gerne machen, hast Du einen Tipp für mich wie?

    im moment sieht es so aus
    in der headerdatei:
    Code:
    //image includes
    #include "auto_icon.xpm"
    #include "chapter.xpm"
    #include "movie.xpm"
    #include "select.xpm"
    #include "still.xpm"
    und in der cpp Datei
    Code:
     //load the icons
    QPixmap * still_icon = new QPixmap( *still_xpm );
    QPixmap * movie_icon = new QPixmap( *movie_xpm );
    QPixmap * chapter_icon = new QPixmap( *chapter_xpm );
    QPixmap * select_icon = new QPixmap( *chapter_xpm );
    wenn ich das Icon aber dann in eine Combobox einfügen will

    cbb_timeout->insertItem( select_icon, myChild->text(0) , -1 );

    bekomme ich folgende Fehlermeldung

    vcdkompanion.cpp:218: error: no matching function for call to `QComboBox::
    insertItem(QPixmap*&, QString, int)'
    /usr/lib/qt3/include/qcombobox.h:83: error: candidates are: void
    QComboBox::insertItem(const QString&, int = -1)
    /usr/lib/qt3/include/qcombobox.h:84: error: void
    QComboBox::insertItem(const QPixmap&, int = -1)
    /usr/lib/qt3/include/qcombobox.h:85: error: void
    QComboBox::insertItem(const QPixmap&, const QString&, int = -1)

    Was muss ich anders machen?

    Vielen Dank
    Celindir
    May the source be with you...

    www.celindir.de

  6. #21
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Hallo zusammen,

    ich hab inzwischen eine andere Lösung gefunden.

    ich habe ein Icon als png vorliegen.
    Das konvertiere ich nun mit

    Code:
    convert icon.png icon.xpm
    in ein xpm. Das öffne ich mit einem Editor und kopiere den Quelltext in mein Programm und füge bei static char *icon[] noch ein const ein
    Code:
     static const char *icon[] = {
    /* columns rows colors chars-per-pixel */
    "14 14 3 1",
    "  c black",
    ". c red",
    "X c gray100",
    /* pixels */
    "              ",
    " XX XXXXXX XX ",
    "    XXXXXX    ",
    "    .....X    ",
    " XX .....X XX ",
    " XX ..XXXX XX ",
    "    ..XXXX    ",
    "    ..XXXX    ",
    " XX ..XXXX XX ",
    " XX ..XXXX XX ",
    "    .....X    ",
    "    .....X    ",
    " XX XXXXXX XX ",
    "              "
    };
    nun kann ich das Icon mit
    Code:
    QPixmap chapter_icon(icon);
    in meinem Programm verwenden und brauche das Original als Datei gar nicht mehr.

    Klappt bei mir prima und ich muss mir keine Gedanken mehr machen, wo ich die Icons hinspeichern/installieren soll
    Celindir
    May the source be with you...

    www.celindir.de

  7. #22
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    genau das selbe geht mit include auch.
    Dein Compilerfehler war eine Typunstimmitgkeit, weil du einen QPixmap Poinetr übergeben hast.

    Das #include macht ja nix anderes, als die angegeben Datei dort einzufügen.

    Der Rest des Codes muss so sein, wie du ihn jetzt hast.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

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