Qt:如何打印 QFile?
Posted
技术标签:
【中文标题】Qt:如何打印 QFile?【英文标题】:Qt: How to print QFile? 【发布时间】:2014-04-08 10:34:38 【问题描述】:实际上,我有一个通过 Qt 生成的 CSV 文件。如果可能的话,我需要为用户添加一个打印选项,以便在不打开文件的情况下打印 CSV 文件。
我试图搜索解决方案。但找不到解决问题的方法。
任何人都可以建议我打印 QFile 的方法吗?有没有打印 QFile 的函数??
【问题讨论】:
我认为你必须自己编程。 要从文件中获取任何数据,您必须打开它。因此,在打开文件之前无法打印文件。打开是在 OS API 级别完成的操作,并不意味着向用户显示任何内容。当然,要打印文本文件,您仍然需要以某种方式对其进行格式化! 请澄清您所说的打印是什么意思。将原始内容(即使用逗号分隔符)打印到标准输出,或者您想要 CSV 表的精美打印输出,等等? 感谢 cmets。我只想用逗号分隔符打印 CSV。 【参考方案1】:使用 CSV 的内容创建一个 QTextDocument
设置并调用 print()
方法。
【讨论】:
如果我理解正确,您已经生成了内容并最终希望在保存到 CSV 文件之前打印预览? 塞巴斯蒂安兰格,感谢您的回复。我猜 QTextDocument 有一个仅适用于 html 的选项,即“setHtml()”。我有QString。实际上,我有一个 QSqlTabelModel,它通过 QTableView 显示,然后根据用户的选择,它可以保存为 CSV 文件。我还想添加一个选项供用户直接打印。所以我拥有的是 QString 形式的数据。 它确实支持setPlainText(const QString &text)
,这将导致文档的默认格式。调用 setPlainText 后可以通过 print-method 打印。
谢谢塞巴斯蒂安,我尝试了你的建议。它在下一行包装了额外的列。就我而言,我有 24 列带有标题。这个过程能够在第一行打印 12-15 列,其余的列到第二行。 (类似于 c1-c12,\n c13-c24)你能帮我建议我删除这个错误吗??
尝试使用QTextDocument::setPageSize(QSizeF &fsize)
更新页面。【参考方案2】:
你用的是linux吗?使用 QProcess 运行此终端命令
lpr -P "printername" "path+filename"
编辑: 试试这个,因为你使用的是 windows
c:> lpr -Sprinter's IP address [-Poption] [-ol] \path\file name
来自http://support.ricoh.com/bb_v1oi/pub_e/oi_view/0001042/0001042969/view/netsys/int/0207.htm,但我无法测试它,因为我使用的是 ubuntu。
【讨论】:
谢谢雷吉。你的想法很好。我正在使用 Windows XP。默认打印机是否有类似的 Dos 命令?这是一个很好的提示,我可以试试。以上是关于Qt:如何打印 QFile?的主要内容,如果未能解决你的问题,请参考以下文章