2011-06-16 113 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