Seite 1 von 1

QTableView und Drucken

Verfasst: 29. Mai 2007 16:43
von pfusterschmied
Hi Leute,

Wie kann man eine QTableView am besten drucken???
Ich habe bereits versucht mit Pixmap und Painter die Tabelle auszudrucken.
Dabei habe ich zwei Probleme:
1. Keine Kopfzeilen
2. mehrseitiger Ausdruck

Hier ein kurzer ausschnitt aus dem Code:

Code: Alles auswählen

QPrinter printer(QPrinter::HighResolution);
	//printer.setOrientation(QPrinter::Landscape);
		printer.setFullPage(FALSE);

        QPrintDialog *dlg = new QPrintDialog(&printer, this);
        dlg->setWindowTitle(trUtf8("Aktuelle Liste Drucken!"));

        if (dlg->exec() != QDialog::Accepted)
            return;

        int rows = proxyModel->rowCount(QModelIndex());
        int columns = proxyModel->columnCount(QModelIndex());

        int totalWidth = 0;
	for (int c = 0; c < columns; ++c)
	{
		totalWidth += tableViewGesamt->columnWidth(c)-20;
	}
	int totalHeight = 0;
	for (int r = 0; r < rows; ++r)
	{
		totalHeight += tableViewGesamt->rowHeight(r)-20;
	}
	//Printing
	QPixmap pixmap(totalWidth, totalHeight);
	QPainter::setRedirected(tableViewGesamt->viewport(), &pixmap);
	QPaintEvent event(QRect(0, 0, totalWidth, totalHeight));
	QApplication::sendEvent(tableViewGesamt->viewport(), &event);
	QPainter::restoreRedirected(tableViewGesamt->viewport());
	print scaled pixmap
	printer.newPage();
	QPainter painter(&printer);
	painter.drawPixmap(printer.pageRect(), pixmap, pixmap.rect());

	QStyleOptionViewItem option;
	QModelIndex parent = QModelIndex();
In diesem Beispiel skaliere ich die ganze Tablle auf eine Seite da sie sonst immer abgeschnitten ist, ... bei 5000 Einträgen sieht man halt nicht mehr viel :roll:

Nach einiger Suche habe ich irgendwo gelesen, dass man die Tabelle in HTML und QTextDocument umwandeln kann und "einfach" drucken kann. Hat jemand eine kurze Anleitung bzw. einen Link wo das beschrieben wird bzw. eine andere Idee wie man eine Tabelle am besten druckt?

Danke im voraus.