一种方法是将表内容转储到中
QTextdocument,然后打印出来。
以下演示使用了一个简单的文本表,但是可以使用html来获取更复杂的格式:
from PyQt4 import QtGui, QtCoreclass Window(QtGui.QWidget): def __init__(self, rows, columns): QtGui.QWidget.__init__(self) self.table = QtGui.QTableView(self) model = QtGui.QStandardItemModel(rows, columns, self.table) for row in range(rows): for column in range(columns): item = QtGui.QStandardItem('(%d, %d)' % (row, column)) item.setTextAlignment(QtCore.Qt.AlignCenter) model.setItem(row, column, item) self.table.setModel(model) self.buttonPrint = QtGui.QPushButton('Print', self) self.buttonPrint.clicked.connect(self.handlePrint) self.buttonPreview = QtGui.QPushButton('Preview', self) self.buttonPreview.clicked.connect(self.handlePreview) layout = QtGui.QGridLayout(self) layout.addWidget(self.table, 0, 0, 1, 2) layout.addWidget(self.buttonPrint, 1, 0) layout.addWidget(self.buttonPreview, 1, 1) def handlePrint(self): dialog = QtGui.QPrintDialog() if dialog.exec_() == QtGui.QDialog.Accepted: self.handlePaintRequest(dialog.printer()) def handlePreview(self): dialog = QtGui.QPrintPreviewDialog() dialog.paintRequested.connect(self.handlePaintRequest) dialog.exec_() def handlePaintRequest(self, printer): document = QtGui.QTextdocument() cursor = QtGui.QTextCursor(document) model = self.table.model() table = cursor.insertTable( model.rowCount(), model.columnCount()) for row in range(table.rows()): for column in range(table.columns()): cursor.insertText(model.item(row, column).text()) cursor.movePosition(QtGui.QTextCursor.NextCell) document.print_(printer)if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window(25, 2) window.resize(300, 400) window.show() sys.exit(app.exec_())

![如何打印QTableView [关闭] 如何打印QTableView [关闭]](http://www.mshxw.com/aiimages/31/388519.png)
