Seitenzahl beim Drucken ausblenden

Alles rund um die Programmierung mit Qt
Antworten
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Seitenzahl beim Drucken ausblenden

Beitrag von lepsai »

Hallo Genossen,

hat jemand 'ne Idee, wie man beim Drucken mit QPrinter die Seitenzahlen ausblenden kann?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du meinst im QPrintDialog? Schau dir mal QAbstractPrintDialog::PrintDialogOptions an. (kanns selber gerade nicht testen...)
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Nein, über QPrintDialog geht's nicht... Noch Ideen?
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Problem ist nicht zu lösen da die API von QTextDocument und eigentlich auch von QPrinter falsch designed ist.

Workaround:

Code: Alles auswählen


QPrinter printer;
// printer setup


QTextDocument* printDocumentPtr = CreateDocumentForPrint(printer);

printDocumentPtr->print(&printer);

delete printDocumentPtr;

// hier die Imlementierung von CreateDocumentForPrint

QTextDocument* MyClass::CreateDocumentToPrint(QPrinter& printer) const
{
// m_report ist vom Typ QTextDocument
	QTextDocument* outputPtr = m_report.clone();
	qel_ASSERT(outputPtr != NULL);

	QPainter p(&printer);

	QAbstractTextDocumentLayout* layout = outputPtr->documentLayout();
	layout->setPaintDevice(p.device());

	const int dpiy = p.device()->logicalDpiY();

	const int margin = (int) ((2/2.54)*dpiy); // 2 cm margins
	
	QTextFrameFormat fmt = outputPtr->rootFrame()->frameFormat();
	
	fmt.setMargin(margin);
	
	outputPtr->rootFrame()->setFrameFormat(fmt);

	QRectF body = QRectF(0, 0, p.device()->width(), p.device()->height());

	QFont font(outputPtr->defaultFont());
	font.setPointSize(10); // we define 10pt to be a nice base size for printing
	outputPtr->setDefaultFont(font);
	outputPtr->setPageSize(body.size());

	return outputPtr;
}
Nun funktioniert's!
Antworten