PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : qt addResource jpg und gif Bilder anzeigen



dml
23-10-2008, 20:27
Hi,

ich würde gern mit qt ein html-Dokument laden in welchem sich auch Bilder befinden.
laden tue ich das Bild mit:


Browser->document()->addResource( QTextDocument::ImageResource,
QUrl( fileinfo_picture->fileName() ),
QPixmap(fileinfo_picture->absoluteFilePath()) ) ;


doch ich kann unter xp nur bmp und png Bilder anzeigen, keine *.jpg oder *.gif. Unter Linux und 2000 habe ich damit keine Probleme.
Auch verwundert es mich ein wenig, da es offizell auch unter xp mit der opensource version gehen soll.

Weiß jemand rat ?

anda_skoa
24-10-2008, 13:10
Möglicherweise hat configure unter Windows andere Defaultwerte für die Unterstützung dieser Formate und sie wurden daher nicht einkompiliert.

Die KDE-on-Windows Leute haben vermutlich eine entsprechend konfigurierte Bibliothek schon fertig http://windows.kde.org/

Ciao,
_

dml
24-10-2008, 21:01
Ich glaube ich habe die Anleitung dazu falsch verstanden.
Ich dachte qt könnte native gif + jpg lesen doch nur mit den mit compilierten lib's diese auch bearbeiten. Doch es wird sich wohl dabei um das lesen handeln.

Installiere gerade qt nochmal mit den Bibliotheken neu, hoffen wir das beste! :cool:

undefined
25-10-2008, 08:19
Deine Variante funktioniert nicht immer, das gleiche Problem hatte ich auch schon einmal, hier ein auszug einer meiner Klassen die immer funktioniert.
Wichtig ist hierbei das QImage als QVariant übergeben wird.


bool TextEditor::InsertImage ( const QString &file )
{
QUrl Uri ( QString ( "file://%1" ).arg ( file ) );
QImage image = QImageReader ( file ).read();
m_QTextDocument->addResource ( QTextDocument::ImageResource, Uri, QVariant ( image ) );

QTextCursor cursor = textCursor();
QTextImageFormat imageFormat;
imageFormat.setWidth ( image.width() );
imageFormat.setHeight ( image.height() );
imageFormat.setName ( file );
cursor.insertImage ( imageFormat, QTextFrameFormat::InFlow );
setLineWrapColumnOrWidth ( lineWrapColumnOrWidth() );
PrepareDocumentContent();
return true;
}

dml
27-10-2008, 15:24
Hi,
erstmal wieder recht herzlichen dank für eure Hilfe.
Doch es will einfach nicht klappen.




if (fileinfo_picture->exists() && fileinfo_picture->isFile() && fileinfo_picture->size()>0 ){
qDebug()<<"fileName()="<<fileinfo_picture->fileName()<<"absoluteFilePath()="<<fileinfo_picture->absoluteFilePath();

QImage image = QImageReader ( fileinfo_picture->absoluteFilePath() ).read();
Browser->document()->addResource ( QTextDocument::ImageResource, QUrl("file://"+fileinfo_picture->fileName()), QVariant ( image ) );

QTextCursor cursor(Browser->document());
QTextImageFormat imageFormat;
imageFormat.setWidth ( image.width() );
imageFormat.setHeight ( image.height() );
imageFormat.setName ( "file://"+fileinfo_picture->fileName());
cursor.insertImage ( imageFormat, QTextFrameFormat::InFlow );
Browser->setLineWrapColumnOrWidth ( Browser->lineWrapColumnOrWidth() );
//Browser->document()->PrepareDocumentContent(); <-???
/**/
}



g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\Qt\include\QtCore" -I"..\..\Qt\include\QtCore" -I"..\..\Qt\include\QtGui" -I"..\..\Qt\include\QtGui" -I"..\..\Qt\include" -I"." -I"e:\Qt\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\mkspecs\win32-g++" -o debug\cocktail.o cocktail.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\Cocktails.exe object_script.Cocktails.Debug -L"e:\Qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4 -lqjpegd4


Das merkwuerdige ist auch, dass png,... funktioniert nur halt jpg nicht, obwohl ich sie extra eingebunden habe.

undefined
27-10-2008, 15:36
Versuch mal unter win die Bibliotheken statisch zu binden.


## *.pro
QTPLUGIN += qjpeg \
qgif

..............
## main.cpp
Q_IMPORT_PLUGIN(qjpeg)
Q_IMPORT_PLUGIN(qgif)

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
...
return app.exec();
}

dml
27-10-2008, 17:38
Mhmmm ... lasst es mich mal so ausdrücken
hurra, hurra, hura .... !

amüsant auch das die beiden in der Qt Doku zu Q_IMPORT_PLUGGIN stehen, nicht aber bei QImage darauf hingewiesen wird.

Vielen dank!!!
Hab ca. zwei Wochen darüber gegrübelt.

undefined
28-10-2008, 17:14
Das liegt daran das der PLUGIN Loader keinen mugs macht wenn er kein Plugin findet.
Dafür gibt es eine debugger variable.
Aber direkt im vorraus es geht auch dynamisch in dem du eine qt.conf unter Windows im Application dir setzt.
Folgenden Variablen lassen sich beeinflussen.


[Paths]
Prefix = c:\...
Bins =
Libs =
Translations =

Spätestens wenn du dein Programm veröffentlichen möchtest kommst du an der qt.conf nicht mehr vorbei weil die meisten die Bibliotheken ja nicht Installiert haben.

Nachtrag:
Dabei muss deine Plugin Struktur im Installations Verzeichnis mit der Standard QT Installation Identisch sein. Es wird von "Libs" ausgegangen.
Also z.B:


[Paths]
Libs = c:\Programme\Meinprog

Sucht also das plugin im Verzeichnis Unterordner c:\Programme\Meinprog\imageformats

dml
12-11-2008, 17:24
Das Problem mit den Bibs habe ich momentan so gelößt, das ich qt noch einmal statisch kompeliert habe und anschließend noch die mingwm10.dll hinzufüge, wenn ich es nicht vergesse. :D


trotzdem vielen dank!
dml