QT把widget转换成图片后打印
2015-07-27 17:30
1521 查看
from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget,QPushButton, QVBoxLayout, QTableWidgetItem) from PyQt5.QtGui import QPixmap, QPainter, QImage, QTextDocument from PyQt5.QtPrintSupport import QPrinter, QPrintDialog, QPrintPreviewDialog from PyQt5.QtCore import QRect, QPoint, QSize , Qt def on_picButton_clicked(): printer =QPrinter(QPrinter.HighResolution) #/* 打印预览 */ preview =QPrintPreviewDialog(printer,widget ) """ * QPrintPreviewDialog类提供了一个打印预览对话框,里面功能比较全, * paintRequested(QPrinter *printer)是系统提供的, * 当preview.exec()执行时该信号被触发, * plotPic(QPrinter *printer)是用户自定义的槽函数,图像的绘制就在这个函数里。 """ preview.paintRequested.connect(plotPic) preview.exec(); #/* 等待预览界面退出 */ def plotPic(printer): painter =QPainter(printer); image = QPixmap() image=widget.grab(QRect( QPoint( 0, 0 ), QSize( widget.size().width(), widget.size().height() ) ) )# /* 绘制窗口至画布 */ #QRect rect = painter.viewport(); #QSize size = image.size(); size.scale(rect.size(), Qt.KeepAspectRatio)# //此处保证图片显示完整 painter.setViewport(rect.x(), rect.y(),size.width(), size.height()); painter.setWindow(image.rect()); painter.drawPixmap(0,0,image); #/* 数据显示至预览界面 */ import sys app = QApplication(sys.argv) tablewidget = QTableWidget() ## 设置列数 tablewidget.setColumnCount(4) tablewidget.horizontalHeader().setDefaultSectionSize(150) ## QStringList在PyQt5 header= ["name", "last modify time","type", "size"] tablewidget.setHorizontalHeaderLabels(header) tablewidget.insertRow(0) tablewidget.insertRow(0) pItem1 = QTableWidgetItem("aa" ) pItem2 = QTableWidgetItem("bb" ) pItem3 = QTableWidgetItem("cc" ) pItem4 = QTableWidgetItem("dd" ) tablewidget.setItem( 0, 0, pItem1 ) tablewidget.setItem( 0, 1, pItem2 ) tablewidget.setItem( 0, 2, pItem3 ) tablewidget.setItem( 0, 3, pItem4 ) tablewidget.setMinimumSize(800, 600) button = QPushButton('打印界面') button.clicked.connect(on_picButton_clicked) widget = QWidget() layout = QVBoxLayout(widget) layout.addWidget(button) layout.addWidget(button_txt) layout.addWidget(tablewidget) widget.show() sys.exit(app.exec_())
相关文章推荐
- Qt鼠标事件
- QT学习二:一个简单的记事本
- Qt Creator 乱码问题
- Mqtt协议IOS移植完1
- 使用Qtip2来开发功能强大的删除和信息提示功能
- QT程序退出后托盘图标不消失问题
- QT5.2中新建lib库,在引用时出现error LNK2019: 无法解析的外部符号错误
- Qt之遍历文件夹
- Qt同步线程的几种方法
- Qt 中一些常用类中文说明
- 模态与非模态对话框
- 设置应用程序图标
- 设置菜单图标
- 窗口几何布局
- Qt creator 编译错误:无法解析的外部符号(命令)
- 使用Qt designer 向菜单栏和工具栏添加action
- Qt creator 编译错误 :cannot find file .pro qt
- QT之网络编程错误总结
- QTP--针对C/S结构测试的几个关键问题
- Ubuntu15.04 QT5编译出现cannot find -lGL 和 collect2:error:ld returned 1 exit status 错误