I'm trying to print the contents of a QTableView to the printer . i implement bottom script and it run successfully without any error. but all data are Unusual in printPreview. this is pic from my problem -FOUNTAIN
def printTable(self,printer,painter,area):
model = self.model
myTableView = self.view
printer = painter
rows = model.rowCount();
columns = model.columnCount();
totalWidth = 0.0;
totalPageHeight = 0.0;
totalHeight = 0.0;
for c in range(columns):
totalWidth += myTableView.columnWidth(c)
for p in range(45):
totalPageHeight += myTableView.rowHeight(p);
for r in range(rows):
totalHeight += myTableView.rowHeight(r);
xscale = area.width() / totalWidth;
yscale = area.height() / totalHeight;
pscale = area.height() / totalPageHeight;
painter.scale(xscale, pscale);
painter.translate(area.x() + xscale, area.y() + yscale);
x=0
#QStyleOptionViewItem option;
for r in range(rows):
++x
for c in range(columns):
idx = model.index(r,c);
option = myTableView.viewOptions();
option.rect = myTableView.visualRect(idx);
if r % 2 == 0:
brush= QtGui.QBrush(QtGui.QColor(220, 220, 220), QtCore.Qt.SolidPattern);
painter.fillRect(option.rect, brush);
myTableView.itemDelegate().paint(painter, option, idx);
if (x == 45):
ok = printer.newPage();
x=0;
painter.translate(0, -1350);
####################### Now print Table ######################
printer = QtGui.QPrinter()
painter = QtGui.QPainter()
painter.begin(printer )
self.printTable(printer,painter, printer.pageRect())
if you have any example that can help me please tell me . thank you so much
If you're using C++, I'll suggest to use a professional reporting tool. Available options are KDAB reporting tool and Nocisoft NC Report. AFAIK there is no reliable reporting library for PyQt...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With