2

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

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

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

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

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

  • 完全不同的东西?

我想要的两个“功能”是整个应用程序的阴影(我记得在过去让QGraphicsEffect在不同的小部件上同时工作时遇到问题)和整个应用程序的蒙版,所以部分在小部件范围内但不可见的不接收鼠标事件。我也希望该应用程序可以毫不拖延地打开,但我不知道在QLabel中显示旋转的图像是否会比在QGraphicsView中旋转整个 QLabel 更快或更慢(图像将被交换一些运行时的时间)。

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

*Python 图像库

4

1 回答 1

1

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

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

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

于 2013-04-02T02:36:26.990 回答