代码之家  ›  专栏  ›  技术社区  ›  Jens

在qt中打印复杂的小部件

  •  0
  • Jens  · 技术社区  · 16 年前

    我有一个复杂的小部件,它有很多不同的子块,例如QLABEL的子类。我想打印这个小部件,但显然我不想打印背景,我想用不同的文本颜色打印或稍微修改框架的样式。

    因为我不想用一个特殊的“print”函数迭代所有子块,我需要将它附加到所有小部件上(如何将“print”添加到qlabel?),我想用paintevent。

    如果我有一个层次结构mywidget->派生自->某些qwidget,我想插入一个子层mywidget->myprintwidget->一些qwidget,其中myprintwidget::paintevent将检查,如果当前打印将转到屏幕(因此调用qwidget::paintevent),否则如果我们正在打印到打印机,请调用一些函数myprintwidget::而是drawwidget。

    1. 这是去的路吗 打印启用小部件?
    2. 我怎么能算出来 我要打印到 打印机而不是屏幕?
    3. 有没有一个很好的例子 打印复杂的小部件?
    1 回复  |  直到 16 年前
        1
  •  2
  •   Kaleb Pederson    16 年前
    1. 这是启用小部件的打印方式吗?

    QWidget::render() 将一个小部件及其所有子项呈现给 QPaintDevice 哪一个 QPrinter 是。对于打印,只需设置 widgets stylesheet 在打印机设备上调用render之前正确。如果您要重用屏幕上的小部件,那么您应该能够在之后立即将其设置回原来的位置。

    1. 在paintevent中,我如何确定我是在打印到打印机而不是屏幕上?

    您可以通过查看各种qpaintdevice属性来了解它,但我会尽量避免依赖于该功能。

    1. 有没有打印复杂小部件的好例子?

    我不知道你想做什么。