【问题标题】:Qt: How to print QFile?Qt:如何打印 QFile?
【发布时间】:2014-04-08 10:34:38
【问题描述】:

实际上,我有一个通过 Qt 生成的 CSV 文件。如果可能的话,我需要为用户添加一个打印选项,以便在不打开文件的情况下打印 CSV 文件。

我试图搜索解决方案。但找不到解决问题的方法。

任何人都可以建议我打印 QFile 的方法吗?有没有打印 QFile 的函数??

【问题讨论】:

  • 我认为你必须自己编程。
  • 要从文件中获取任何数据,您必须打开它。因此,在打开文件之前无法打印文件。打开是在 OS API 级别完成的操作,并不意味着向用户显示任何内容。当然,要打印文本文件,您仍然需要以某种方式对其进行格式化!
  • 请澄清您所说的打印是什么意思。将原始内容(即使用逗号分隔符)打印到标准输出,或者您想要 CSV 表的精美打印输出,等等?
  • 感谢 cmets。我只想用逗号分隔符打印 CSV。

标签: qt qfile qprinter


【解决方案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 命令?这是一个很好的提示,我可以试试。
猜你喜欢
  • 2014-09-07
  • 2014-10-24
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2012-01-07
相关资源
最近更新 更多