Seite 1 von 2

Anwendung funktioniert nicht auf anderen Rechnern..

Verfasst: 9. September 2006 16:04
von Neo120484
Hallo zusammen ich habe zur zeit ein kleines Problem wo ich leider nicht weiß wie ich es lösen könnte..


ich hab eine art imageviewer geschrieben der mir bilder anzeigt welche sich in einem frei wählbaren verzeichniss befinden das funktioniert auch auf dem PC auf welchem ich das Programm geschrieben und kompeliert habe wunderbar jedoch wenn ich es auf einen Rechner drauf mache auf dem kein Qt installiert ist geht es nicht..


Erst hab ich Fehler wegen fehlenden dll's bekommen welche aber leich durch das kopieren der fehlenden dll's in Windows/system32 behoben war. so jetzt strartet das programm zwar, jedoch wenn ich auf öffnen gehe um das verzeichhniss auszuwählen und auf ok klicke werden mir keine Bilder mehr angezeigt obwohl diese im Verzeichniss sind.


Hab auch schon mit "depends" geschaut welche dll's noch benutzt werden und diese ersetzt (sofern das ging) aber bringt nichts .. der rest funktioniert so wie ich das sehe einwandfrei nur die bilder werden nicht mehr angezeigt..

hat jemand eine ahnung

Verfasst: 9. September 2006 16:08
von caligano
Hm, also ein paar Informationen fehlen schon noch...

z.B :
Software entwickelt auf Windows / Linux / etc.
Qt-Version ... usw !
Sonst kann man da nicht viel helfen...
Hast du irgendwelche Pfade fest in die Datei eingebaut? oder sind sonst Rechner-spezifische Aussagen im Code getroffen worden?

Verfasst: 9. September 2006 16:26
von Neo120484
oh das ging ja schnell und hier noch die fehlenden infos..
nutze Qt4.0.0 unter Windows installation über standart exefile..
Als Umgebung nutzte ich Codeblocks mit dem Gcc


feste Pfade hab ich eigentlich nicht eingebaut nur bei den icons da funktionierst aber..


das Verzeichniss für die Bilder ermittle ich dynamisch in dem ich mit

Code: Alles auswählen

directory = QFileDialog::getExistingDirectory(this,
                                   tr("Find Files"),directory);


das aktuelle Verzeichniss feststelle.
Anschließend durchsuche ich das verzeichniss nach jpg bildern und schreibe die namen der gefundenen Bilder in eine QStringList zum öffnen hänge ich die beiden nur noch zusammen und öffne das bild

Code: Alles auswählen

        QString bild = directory + "/" + files[0];
        QImage picture(bild);

        bsize = picture.size();

        picLabel->setPixmap(QPixmap::fromImage(picture));
        picLabel->adjustSize();

so hoffe nun kann mir jemand weiterhelfen *G*
und danke schon mal..

Verfasst: 10. September 2006 11:25
von Neo120484
Also hab nochmals bischen rumprobiert und es scheint ein problem mit dem QPixmap zu sein die auf andern rechner nicht angezeigt werden...

das QLabel wird angezeigt und setText geht auch aber das setPixmap scheint auf meinem andern Rechner nicht zu gehen..



Was auch noch sehr sehr komisch ist :
Also ich noch Qt auf meinem andern Rechner hatte ging es auf diesem auch dann hab ich Qt deinstalliert und es ging nicht mehr.

So jetzt dachte ich mir ich mach genau das gleiche Qt wieder drauf aber jetzt geht es auch mit Qt nicht mehr .

hat keiner eine idee ?





Nachtrag: ich hab jetzt denk ich rausgefunden warum es nicht geht jedoch weiß ich keine Lösung:

Folgender Code liefert mir auf dem Pc wo die Bilder nicht geladen werden können einen "Fehler" daraus schließe ich jetzt mal das das QPixmap nicht geladen werden kann jemand eine idee warum es auf einem pc geht und warum auf einem andern nicht..

Code: Alles auswählen

MainWindow::MainWindow()
{

    QWidget *widget = new QWidget;
    setCentralWidget(widget);

    picLabel = new QLabel(widget);
    picLabel->setBackgroundRole(QPalette::Background);
    picLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    picLabel->setScaledContents(true);


    QPixmap nm;
    if(!nm.load("C:\\1.jpg"))
    {
        Error err("Fehler");
        err.exec();
    }

    picLabel->setPixmap(nm);
    picLabel->adjustSize();

    widget->setGeometry(0,0,512,393);


    setWindowTitle(tr("Test"));
    resize(512, 393);


}

ach ja : ich habe auch noch "C:\1.jpg" statt "C:\\1.jpg" ausprobiert..
hilft nix.

Verfasst: 10. September 2006 14:27
von Neo120484
Ich weiß nich wieso aber aus irgend einem Grund ist auf dem PC auf dem es nicht geht .. das laden von .jpg nicht möglich .png dateien gehen..


Das gleiche gilt übrigens für den imageviewer bei den QT examples der kann die jpgs auch nicht öffnen komisch das das aber gleich auf 3 Rechnern der fall ist ..

also 1. Rechner funktioniert (Desktop)
2. kann keine .jpg öffnen (Laptop)
3. kann keine .jpg öffnen (Desktop2)
4. kann keine .jpg öffnen (Laptop eines Freundes)

ich versteh die welt nicht mehr

Verfasst: 10. September 2006 15:20
von FlorianBecker
Du hast das jpeg Plugin von Qt nicht mit auf die anderen Systeme kopiert.

Verfasst: 10. September 2006 15:41
von Neo120484
aha das ist das erste mal das ich hör das es sowas gibt *G*

wie kann ich das mit auf die anderen systeme kopieren/portieren

Verfasst: 10. September 2006 16:05
von FlorianBecker
einfach die Datei unter $QTDIR$/plugins/imageformsts/*jpeg* in plugins/imageformats/* dorthin legen, wo du auf den anderen Systemen die Qt Lib hast.

Hast du das statisch gebaut? Dann geht es eh nicht, dann mußt du die jpeg ebenfalls statisch gegen deine Anwendung linken. Und das geht nicht automatisch.

Verfasst: 10. September 2006 16:15
von Neo120484
nein ich hab das dynamisch angelegt..

aber mal ne frage geht das auch ohne das ich Qt auf dem anderen System installiere..


Nachtrag: Ich seh gerade das es dazu schon einige Threads gibt muß also hier nicht nochmal diskutiert werden


Danke

gruß

Verfasst: 12. September 2006 01:52
von heikob
Hallo,

ich hatte ein ähnliches Problem wie du. Aus diesem Grund ziehe ich jetzt die Veröffentlichung eines Programms von mir vor, dass genau diese Probleme löst. ;-)
Hierbei handelt es sich um eine "Diashow", die direkt von CD oder der Festplatte lauffähig ist (im Moment noch nur unter Windows) und die enthaltenen Bilder aus der Verzeichnisstruktur einliest.

Um dir meine Vorgehensweise zu verdeutlichen, habe ich dir mal zwei Versionen des Programms auf meinen Webspace gestellt:
http://www.berberich-is.de/siv.zip (Ausführbare Version ohne Bilder)
http://www.berberich-is.de/siv-src.zip (Quelldateien)
Falls diese Links irgendwann ins Leere führen, dann bitte ich direkt unter http://www.berberich-is.de nachzusehen, da hier demnächst noch eine Webpräsenz entsteht!

Vielleicht kannst du das Prog. ja direkt nutzen oder dir zumindest die notwendigen Informationen daraus ziehen. Falls noch Fragen hierzu auftauchen, bitte frage hier oder per PM nach. Ich antworte gerne. Genauso hoffe ich auf Feedback von der Community zu dem Programm, auch wenn es noch nicht offiziell veröffentlicht ist.

Es ist vielleicht noch anzumerken, dass das Programm im Moment sehr personalisiert ist. Das heisst, dass es für einen Anwendungsfall abgestimmt ist. Das lässt sich aber durch die Datei config.xml leicht ändern. Ich denke, dass die Tags darin selbsterklärend sind. ;-) Wie gesagt. Es handelt sich um eine Vorabveröffentlichung. In der Fassung für die HP wird es neutraler gehalten sein. :wink:

Verfasst: 12. September 2006 07:20
von Neo120484
Hej danke dir werde es mir mal anschauen ..

Verfasst: 13. September 2006 13:01
von Neo120484
Also wirklich verstehen tu ich das immer noch nicht.

Probelm an dem ganzen ich arbeite mit Codeblocks und Compeliere nicht mit projectfiles oder makefiles oder ähnlichem bis jetzt bin ich damit ganz gut gefahren aber dabei hab ich leider keine ahnung wie ich die datei mit einbinde.

hab halt dem linker die lib datei hinzugefügt und in main

Code: Alles auswählen

#include <QtPlugin> 

Q_IMPORT_PLUGIN(qjpegd1) 
eingebunden
aber gehen tuts des wegen trotzdem nicht

Verfasst: 14. September 2006 17:48
von heikob
Also auf deine Art und Weise habe ich das demgegenüber noch nie gemacht. Ich entwickle aber auch unter Linux mit KDevelop, der eine recht gute Unterstützung für Qt hat. Aber wo liegt das Problem, mit qmake -project ein Projektfile erzeugen zu lassen, dass im Zweifelsmall manuell noch ein wenig anzupassen? Das ist ja auch nur notwendig, wenn du neue Files oder neue Abhängigkeiten, etwa XML zu dem Projekt hinzufügst. Im Anschluss ein kleines qmake und make und schwupps ist es erledigt.

Also ich habe wirklich keine Ahnung, wie man das Ganze ohne qmake einbinden muss. Wieso sollte ich mir auch diesen Stress machen? Welche Vorteile hat deine Variante?

Verfasst: 14. September 2006 18:03
von FlorianBecker
Also ich verstehe diesen ganzen Post schon nicht mehr wirklich.

Das Beispiel linkt die jpeg Lib statisch und benötigt dann das Plugin nicht mehr. Allerdings wird es als Debug gelinkt und wenn ich eine Version weitergebe, dann doch normalerweise nicht als Debug!?!?

Also wo stehen wir denn nun hier in diesem Post und welches Problem liegt aktuell noch vor?

PNG ist immer in Qt4 enthalten, jpeg und mng sind immer Plugins, die aber ggf. statisch dazu gelinkt werden können.

Verfasst: 14. September 2006 18:05
von Neo120484
*G*

ich glaub ich hänge an dem statischen linken zur zeit da ich nicht mit makefiles und projects arbeite..