Qt: Probleme mit dem Anzeigen von Bildern mit Hilfe von QPixmap



  • Hi @ all,
    kann mir jemand erklären warum folgendes nicht funktioniert?
    Wenn es geht so leicht wie möglich, bin nämlich noch Qt-Anfänger.

    #include <qapplication.h>
    #include <qwidget.h>
    #include <qpushbutton.h>
    #include <qpixmap.h>
    
    int main(int argc, char* argv[])
    {
        QApplication myapp(argc, argv);
    
        QWidget *mywidget = new QWidget();
        mywidget->setGeometry( 0, 0, 200, 200);
    
        QPushButton *button = new QPushButton("", mywidget);
        button->setGeometry(10, 10, 180, 180);
    
        QPixmap bild = QPixmap("bild.gif");
    
        button->setPixmap(bild);
    
        myapp.setMainWidget(mywidget);
        mywidget->show();
        return myapp.exec();
    }
    

    Tschau Gartenzwerg



  • Tschau Gartenzwerg,

    was "funktioniert" denn daran nicht?



  • hi,
    ziemlich dumm von mir, hab einfach vergessen das Problem anzugeben.
    Also, der Code ist in Ordnung, d.h. es lässt sich compilieren. Doch
    wenn ich das Programm starte, dann wird auf dem Button kein Bild
    angezeigt. (Das Bild befindet sich natürlich im selben Verzeichnis wie das Programmm.)
    Woran liegt das?

    #include <qapplication.h>
    #include <qwidget.h>
    #include <qpushbutton.h>
    #include <qpixmap.h>
    
    int main(int argc, char* argv[])
    {
        QApplication myapp(argc, argv);
    
        QWidget *mywidget = new QWidget();
        mywidget->setGeometry( 0, 0, 200, 200);
    
        QPushButton *button = new QPushButton("", mywidget);
        button->setGeometry(10, 10, 180, 180);
    
        ///////////////////////////////////
        // hier könnte das Problem sein
        QPixmap bild = QPixmap("bild.gif");
        // oder hier
        button->setPixmap(bild);
        ///////////////////////////////////
    
        myapp.setMainWidget(mywidget);
        mywidget->show();
        return myapp.exec();
    }
    

    Tschau Gartenzwerg

    [ Dieser Beitrag wurde am 17.11.2002 um 17:27 Uhr von Gartenzwerg editiert. ]



  • weiß es denn niemand?

    Tschau Gartenzwerg



  • vielleicht kann das bild einfach nicht geladen werden? falscher pfad?



  • Vielleicht liegts auch einfach daran, dass GIF Bilder von Qt (standardmäßig) nicht unterstützt werden?

    Wandel das Bild einfach mal in ein PNG pder JPG Bild um, und lade es dann mittels QPixmap bild("pix.png")



  • Hi,
    also am Format lag es nicht, denn ich habe das Bild in jpg, jpeg, bmp und png
    umgwandelt und es funktioniert trotzdem nicht.
    Vielleicht liegt es am Pfad, doch das Bild befindet sich im selben Verzeichnis
    wie das Programm (auch wenn ich den vollständigen Pfad angebe funktioniert es nicht).
    Hier erstmal der neue Code:

    #include <qapplication.h>
    #include <qwidget.h>
    #include <qpushbutton.h>
    #include <qpixmap.h>
    
    int main(int argc, char* argv[])
    {
        QApplication myapp(argc, argv);
    
        QWidget *mywidget = new QWidget();
        mywidget->setGeometry( 0, 0, 200, 200);
    
        QPushButton *button = new QPushButton("", mywidget);
        button->setGeometry(10, 10, 180, 180);
    
        ///////////////////////////////////
        // hier könnte das Problem sein
        QPixmap bild("bild.png");
        // oder hier
        button->setPixmap(bild);
        ///////////////////////////////////
    
        myapp.setMainWidget(mywidget);
        mywidget->show();
        return myapp.exec();
    }
    

    Ich hoffe ihr könnt mir helfen, denn ich weiß echt keinen Rat mehr.
    Um Qt zu erlernen, habe ich mir das "Qt - Buch" von Helmut Herold gekauft (
    [url] http://www.suse.de/de/private/products/books/experts/3_934678_76_9/index.html [/url]).
    Doch auch wenn ich dort das Beispielprogramm von CD ausführe, werden keine Bilder angezeigt. Woran kann das liegen?

    Tschau Gartenzwerg

    [ Dieser Beitrag wurde am 24.11.2002 um 10:44 Uhr von Gartenzwerg editiert. ]



  • Hi,
    durch Zufall habe ich bemerkt, dass er das Bild anzeigt (egal ob mit relativen
    oder vollständigem Pfad im Konstruktor von QPixmap), wenn ich in
    der Konsole aus mit "cd" in das entsprechende Verzeichnis wechsle und dann
    das Programm mit "./buttonbild" starte. Wie kann ich es hinbekommen, dass er
    das Bild auch anzeigt, wenn ich das Programm über das Icon im Konquer starte?

    Tschau Gartenzwerg



  • hi,
    also ich habe jetzt eine Möglichkeit mithilfe der Qt-Referenz gefunden, doch
    ich hätte lieber eine bei der ich den Pfad nicht vollständig im Quelltext
    angeben muss:

    QString pfad;
        pfad = QDir::currentDirPath();
        pfad += "/Documents/Programme/ButtonBild"; //diesen Pfad muss ich ja nun leider immer kennen
        QDir::setCurrent(pfad);
    

    Wäre schön wenn ihr eine Möglichkeit dafür kennt.

    Tschau Gartenzwerg



  • hi,
    unter windows funktioniert das ganze nicht. Wieso?
    Ich habe den Pfad im Quelltext richtig gesetzt und die Textdatei, die das
    Programm bearbeiten soll wird auch im richtigen Verzeichnis erstellt, nur
    die Bilder kann er aus diesem Verzeichnis nicht starten. Wieso nicht?
    Auch wenn ich das Programm aus der DOS-Eingabeaufforderung starte, werden
    keine Bilder angezeigt.

    Ich hoffe ihr könnt mir helfen.

    Tschau Gartenzwerg



  • hi,
    nun ist alles klar.
    Bei Linux hat es nicht funktioniert (wenn man aufs Icon im Konquer geklickt hat), weil das Arbeitsverzeichnis nicht gesetzt war ( außer man hat es aus der Konsole gestartet). Nach dem ich herausgefunden habe wie man das Problem lösen könnte, wollte ich es auch unter WINDOWS probieren, doch auch da hat es nicht funktioniert. Der Grund des Fehlers war das ich die nicht kommerzielle Version von QT für WINDOWS habe, deshalb konnten die jpg - Bilder nicht geladen werden,
    sondern nur png - Bilder.

    Tschau Gartenzwerg.


Anmelden zum Antworten