QPrinter и QPainter печатают из TreeView в PDF ошибку - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь экспортировать данные из QTreeView в PDF ... Как я могу распечатать все данные из QTreeview в один файл PDF?

это код, который я пробовал:

def printToPDF(self):
    fn,_ = QFileDialog.getSaveFileName(self,'Export PDF',None,'PDF files(.pdf);;All Files()')

    if fn !='':
        if QFileInfo(fn).suffix()=='': fn +='.pdf'
        printer= QPrinter(QPrinter.HighResolution)
        printer.setOutputFormat(QPrinter.PdfFormat)

        printer.setOutputFileName(fn)
        painter = QPainter()
        painter.begin(printer)
        try:
            self.treeView.render(painter)
        finally:
            painter.end()

Мне удалось сделать с ним файл PDF, но больше ничего.Я получаю только ту часть, которую можно увидеть, не перемещая свиток, и эта часть была уменьшена

enter image description here

Как решить эту проблему?Спасибо

РЕДАКТИРОВАТЬ:

class Stampaj_sve(QWidget):
    def __init__(self, parent=None):
        super(Stampaj_sve, self).__init__(parent)

        # dodjeljuje tri vjuv prethodno definisanom okviru
        lay = QtWidgets.QVBoxLayout(self)
        # kreira liniju za unos teksta za pretragu

        self.btn_stampaj=QPushButton()
        self.btn_stampaj.setText('Export to PDF')
        self.btn_stampaj.clicked.connect(self.printToPDF)

        self.tableView = QTreeView()


        # dodjeljuje okviru self.tableView
        lay.addWidget(self.btn_stampaj)
        lay.addWidget(self.tableView)

        # pravi promjenjivu za pretragu baze podataka
        self.model = QtSql.QSqlQueryModel()
        self.model.setQuery("SELECT Lokacija,Kancelarija,Prezime,Ime,Telefon,Lokal,Fax,Oblast FROM telImenik")
        # upisuje rezultate pretrage baze u self.tableView

        self.tableView.setModel(self.model)

        # odredjuje sirinu kolona u self.tableView-u prva kolona je 0-nulta,id nema potrebe dodavati jer ga sam odredjuje
        for i, width in enumerate([150, 65, 100, 80, 90, 40, 80, 340]):
            self.tableView.setColumnWidth(i, width)

    def printToPDF(self):
        fn, _ = QFileDialog.getSaveFileName(self, 'Export PDF', None, 'PDF files(.pdf);;All Files()')

        if fn != '':
            if QFileInfo(fn).suffix() == '': fn += '.pdf'
            printer = QPrinter(QPrinter.HighResolution)
            printer.setOutputFormat(QPrinter.PdfFormat)

            printer.setOutputFileName(fn)
            painter = QPainter()
            painter.begin(printer)
            try:
                self.tableView.render(painter)
            finally:
                painter.end()

Я хочу, чтобы все строки из QTreeview отображались в одном файле PDF.У меня 126 рядов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...