예제 #1
0
        def __printps(self,text):
            printer = qt.QPrinter()
            if printer.setup(self):
                painter = qt.QPainter()
                if not(painter.begin(printer)):
                    return 0
            metrics = qt.QPaintDeviceMetrics(printer)
            dpiy    = metrics.logicalDpiY()
            margin  = int((2/2.54) * dpiy) #2cm margin
            body = qt.QRect(0.5*margin, margin, metrics.width()- 1 * margin, metrics.height() - 2 * margin)
            #text = self.mcatable.gettext()
            #html output -> print text
            richtext = qt.QSimpleRichText(text, qt.QFont(),
                                                qt.QString(""),
                                                #0,
                                                qt.QStyleSheet.defaultSheet(),
                                                qt.QMimeSourceFactory.defaultFactory(),
                                                body.height())
            view = qt.QRect(body)
            richtext.setWidth(painter,view.width())
            page = 1                
            while(1):
                richtext.draw(painter,body.left(),body.top(),
                              view,qt.QColorGroup())
                view.moveBy(0, body.height())
                painter.translate(0, -body.height())
                painter.drawText(view.right()  - painter.fontMetrics().width(qt.QString.number(page)),
                                 view.bottom() - painter.fontMetrics().ascent() + 5,qt.QString.number(page))
                if view.top() >= richtext.height():
                    break
                printer.newPage()
                page += 1

            #painter.flush()
            painter.end()
예제 #2
0
 def __print(self, text):
     printer = qt.QPrinter()
     if printer.setup(self):
         painter = qt.QPainter()
         if not (painter.begin(printer)):
             return 0
         try:
             metrics = qt.QPaintDeviceMetrics(printer)
             dpiy = metrics.logicalDpiY()
             margin = int((2 / 2.54) * dpiy)  # 2cm margin
             body = qt.QRect(0.5 * margin, margin,
                             metrics.width() - margin,
                             metrics.height() - 2 * margin)
             richtext = qt.QSimpleRichText(
                 text,
                 qt.QFont(),
                 qt.QString(""),
                 #0,
                 qt.QStyleSheet.defaultSheet(),
                 qt.QMimeSourceFactory.defaultFactory(),
                 body.height())
             view = qt.QRect(body)
             richtext.setWidth(painter, view.width())
             page = 1
             while (1):
                 richtext.draw(painter, body.left(), body.top(), view,
                               qt.QColorGroup())
                 view.moveBy(0, body.height())
                 painter.translate(0, -body.height())
                 painter.drawText(
                     view.right() -
                     painter.fontMetrics().width(qt.QString.number(page)),
                     view.bottom() - painter.fontMetrics().ascent() + 5,
                     qt.QString.number(page))
                 if view.top() >= richtext.height():
                     break
                 printer.newPage()
                 page += 1
             painter.end()
         except:
             painter.end()
             msg = qt.QMessageBox(self)
             msg.setIcon(qt.QMessageBox.Critical)
             msg.setText("%s" % sys.exc_info()[1])
             msg.exec_loop()
예제 #3
0
 def paint(self, painter, colorgroup, rect, selected):
     painter.font().setBold(self.bold)
     cg = qt.QColorGroup(colorgroup)
     cg.setColor(qt.QColorGroup.Base, self.color)
     qttable.QTableItem.paint(self, painter, cg, rect, selected)
     painter.font().setBold(0)
예제 #4
0
 def paint(self, painter, colorgroup, rect, selected):
     cg = qt.QColorGroup(colorgroup)
     cg.setColor(qt.QColorGroup.Base, self.color)
     qttable.QTableItem.paint(self, painter, cg, rect, selected)