在Qt中打印复杂的小部件

时间:2010-06-10 18:32:52

标签: qt printing qt4

我有一个包含大量不同子小部件的复杂小部件,例如QLabel的子类。我想打印这个小部件,但显然我不想打印背景,我想用不同的文字颜色打印或者略微修改框架的样式。

因为我不想真正想要使用特殊的“打印”功能遍历所有子窗口小部件,我需要将其附加到所有窗口小部件(如何将“print”添加到QLabel?),我想使用paintEvent

如果我有一个层次结构MyWidget - >源自 - >一些QWidget,我想插入一个子图层MyWidget - > MyPrintWidget - >一些QWidget,其中myPrintWidget :: paintEvent将检查当前打印是否进入屏幕(因此调用QWidget :: paintEvent),否则如果我们打印到打印机,则调用一些函数MyPrintWidget :: drawWidget。

  1. 这是正确的方法吗? 打印小部件?
  2. 我怎么能搞清楚 paintEvent,我正在打印到 打印机而不是屏幕?
  3. 有一个很好的例子 打印复杂的小部件?

1 个答案:

答案 0 :(得分:2)

  
      
  1. 这是打印小部件的正确方法吗?
  2.   

QWidget::render()会将小部件及其所有子级呈现为QPaintDevice QPrinter。对于打印,您需要做的就是在打印机设备上调用渲染之前正确设置widgets stylesheet。如果您正在重复使用屏幕小部件,则应该可以立即将其重新设置。

  
      
  1. 我怎么能在paintEvent中弄清楚我是打印到打印机而不是屏幕?
  2.   

您可以通过查看各种QPaintDevice属性来解决这个问题,但我会尽量避免依赖该功能。

  
      
  1. 是否有打印复杂小部件的好例子?
  2.   

我不知道你正在尝试做什么。