Qt:用于复合应用的QGraphicsProxyWidgets与混合QWidgets和QGraphicsView

时间:2013-03-29 07:29:05

标签: qt pyqt

我打算使用PyQt编写一个小应用程序(主要是Windows兼容),需要一些帮助来找到正确的方法。应用程序应包含 QLabel 以显示图像,无框窗口包含一些 QPushButtons QListView 。 现在的问题是, QLabel QListView 都应围绕Z轴旋转一个固定的角​​度。这个想法是让整个应用程序看起来像一张照片和一个记事本,放在某种技术设备(中间的主要小部件)下面。所有三个小部件都应形成一个复合体,它具有固定的大小并可以作为一个窗口移动,但是我想保留“咔嗒”的外观并使其无框架,主要小部件应具有最小化/关闭按钮。

我设法通过在无框架,透明的 QGraphicsView 中使用转换后的 QGraphicsProxyWidget 让记事本看起来像是刚刚将它扔到桌面上,这非常令人满意我没有打扰旋转接收鼠标事件的区域。现在我想知道,如何将这部分与其他部分联系起来。 我能想到的可能性是:

  • 将所有三个小部件放在 QGraphicsProxyWidgets 中并使用隐藏的 QGraphicsView 将所有内容保存在一起

  • 将我当前的记事本设置与中心部分的单个无框 QWidget QLabel 组合,显示带有Alpha通道的旋转图像(图像正在运行)无论如何都要改变PIL *

  • 独立地在QLabel和QListView上使用我的 QGraphicsProxyWidget 方法,并将它们与主要小部件组合。

  • 完全不同的东西?

我想拥有的两个“功能”是整个应用程序的一个阴影(我记得有一些问题需要让 QGraphicsEffect 在过去的同时在不同的小部件上同时工作)整个应用程序的掩码,因此窗口小部件内部但不可见的部分不会接收鼠标事件。我也希望应用程序能够毫不拖延地打开,但我不知道在 QLabel 中显示旋转的图像是否比在 QGraphicsView中旋转整个QLabel更快或更慢(图像将在运行时交换几次。)

我希望有人可以澄清采取哪种方式或指出不同方法的利弊。 提前谢谢。

* Python图像库

1 个答案:

答案 0 :(得分:1)

我在QtCentre论坛上有更多的运气,对于任何感兴趣的人,这里是链接,还讨论了我遇到的其他一些问题:

http://www.qtcentre.org/threads/53945-Putting-all-widgets-in-QGraphicsView-using-QGraphicsProxyWidgets-Good-idea

我决定将所有内容都放在QGraphicsProxyWidgets中并将它们包装在一个无框架,透明的QGraphicsView中,它可以提供我想要的一切。