【问题标题】:Scalable painting of a Qt applicationQt 应用程序的可缩放绘画
【发布时间】:2009-09-30 15:56:57
【问题描述】:

我正在编写嵌入式设备屏幕的模拟(其中包含主 QWidget 顶部的自定义小部件),虽然屏幕的本机尺寸为 800x600,但我希望能够将其放大和缩小拖动窗口的角落。如果不使用网格布局和拉伸器(不会向上/向下缩放字体),我该如何完成这种缩放?我认为解决方案的一部分可能是创建一个 QTransform 并以某种方式将其注入整个应用程序的 QWidget 或其 QPaintDevice 或 QPaintEngine。我想这样做而不是将 QTransform 放在每个自定义小部件中,只是“主窗口”QWidget。

【问题讨论】:

    标签: qt transform scaling


    【解决方案1】:

    这是可能的如果您使用QGraphicsView 作为您的主要显示小部件。 QGraphicsScene 现在支持将小部件作为内容,因此您可以直接缩放它们。

    我相信另一种方法是为每个小部件重新实现paint(),并在绘制子小部件之前手动设置变换/缩放。

    【讨论】:

    • 结果很好用——谢谢!下面是我所做的更多细节:首先,按照在 QGraphicsView 中显示 QGraphicsScene 的说明进行操作。要获得缩放效果,从 QGraphicsView 派生并覆盖 resizeEvent(),调用 'fitInView( items()[0] );'。像冠军一样工作! (还没有足够的代表投票给你——对不起)。
    【解决方案2】:

    这里有点猜测,因为我没有尝试过...但是您可以尝试将顶级小部件放入 QGraphicsView 然后让 QGraphicsView 进行缩放。 然后,您可以在 QGraphicsView 上启用 OpenGL,并在硬件中对其进行缩放,这样它既好又快。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 2012-03-11
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      相关资源
      最近更新 更多