Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pyqt print preview QTableView

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

like image 945
iraj jelodari Avatar asked Jan 23 '26 13:01

iraj jelodari


1 Answers

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...

like image 82
sorush-r Avatar answered Jan 25 '26 03:01

sorush-r



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!