Druckt nicht was er soll:
qt 334
QTexTedit* e = new QTextEdit(this);
e->setTextFormat(Qt::RichText);
Füllen mit Werten aus lineedits:
(in einer tabelle ohne Border)
e->append("<h1>Allgemein</h1>");
e->append("\n");
e->append("<table><tr><td>Betten : </td><td>"+leBetten->text()+
"</td></tr>"+QString::fromUtf8("<tr><td>Gäste : </td><td>")+leGaeste->text()+"</td></tr>"+
QString::fromUtf8("<tr><td>Übernachtungen : </td><td>")+leUebernachtungen->text()+"</td></tr>"+
"<tr><td>Kurabgabe : </td><td>"+leKurabgabe->text()+"</td></tr>"+
QString::fromUtf8("<tr><td>Übernachtungen/Gast : </td><td>")+leUeber_Gast->text()+"</td></tr>"+
QString::fromUtf8("<tr><td>Kurabgabe/Gast : </td><td> ")+leKurabgabe_Gast->text()+"</td></tr>"+
QString::fromUtf8("<tr><td>Übernachtungen/Bett : </td><td> ")+leUeber_Bett->text()+"</td></tr>"+"</table>\n\n");
Die Darstellung in einem QTextEdit ist einwandfrei, aber beim drucken ist das Problem:
die Funktion:
void StatistikFenster::drucken( )
{
printer->setFullPage( TRUE );
if ( printer->setup(this) ) { // printer dialog
QPainter p;
if( !p.begin( printer ) ) { // paint on printer
return;
}
e->setTextFormat(Qt::PlainText);
QPaintDeviceMetrics metrics( p.device() );
int dpiy = metrics.logicalDpiY();
int margin = (int) ( (2/2.54)*dpiy ); // 2 cm margins
QRect view( margin, margin, metrics.width() - 2*margin, metrics.height() - 2*margin );
QSimpleRichText richText( QstyleSheet::convertFromPlainText(
e->text()),
QFont(),
e->context(),
e->styleSheet(),
e->mimeSourceFactory(),
view.height());
richText.setWidth( &p, view.width() );
int page = 1;
do {
richText.draw( &p, margin, margin, view, colorGroup() );
view.moveBy( 0, view.height() );
p.translate( 0 , -view.height() );
p.drawText( view.right() - p.fontMetrics().width( QString::number( page ) ),
view.bottom() + p.fontMetrics().ascent() + 5, QString::number( page ) );
if ( view.top() - margin >= richText.height() )
break;
printer->newPage();
page++;
} while (TRUE);
} else {
//statusBar()->message( "Printing aborted", 2000 );
}
}
(kopiert aus der Trolltech Doku und angepasst)
leider druckt er die Formatierung und die Werte aus
<table><tr><td>25</td><td>... usw.
Weiss jemand, was ich tun muss damit es korrekt ausgedruckt wird, also nur Formatierter Text?
z.B.
Betten(5 Leerzeichen)25
Gäste(6 Leerzeichen )30
....
Vielen Dank Thomas
QTextEdit drucken
dies ist ein extract von ... (einen mini html editor)
http://ciz.ch/svnciz/_STATIC_LIBS_QT4/s ... l_edit.cpp
http://ciz.ch/svnciz/_STATIC_LIBS_QT4/s ... tml_edit.h
und dass drucken geht bestens...
Obwohl ich den html code saubere wie in http://www.qtforum.de/forum/viewtopic.php?t=2216 beschrieben ist....
http://ciz.ch/svnciz/_STATIC_LIBS_QT4/s ... l_edit.cpp
http://ciz.ch/svnciz/_STATIC_LIBS_QT4/s ... tml_edit.h
und dass drucken geht bestens...
Obwohl ich den html code saubere wie in http://www.qtforum.de/forum/viewtopic.php?t=2216 beschrieben ist....
Code: Alles auswählen
void HTML_Edit::makefilePrint()
{
#ifndef QT_NO_PRINTER
QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
QPrintDialog *dlg = new QPrintDialog(&printer, this);
if (dlg->exec() == QDialog::Accepted) {
html_area->document()->print(&printer);
}
delete dlg;
#endif
}
void HTML_Edit::makefilePrintPdf()
{
QSettings setter;
QString fileName = QFileDialog::getSaveFileName(this, "Export PDF",QString(setter.value("LastDir").toString()), "*.pdf");
if (fileName.size() > 1) {
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
if (!fileName.endsWith(".pdf")) {
fileName = fileName+".pdf";
}
ultimacartellaaperta = fileName.left(fileName.lastIndexOf("/"))+"/";
/* register session last open dir */
LastOpenDir(ultimacartellaaperta);
printer.setOutputFileName(fileName);
html_area->document()->print(&printer);
QMessageBox::information( this, tr( "File info." ),tr("Il file è stato salvato"));
}
}Re: Leider..
Wenn du nur qt3 und C sprache kennst.... habe ich nichts auf lager...Enigmon hat geschrieben:Leider ist die Lösung nur für Qt 4..
Sad
Ich arbeite mit QT 3.3.4 .
Hast du da auch was parat?
Thomas
aber wenn du mit xml und xslt umgehen kannst .... http://de.wikipedia.org/wiki/XSL_Transformation dann rate ich dir im source code von meine projekt http://sourceforge.net/projects/qtexcel-xslt/
qtexcel-xslt oder im paket auch source Visual_xsltproc_Developer xslt zu suchen respektiv greppen "convert xslt xml " ... mit diese libs kannst du schoene un prazise pdf machen und druken... ist 1000 mal besser als latex ... und vorallem einfacher.... auf dem millimeter genau mis zum 3 meter plotter....
Diese libs laufen auch auf qt3 garantiert.....