Seite 1 von 1
Listen erstellen (HTML, IMG, oder ...?)
Verfasst: 13. Juni 2007 09:59
von pfusterschmied
Hallo Profis,
Ich arbeite an einem Programm, welches mir Werte aus einer MySQL DB holt und in verschiedenen Listen darstellt und ausdruckt. Eine Übersichtsliste (Html) funktioniert bereits.
Nun möchte ich eine sehr aufwenige Detailliste erstellen (siehe Anhang)
Versuch 1
Ich dachte daran die Liste in HTML zu erstellen, leider ist der HTML Code dafür 800 Zeilen lang. Wenn ich nun 300 Datensätze generiere, hängt das Programm.
Versuch 2
Ich erstelle eine Html Tablle und gebe der Tabelle einfach ein background-image. Laut Doku und Assistant ist es möglich ein css background-image attribute bei QTextEdit zu setzten. Leider dürfte es da noch einen Bug geben, da keine Background-Images bzw. Boders unterstützt werden.
Nun meine Frage: Wie kann ich am einfachen so eine Liste erstellen. Ich möchte nur Vornamen, Nachnamen und das Bild in diese Liste einfügen. Leider stehe ich ein wenig unter Zeitdruck und würde mich um baldige Antwort freuen ....
Verfasst: 13. Juni 2007 10:16
von marco
hallo,
mit den html-tabellen ist schon eine vernünftige lösung. allerdings kann ich dir mit deinen bisherigen nicht weiterhelfen. code?...
willst du nur (sehr ansehnliche) druckergebnisse aus der datenbank erzeugen, so kann ich dir
http://ncreport.sourceforge.net/ empfehlen. habs seinerzeit so weit angepasst, dass es aus models daten holt und nicht mehr nur ziemlich unmittelbar aus sql-abfragen. falls interesse besteht...
Verfasst: 13. Juni 2007 10:46
von pfusterschmied
Danke für die rasche Antwort,
Ich hole mittel QSqlQuery meine Daten aus der Datenbank. Mein Programm ist eigentlich auch schon fertig programmiert, nur an der Darstellung der letzten Tabelle scheitere ich.
Ich habe auch schon eine Mischung von Bildern und Tabellen versucht, leider bekomme ich es nicht so hin, dass die Tabelle ordentlich abschließt, obwohl sie in FireFox und Opera passt.
Code: Alles auswählen
// HTML Template für EP Pässe
content +=
"<table border='1' cellspacing='0' cellpadding='0' width='1150'>"
"<tr>"
"<td colspan='4'><img src='images/pp/ppw2_01.jpg' width='1150' height='41' /></td>"
"</tr>"
"<tr>"
"<td ><img src='images/pp/ppw2_02.jpg' width='349' height='123' /></td>"
"<td width='580 height='123'><div class='test'>"+ lastName +","+ firstName +"</div></td>"
"<td rowspan='2' width='204' height='287'><img src='images/passbild/"+ pfadDB +"/" + pic +"' width='150' height='200' /></td>"
"<td rowspan='2'><img src='images/pp/ppw2_05.jpg' width='17' height='287' /></td>"
"</tr>"
"<tr>"
"<td colspan='2'><img src='images/pp/ppw2_06.jpg' width='929' height='164' /></td>"
"</tr>"
"<tr>"
"<td colspan='4'><img src='images/pp/ppw2_07.jpg' width='1150' height='512' /></td>"
"</tr>"
"</table>";
Ich dachte auch schon das ganze mit QPixmap umzusezten. Sprich einfach die Tabelle als Hintergrund, Vorname, Nachname in ein Bild umwandeln und in den Vordergrund stellen. leider scheitere ich da am Koordinatensystem.
Ich möchte nichts aufweniges! Einfach nur diese Tabelle mit Vorname, Nachname und Bild aus der DB.
Verfasst: 13. Juni 2007 11:33
von pfusterschmied
hab mir das Programm (
http://ncreport.sourceforge.net/) mal angesehen, coole sache, jedoch viel zu umfangreich. Soweit ich das mit meiner 3wöchigen c++ Erfahrung beurteilen darf, verwendet er zum zeichnen der Tabellen QPainter. Das ist mir (noch) zu kompliziert. Trotzdem danke.
Verfasst: 13. Juni 2007 12:31
von upsala
Nimm deine HTML-Liste und warte halt mal 10min bis das Ergebnis fertig ist. Alles andere kostet dich nur mehr Zeit...
Verfasst: 13. Juni 2007 12:37
von pfusterschmied
Danke, sitz gerade dabei das html zu vereinfachen um code zu sparen...
Hätte da noch eine Frage. Ich dachte daran, das HTML Template in ein QTextDocument mit
Code: Alles auswählen
QString html;
preview->addResource( QTextDocument::HtmlResource, QUrl( "files/pp_html.html" ), html );
einzufügen damit ich nicht alles im Quellcode stehen habe ...
anschließend könnte ich mir Marker ins Template geben (###Makrer###) welche ich dann mit replace ersetzte ...
Denke ich da richtigt oder bin ich wieder mal auf dem Holzweg?
Verfasst: 14. Juni 2007 23:34
von patrik08
pfusterschmied hat geschrieben:Danke, sitz gerade dabei das html zu vereinfachen um code zu sparen...
einzufügen damit ich nicht alles im Quellcode stehen habe ...
anschließend könnte ich mir Marker ins Template geben (###Makrer###) welche ich dann mit replace ersetzte ...
dem Holzweg?
Du machst dir ein riesigen mehr aufwand .... solche template zu machen..
Wass wenn der kunde dir sagt; ich moechte oben noch ein logo, oder die schrift etwas mehr oder das ganze in Verdana XX...
Dann siehst du alt aus...
Forme dir die daten in xml .. und extern die template oder mehrere template in xslt ... die libs sind in
http://sourceforge.net/projects/qtexcel-xslt/ mit reichlich excel oder pdf generieren beispiel....
Ein template ist dann so ..
http://switch.dl.sourceforge.net/source ... sql2fo.xsl und kannst jederzeit farbe font ecc bestiemmen ...
http://de.wikipedia.org/wiki/XSL_Transformation
Wenn der kunde sagt bitte in word ... dann schriebst du nur eine neue template ohne den code zu aendern...
Verfasst: 15. Juni 2007 08:02
von pfusterschmied
Danke werde ich gleich mal testen. Kann ich in XSLT ordentlich formatieren ?
Werden alle Formatierungen unterstützt? Sonst bleibe ich bei meiner Lösung,wenn auch nur ungern:
Lösung:
Leider ist die Formatierung der Tabellen unter QT eine aufwendige Sache, da nur sehr wenige CSS-Tags unterstützt werden. Border, Background-Image, Hight, width etc. werden im QTextBrowser bzw. QTextDocument nicht unterstützt.
Ich habe jetzt alle Listen die ich erstellen möchte in externe HTML Files ausgelagert und lade sie nach bedarf einfach mit :
Code: Alles auswählen
QString templateDetails;
// Template laden
QString details = "files/details.html";
if (!details.isEmpty()) {
QFile fileDetails(details);
if (fileDetails.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream inDetails(&fileDetails);
while (!inDetails.atEnd()) {
QString lineDetails = inDetails.readLine();
templateDetails.append(lineDetails);
}
}
}
templateDetails.replace(QString("###LOGO###"), QString("images/logo.jpg"));
templateDetails.replace(QString("###LAST_NAME###"), QString(lastName));
templateDetails.replace(QString("###FIRST_NAME###"), QString(firstName));
templateDetails.replace(QString("###SF###"), QString(sfPrint));
Anschließend ersetzte ich einfach die ###MARKER### im Template mit dem Inhalt.
Verfasst: 15. Juni 2007 09:58
von patrik08
pfusterschmied hat geschrieben:Danke werde ich gleich mal testen. Kann ich in XSLT ordentlich formatieren ?alt.
Naturlich kannst du hinterher alles neu formatieren... im template ohne den code aendern...
XSLT ist ein basiwerkzeug von webmaster
http://de.selfhtml.org/xml/darstellung/ ... dlagen.htm und da es auf praktisch alles formatieren kann auch fuer programmieren..
http://albumshaper.sourceforge.net/ brauch auch xslt um die foto gallery zu machen auch QT4.
Mit xslt habe ich bis heute erfogreich die folgende formate ausgegeben. aus xml file;
Latex fuer pdf formulare, apache FOP pdf , reinen text , csv , sql dump, html, openoffice spredsheet, excel format 95. weitere sind moeglich ...
IMO: meine Eigene Home page
http://ciz.ch/ basiert aus 2 einfache xslt template
1 -
http://ciz.ch/map/theme/zest/page.xsl
2 -
http://ciz.ch/map/theme/zest/master_html.xsl
die fertige body der page laden ich dann einfach so:
Code: Alles auswählen
<xsl:template match="body//*">
<xsl:copy>
<xsl:for-each select="@*">
<xsl:copy/>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Und das framework Popoon
http://www.popoon.org/ gibt die richtige page je nach url regular expression... Und ein QT CMS
http://cms.ciz.ch/it/software/content_m ... 69775.html
packt alle file in einen zip und ladet alles auf dem server ein entpacktes zip sieht dann so aus...
http://cms.ciz.ch/data/2007/01/01/50000/
XML file mit alle sprachen bilder anlage ecc...
Und Mein Kontakt formular aus latex mit beamer folie
http://latex-beamer.sourceforge.net/
http://cms.ciz.ch/data/2007/06/13/14080 ... t_Form.pdf ist auch mit xml entsanden.... im pdf fullscreen modus.... pdflatex
http://www.tug.org/applications/pdftex/