【问题标题】:QPrintDialog and setting up the printerQPrintDialog 和设置打印机
【发布时间】:2011-06-16 13:22:21
【问题描述】:

我正在开发一个在 Windows 上使用 Qt 库的应用程序。

我希望用户能够配置应用程序应该打印的打印机。所以我的主菜单将包含以下条目:

  • 打印机设置...:应该显示一个对话框,用户可以在其中选择和配置打印机
  • 打印...:执行实际打印

在其他非 Qt 应用程序中,我使用了带有 PD_PRINTSETUP 标志的 Windows 函数 PrintDlg。这显示了以下对话框,这正是我想要的:

但是,Qt 函数 QPrintDialog 使用更新的 PrintDlgEx 函数,如下所示:

此对话框似乎是为实际打印而设计的。不适用于设置和配置打印机。

  • 它显示了一个打印按钮,而不是简单的 OK。
  • 它包含一个“页面范围”组框,这在设置打印机配置时并不是很有用。

在我的情况下,QPageSetupDialog 也不是很有用。它看起来像这样: 所以这只对设置页面大小、方向和边距有用。

Qt 中是否有一种简洁的方式来获得一个像样的打印机配置对话框?

如果找不到干净的方法,我需要恢复到原生 Windows PrintDlg 函数,这意味着修补或复制 Qt 源 qprintdialog_win.cpp 中的代码。

【问题讨论】:

  • 你试过 QPrintPreviewWidget 吗?
  • 我不想预览我的打印输出。我只想让用户选择并配置打印机,而不打印,所以我可以将选定的打印机及其配置保存在我的应用程序的配置文件中,或者我的数据文件中。
  • 我只是在这里猜测,但是您可以通过某些选项禁用“打印”按钮吗?然后你可以只留下应用和取消按钮,也许你会得到你想要的。我对所有与 Qt 相关的东西都感兴趣,即使我没有在 atm 打印任何东西 :)
  • 不,这似乎是不可能的。

标签: qt printing


【解决方案1】:

恐怕您需要恢复到原生 Windows PrintDlg 函数,因为 Qt4 正确使用 PageSetupDlg 函数进行页面设置。

在 Windows 中,虽然PrintDlg可以使用PD_PRINTSETUP 使对话框充当打印设置对话框,但不建议新应用程序使用该功能。

引用 MS:“新应用程序不应为此目的使用 PrintDlg。打印设置对话框已被PageSetupDlg 函数创建的页面设置对话框所取代。”

【讨论】:

  • 我已经担心这会是答案。在这种情况下,我仍然感到惊讶的是,仍有许多商业应用程序(包括 Acrobat Reader 9)仍在使用这个“不推荐”的打印机设置对话框。
猜你喜欢
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2015-07-07
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多