Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : QTextEdit ausdrucken



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

anda_skoa
16-06-2006, 15:32
Du sagst dem TextEdit vor dem Drucken daß du alle Zeichen so haben willst wie sie im String stehen (TextFormat PlainText)

Probier es mal wenn du auf RichText bleibst.

Ciao,
_

Enigma25
16-06-2006, 21:46
Du meinst in der Druck-Funktion..

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); HIER!!!!
QPaintDeviceMetrics metrics( p.device() );
int dpiy = metrics.logicalDpiY();
..........


Hatte es vorher auf Richtext, da druckt er den Kram wie beschrieben aus.
Mein Fehler! das hier war schon weiter getestet..
PlainText hatte jeden einzelnen Wert untereinander statt in einer Tabelle!
Betten
5
Gaeste
6
fällt also leider auch aus..!!

Hast du noch irgendwelche Ideen? ich bin für jede hilfe dankbar!!!!
vielleicht auch zu dem anderen Problem mit der Qdatatable( siehe Forum)

Dringend!!

Danke Thomas