2011-06-16 79 views
0

我正在使用Windows上使用Qt库的应用程序。QPrintDialog并设置打印机

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

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

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

然而,Qt的功能QPrintDialog中使用的更近PrintDlgEx功能,它看起来像这样: enter image description here

此对话框似乎打算实际打印。不用于设置和配置打印机。

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

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

在Qt中有一个干净的方式来获得体面的打印机配置对话框吗?

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

+0

有没有试过QPrintPreviewWidget? – 2011-06-16 13:26:11

+0

我不想预览我的打印输出。我只想让用户选择并配置打印机,而无需打印,因此我可以将选定的打印机及其配置保存在我的应用程序的配置文件中或我的数据文件中。 – Patrick 2011-06-16 13:42:17

+0

我只是猜测在这里,但你可以通过一些选项禁用打印按钮?然后你可以只保留“应用”和“取消”按钮,也许你就可以得到你想要的。即使我不打印任何atm,我也对所有Qt相关的东西感兴趣:) – 2011-06-16 13:48:23

回答

1

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

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

来自MS的引用:“新应用程序不应该使用PrintDlg来实现此目的,Print Setup对话框已被PageSetupDlg函数创建的Page Setup对话框取代。

+1

我已经害怕这将是答案。在这种情况下,仍然有许多商业应用程序(包括Acrobat Reader 9)仍然使用这个“不推荐”的打印机设置对话框,这让我感到意外。 – Patrick 2011-06-16 21:29:17