【问题标题】:PyQt4: How to scale a QWidget?PyQt4:如何缩放 QWidget?
【发布时间】:2015-07-01 03:10:51
【问题描述】:

我创建了一个QWidget,其中包含许多子小部件。为了查看整个图片,我想缩小QWidget。然后将其缩小。但是QWidget 没有scale 接口。

QGraphicsView 有一个scale 接口,所以我尝试将QWidget 放在QGraphicsView 中。规模有效,但是在QGraphicsView中进行拖放非常麻烦(在stackoverflow上有一个question关于此)。

那么还有其他方法可以扩展QWidget吗?

【问题讨论】:

  • 您是否有理由不能使用布局机制来缩放小部件并简单地设置主窗口的大小?还是您也需要更改内容比例?
  • @Mailerdaimon 我还需要更改内容比例。也因为我需要将子小部件放置在绝对位置,所以我没有使用布局。
  • 您可以使用qApp::allWidgets 并调整所有小部件的大小。然后,您需要手动调整内容大小,这也很麻烦。
  • 您是否尝试过将sizePolicy 设置为固定值,然后在函数中调用setGeometry 以获取比例参数? (如果我正确理解你的问题,你的战斗是使用布局时很难做到的对象的绝对位置)
  • @Thalia 谢谢。我试过sizePolicysetGeometry,这不是我想要的。当我缩放QWidget 时,我需要子小部件也可以缩放。就像缩放图片一样。

标签: qt qt4 pyqt4


【解决方案1】:

Qt 中没有明确支持此类功能。您找到的解决方案之一是:

  1. 将父 QWidget 嵌入到 QGraphicsWidget,然后在场景中查看它。拖放地址为here

  2. 手动 render() 视图小部件的 paintEvent 中的小部件。在对任何坐标应用缩放后,您必须将所有事件转发到渲染的小部件,同时保持必要的不变量。视图小部件必须在外部采取行动,就好像它是被查看的小部件一样,除了比例的变化。这将负责拖放。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2018-11-26
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多