QFile PDF Datei öffnen

Verschiedenes zu Qt
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Ok, und was soll ich dann alles kompilieren und vor allem wie?
Alle Source-Files vom Poppler Qt4 ordner?
Und wie binde ich diese dann in mein Projekt ein?

Hoffe ihr könnt mir das vll erklären

Gruß freeG
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

fr33g hat geschrieben:Ok, und was soll ich dann alles kompilieren und vor allem wie?
Alle Source-Files vom Poppler Qt4 ordner?
Und wie binde ich diese dann in mein Projekt ein?

Hoffe ihr könnt mir das vll erklären
Für mich kling das irgendwie nach: "Macht mir bitte einer meine Hausaufgaben, weil ich zu faul dazu bin."

Leg Dir ein gutes Buch zu dem Thema Programmieren in C++ oder such die Grundlagen im Internet.
Es wird Dir bestimmt keiner alles vorkauen, sodass Du das nur noch schlucken musst.
In den meisten Foren gibt es Hilfe zur Selbsthilfe und keine Komplett-Lösungen.
Linux, das längste Text-Adventure aller Zeiten
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Ich such keinen, der mir meine Hausaufgaben macht!
Ich habe gleich 3 Bücher hier liegen, 2 zu C++ eins zu Qt.
Und ich bin net einer, der net selber sich sachen raussucht, aber wenn ich nix finde, oder es net raffe kann ich leider auch nix dafür=(
So und ich verstehe einfach nicht wie ich diese Poppler Bibliothek nutzen kann, und dachte eigentlich jemand könnte mir das hier vielleicht erklären...
Ich bin jetzt im Poppler Qt 4 ordner unter src, so und da ist ein makefile drinnen.
Wenn ich das jedoch von der Kommandozeile aus benutzen will mit:
gcc makefile.in
bekomm ich immer den Fehler ld returned 1 exit status.
Daher dachte ich jemand wäre vielleicht so freundlich und kann mir kurz erklären wie ich das anstellen soll....

Danke

EDIT:
Wenn ich zu faul wäre, würde ich mich wohl kaum in meiner Freizeit mit Programmierung beschäftigen.

gruß freeG
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Eigentlich mußt du die Poppler Lib nur deiner ProFile mittels einem INCLUDEPATH += und einem LIB += hinzufügen.
mfg
Günni
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du verwendest Linux, oder?
Deine Distribution hat sicher ein poppler-Paket.
Evtl. brauchst du noch sowas wie poppler-bindings-qt4, aber das kann man nur raten solange wir nicht wissen welche Distribution du verwendest.

Du kannnst Poppler auch selber kompilieren. Wie das geht steht alles im "INSTALL" welches sich im poppler-tarball befindet (dein Source-Paket, welches du herunterlädst).
Poppler ist im Gegensatz zu weiten Teilen von boost eine Bibliothek die kompiliert werden muss, also nicht nur aus ein paar Headern besteht.

Einbinden geht, wie gesagt, über das .pro. INCLUDEPATH und LIBS korrekt gesetzt sollte es jetzt kein Problem mehr sein.
Wie du Letzteres anstellst steht in der Doku (Qt Assistant), Copy&Paste hierher wäre daher unnötig.
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Also ich habe jetzt einfach mal alle Dateien aus dem Src Verzeichnis in mein Projektordner kopiert.
Habe dann in der Projektdatei folgendes stehen:

Code: Alles auswählen

HEADERS += hwidget.h
HEADERS += poppler-qt4.h
SOURCES += hwidget.cpp \
            main.cpp
Un in der hwidget.cpp steht

Code: Alles auswählen

#include "poppler-qt4.h"
So funktioniert es leider immer noch nicht.
Vielleicht erkennt jetzt jemand den Fehler oder kann mir sagen was ich umändern muss.

Was meinst du mit Includepath und Lib.
Ich mein Includepath wär ja klar wär wohl der pfad wo die header-datein sind.
Aber was soll ich bei lib angeben?
Weil poppler-qt4.h ist ja ne header-datei und keine lib...

Vielen Dank schonmal

gruß freeG

EDIT:

Sorry, habe deinen Post erst jetzt gelesen, ne ich benutze Windows 7:-P

Ehm ja genau, ich kenne es nur von der Boost Bibliothek, da konnt ich zum Beispiel die Header-Dateien die ich benötigte für die Smart-Pointers gerade einbinden, sonst nix...
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Du mußt die poppler Bibliothek unabhängig von deinem Projekt erstellen und nicht die Header und Source Dateien in dein Projekt kopieren.
Hast du dir bei dem geposteten Link mal den Abschnitt "Building the Example" angeschaut?
Dort findest du nämlich dann folgenden Codeschnipsel der in deine Pro Datei muß.

Code: Alles auswählen

INCLUDEPATH  += /usr/include/poppler/qt4
LIBS         += -L/usr/lib -lpoppler-qt4
Für mehr über INCLUDEPATH und LIBS schau bitte mal in der Doku nach.
mfg
Günni
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Ok, so wie ich das verstehe, muss ich jetzt erst mal irgendwie, weiß leider nicht wie ich das hinbekommen solle, die Poppler Library kompilieren.
Wenn ich das gemacht habe muss ich beim Includepath, das angeben, wie bei dem Beispiel building the example blos halt mit meinem Pfad.
und bei Lib auch.

Jetzt müsste ich es blos noch hinbekommen die Lib zu kompilieren..., wenn ich eine von den makefiles benutzen will, kommt immer collet2 ld returned 1 exit status...

gruß freeG
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Genau!
Die Lib selbst wenn du dir den Quellcode downloades kannst du mittels ./configure && make erstellen und mittels make install installieren (falls erwünscht).
mfg
Günni
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Was meinst du mit ./configure && make.
Das sagt mir leider gar nichts=(

Also ich habe Poppler gedownloadet, als .tar.
So diese Datei habe ich entpackt nach.
So jetzt sitzt der Poppler-Ordner da:
C:\Program Files\poppler-0.12.4\poppler-0.12.4

Da sind dann die ganzen Ordner drinnen wie qt, qt4, poppler, test und und und, und eben die dateien wie conig.h.in, conif.h.cmake, configure und und und.
Jetzt gehe ich in die Eingabeaufforderung und gehe mittels:
cd C:\Program Files\poppler-0.12.4\poppler-0.12.4\
in den Ordner, so was muss ich nun eigenben?
Habe schon gcc makefile oder gcc configure und so probiert, und da kommt immer collect2 ld returned 1 exit status

gruß freeG und schonmal vielen Dank für die Hilfe=)
guenni81
Beiträge: 134
Registriert: 29. Juli 2006 02:22

Beitrag von guenni81 »

Ohh, sorry, bin irgendwie von nem Linux OS ausgegangen. Unter Windows müsste ich auch erst nachschauen wie sich das bewerkstelligen lies.
mfg
Günni
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Mhh ok, trotzdem danke.
Ich such ja auch schon ewig und finde leider nicht, wie ich das machen soll.
Vielleicht kennt sich jemand ein bisschen unter Windows aus und kann mir helfen=)
Dann würde endlich das ganze funktionieren:-P

Gruß freeG
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du wählst gerade den steinigsten Weg den du dir suchen konntest...
Warum nicht einfach den mehrfach erwähnten Vorschlag über QDesktopServices::openUrl() gehen? Das weiß auf jedem Rechner, welches Progamm für die Datei zuständig ist. Unter WIndows öffnet sich wahrscheinlich der Acrobat Reader. Willst du das Fenster in deiner App anzeigen und evtl. steuern kannst du dies über die ganzen QAX*-Klassen.

Es sollte ausreichend Doku geben wie du unter Windows + MinGW configure-Scripte aufrufst und Bibliotheken kompilierst.
Für Poppler denke ich solltest du evtl. mal CMake zum Bauen der Poppler-lib anschauen, Poppler verwendet das mittlerweile auch und das macht (in meinen Augen) deutlich weniger Stress als configure...

Und zu guter letzt:
Versuch bitte für den Anfang nicht zu viel. Wenn du überfordert bist mit bestimmten Sachen (spezielle Programmiertechniken, Umgebung mit zusätzlichen Bibliotheken, usw.) solltest du erstmal den Weg des geringsten Widerstandes gehen, damit du nicht an einem Problem hängenbelibst, dich verbeißt und dann die Lust verlierst weil einfach nichts vorwärts geht. Ein weiteres Problem ist, dass bereits zig Stunden Support in zwei Foren draufgegangen sind und trotzdem nichts wirklich bewegendes geschehen ist. Vorschläge wurden ignoriert (dicker Seitenhieb auf QDesktopServices!) usw.
fr33g
Beiträge: 22
Registriert: 14. Februar 2010 16:26

Beitrag von fr33g »

Ja ich habe schon Qt DesktopServices benutzt, er hat damit auch die Datei geöffnet.
Aber darum gehts mir im Moment ja gar nicht.
Ich wollte eben, dass mein Programm Pdf Files nach nem bestimmten Wort durchsucht, und falls es gefunden wurde, dann eventuell öffnet, bzw nur anzeigt wo es gefunden wurde.

Bin ja auch sehr dankbar über die ganze Hilfe=)

gruß freeG
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Unter Windows wird das ganze mittels cmake kompiliert, als Dependencies sind da dann nocht libpng, libjpeg, freetype, fontconfig, ... ich würde also sagen bei deinem Kenntnisstand - lass es.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten