pyQt: QGraphicsProxyWidgets复合应用vs.混合QWidgets和QGraphicsView



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

我设法使记事本看起来就像有人刚刚把它扔到桌面上,通过使用一个转换的QGraphicsProxyWidget在一个无框的,透明的QGraphicsView,这是非常令人满意的,因为我不需要旋转区域接收鼠标事件。现在我在想,如何把这部分和其余部分连接起来。我能想到的可能性有:

  • 把这三个小部件放在QGraphicsProxyWidgets和使用隐藏的QGraphicsView保持所有的东西在一起

  • 将我当前的记事本设置与单个无框QWidget用于中心部分和QLabel结合,显示带有alpha通道的旋转图像(无论如何图像将被PIL更改)

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

  • 完全不同的东西?

我想要的两个"功能"是整个应用程序的下拉阴影(我可以回忆起在过去的不同小部件上同时获得 qgraphicseeffect 的问题)和整个应用程序的掩码,因此在小部件的边界内但不可见的部分不接收鼠标事件。我也希望应用程序打开没有太多的延迟,但我不知道如果显示一个旋转的图像在QLabel会比旋转整个QLabel在QGraphicsView(图像将在运行时交换几次)。

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

*Python图像库

我在QtCentre论坛上比较幸运,感兴趣的人,这里是链接,还讨论了我遇到的其他一些问题:

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

我决定把所有的东西都放在QGraphicsProxyWidgets中,并把它们包装在一个无框架的、透明的QGraphicsView中,这给了我想要的一切。

最新更新