2010-06-10 75 views
0

我有一個複雜的小部件,其中包含大量不同的子小部件,例如, QLabel的子類。我想打印這個小部件,但顯然我不想打印背景,我想用不同的文本顏色打印或者稍微修改一些框架樣式。因爲我真的不想通過一個特殊的「打印」函數遍歷所有的子小部件,我需要將它附加到所有小部件(如何將「打印」添加到QLabel?),我想使用的paintEvent。在Qt中打印複雜小部件

如果我有一個層次結構MyWidget - >派生自 - >一些QWidget,我想插入一個MyWidget - > MyPrintWidget - >一些QWidget,其中myPrintWidget :: paintEvent將檢查當前打印是否要檢查該屏幕(因此調用QWidget :: paintEvent),否則,如果我們正在打印到打印機,請調用某個函數MyPrintWidget :: drawWidget。

  1. 這是通往 的正確方法嗎?
  2. 我怎樣才能在 的paintEvent弄清楚,那我打印到打印機 而不是屏幕?
  3. 是否存在的 打印複雜的部件一個很好的例子?

回答

2
  1. 這是正確的方式來打印啓用窗口小部件?

QWidget::render()將呈現一個小部件及其所有孩子的QPaintDevice,其中QPrinter是。對於打印,您只需在打印機設備上調用渲染之前正確設置widgets stylesheet即可。如果您要重新使用屏幕上的小部件,您應該可以立即將其重新設置。

  1. 我如何計算paintEvent,我打印到打印機而不是屏幕?

您可能能夠通過看不同的QPaintDevice特性來弄明白,但我會盡量避免依賴於該功能。

  1. 有沒有打印複雜小部件的好例子?

我不知道你做了什麼。

+0

該項目未使用的樣式表,所以我需要來設置打印調色板和必須做手工佈局。 – Jens 2010-06-12 17:55:55