qt做报表

cqu_mywen 2009-12-03 02:45:07
哪位高手知道如何用QT制作类似报表的课打印界面不?其中包括几行文字和几幅图片,望不吝赐教………………
...全文
1535 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rcyboom 2009-12-18
  • 打赏
  • 举报
回复
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返回的是去掉页边距后的矩形;paperrect返回的是纸张大小(单位可以设置)
6、这种方式不能适合多种打印机,也就是说你设计好了能工作了可能换到针式打印机就不一样了。因为不同打印机支持的纸张及打印分辨率不同。
解决方法推荐:
建议首先在A4纸张和300或600分辨率下设计,程序中设置一个变量deltaW=程序运行时打印机中的纸张宽度*程序运行时打印机分辨率/(A4纸宽度*300或600),然后在所有表示坐标.x或大小.w的数字上乘以deltaW即可。同样的也可以设置垂直缩放比例。
注意是所有的,包括字体大小、及绘图中的各种坐标。这样不管用什么纸张在什么打印机下都可以完全显示了(打出来会是整体放大或缩小)。如果你能预先知道客户机上的打印环境的话,就不必这一步了。
chenzhp 2009-12-17
  • 打赏
  • 举报
回复
qt现在很火爆呀
wibao2 2009-12-17
  • 打赏
  • 举报
回复
有同样疑问,顶一下!~
cqu_mywen 2009-12-14
  • 打赏
  • 举报
回复
多谢赐教。。。运用QT主要因为现在正在用QT开发程序,而所需要的报表又比较简单,不需要用单独的报表,故想用Qt试试。。。。
dext 2009-12-04
  • 打赏
  • 举报
回复
本质上讲,将内容画在屏幕上 和 画在打印机上 是一样的,
但 打印机上的坐标 是 实实在在的 厘米,英寸,
还有 需要换页,
这就需要你在画的时候 计算好大小。

有几个有用的函数

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

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

还有一个 有用的链接 http://doc.trolltech.com/4.5/qprinter.html
feilinhe 2009-12-03
  • 打赏
  • 举报
回复
Qt里面转换成html格式方便打印,可以参见<<C++ GUI Qt4 编程>>第8章打印部分
gemfield 2009-12-03
  • 打赏
  • 举报
回复
可以试试QTableWidget,这是一个可编辑的表格控件,可以显示文本,也可以插入控件(当然包括图片)
gemfield 2009-12-03
  • 打赏
  • 举报
回复
为什么要用qt?

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧