当前位置:编程学习 > wap >>

qt做报表

哪位高手知道如何用QT制作类似报表的课打印界面不?其中包括几行文字和几幅图片,望不吝赐教……………… --------------------编程问答-------------------- 为什么要用qt? --------------------编程问答-------------------- 可以试试QTableWidget,这是一个可编辑的表格控件,可以显示文本,也可以插入控件(当然包括图片) --------------------编程问答-------------------- Qt里面转换成html格式方便打印,可以参见<<C++ GUI Qt4 编程>>第8章打印部分 --------------------编程问答-------------------- 本质上讲,将内容画在屏幕上 和 画在打印机上 是一样的,
但 打印机上的坐标 是 实实在在的 厘米,英寸,
还有 需要换页,
这就需要你在画的时候 计算好大小。

有几个有用的函数

setOrientation() 打印机定向
setPaperSize() 设置纸张大小
setResolution() 设置 DPI
newPage()       新的一页
setNumCopies() 打印多少份

楼上说的 第八章 是个很好的参考。

还有一个 有用的链接 http://doc.trolltech.com/4.5/qprinter.html --------------------编程问答-------------------- 多谢赐教。。。运用QT主要因为现在正在用QT开发程序,而所需要的报表又比较简单,不需要用单独的报表,故想用Qt试试。。。。 --------------------编程问答-------------------- 有同样疑问,顶一下!~ --------------------编程问答-------------------- qt现在很火爆呀 --------------------编程问答-------------------- qt中简单的打印过程
1、新建一个qprintviewdialog对象p。
2、connect对象p的printrequisition 信号到自己的一个函数如doprint(*printer)
3、实现doprint函数,就是在里面使用qpainter(print)新建一个painter后直接在里面画就好了。
4、p.exec()
这种方式是显示qt提供的打印预览对话框,该对话框需要你提供printrequisition信号的实际实现。当p需要预览或打印时就会发出该信号,你只要实现好doprint函数即可,别的qt都为你做好了。
需要注意的是:
1、在第三步中当调用painter.begin后默认就会创建一个空白页,所以一开始不需要newpage,直接画就是了;
2、在一页画完以后直接调用print.newpage创建新页面
3、直到所有页面画完后才可以调用painter.end().
4、qt提供的qprintviewdialog对话框已经包含了所有有关打印设置的功能,如需定制可以在新建p之前调用printdialog对话框来获取打印机,将其传给p的构造函数即可。
5、printer对象的pagerect返回的是去掉页边距后的矩形;易做图rect返回的是纸张大小(单位可以设置)
6、这种方式不能适合多种打印机,也就是说你设计好了能工作了可能换到针式打印机就不一样了。因为不同打印机支持的纸张及打印分辨率不同。
解决方法推荐:
建议首先在A4纸张和300或600分辨率下设计,程序中设置一个变量deltaW=程序运行时打印机中的纸张宽度*程序运行时打印机分辨率/(A4纸宽度*300或600),然后在所有表示坐标.x或大小.w的数字上乘以deltaW即可。同样的也可以设置垂直缩放比例。
注意是所有的,包括字体大小、及绘图中的各种坐标。这样不管用什么纸张在什么打印机下都可以完全显示了(打出来会是整体放大或缩小)。如果你能预先知道客户机上的打印环境的话,就不必这一步了。 --------------------编程问答--------------------
补充:移动开发 ,  Qt
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,