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?的主要内容,如果未能解决你的问题,请参考以下文章

文件IO操作开发笔记:使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具

Qt每天一例1.按行读取文件并打印

将 QFile 正确存储在集合中

Qt,QFile 写入特定行

为啥qt不读取文件

Qt。如何在 QPrinterDialog 中选择默认打印机并禁用其余打印机?