Enigma25
15-06-2006, 22:20
Druckt nicht was er soll:
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* 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