pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Alles rund um die Programmierung mit Qt
Antworten
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

Hallo zusammen

Ich verwende

Code: Alles auswählen

    QString fileName = QFileDialog::getOpenFileName(this, "Bildquelle wählen", QDir::currentPath(), "Images (*.jpg)");
    QPixmap pixmap(fileName);
    QIcon ButtonIcon(pixmap);
    ui->pushButton_5->setIcon(ButtonIcon);
um in Laufzeit des Bild eines Buttons zu ändern. Auf dem Rechner auf dem ich programmiere klappt alles prima. Installiere ich das Programm auf einen anderen Rechner, durchläuft das Programm zwar ohne Klagen die Routine, aber es wird kein Bild angezeigt. Gibt es hier Abhängigkeiten, die ich vielleicht nicht beachte?

Thomas
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Espresso »

Pures Raten: findet Qt seine qjpeg4.dll auf dem Rechner (oder welche Version der dll auch immer)
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

qjpeg.dll ist auf beiden Rechnern vorhanden.

Danke für den Tipp
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Christian81 »

Nur weil sie vorhanden ist heißt es nicht, dass es auch als Plugin geladen werden kann. Wie Espresso schon sagt - prüfen ob das Bild auch wirkluich geladen wird (siehe z.B. QPixmap::load() und QPixmap.isNull())
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

Kann das denn sein, dass die gleiche Datei, die jeweils im Programmverzeichnis liegt, auf verschiedenen rechnern mal geladen wird und mal nicht?

Faszinierend. Mit der gleichen exe auf verschiedenen Rechnern klappt es mal und mal nicht.

Da stehe ich jetzt echt auf dem Schlauch
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

Fehlt mir vielleicht auf dem Zielrechner irgend eine Bibliothek, die beim Kompilieren nicht angemeckert wird?
Espresso
Beiträge: 49
Registriert: 10. September 2009 13:55

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Espresso »

Baue doch mal einen Message-Dialog ein, ob das Bild geladen wird, wie Christian geschrieben hat.
Qt hat mich an solchen Stellen schon zur Verzweiflung gebracht, das war mit DB-DlLLs,
bei mir kam ich dann mit einer qt.conf weiter, die dem Programm sagt, wo die DLLs liegen.
Möglicherweise hat ja dein Entwicklungs-PC andere Pfade konfiguriert.
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

Code: Alles auswählen

void MainWindow::on_pushButton_7_clicked(){
    QString fileName = QFileDialog::getOpenFileName(this, "Bildquelle wählen", QDir::currentPath(), "Images (*.jpg)");
    QPixmap pixmap(fileName);
    if (!pixmap){
        meldung("Bild konnte nicht geladen werden!");
    }
    QIcon ButtonIcon(pixmap);
    ui->pushButton_5->setIcon(ButtonIcon);
}
Das ist mein aktueller code.
Auf dem Entwicklungsrechner keine Meldung und Bild lädt,
Auf der Zielmaschine Meldung und kein Bild.
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Tomaxx »

Ich hebe eine Lösung gefunden, obwohl sie nicht so ist wie ich gehofft habe.
Ich kann PNGs laden, aber keine JPGs

Weiss jemand, wie das kommen kann?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: pushButton->setIcon(ButtonIcon) geht nicht auf allen Rechnern

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten