PyQT5如何在QScrollArea中处理许多(数千个)自定义样式的小部件

时间:2018-06-20 05:32:49

标签: python-3.x qt5 pyqt5 qtstylesheets

我正在开发一个PyQT5应用程序,该应用程序显示了一个可滚动区域,其中包含很少到很多(数千个)自定义小部件。

在某些情况下,这些小部件可能有2000个(也许更多)。

每个小部件都显示裁剪的图像(我可以平移/缩放图像以更改裁剪区域),文本,2个信息图标和2个按钮(用于编辑/删除操作)。

这些小部件的尺寸和样式都相同,因此我在父对象上使用QSS设置了样式,以便在启动时仅设置一次样式。

我实际上将所有这些小部件都添加到具有GridLayout的ScrollableArea中,以使其以网格方式放置并能够向上/向下滚动。

调整窗口大小时,也将调整窗口小部件的大小以适应新的大小(固定的列数)。

发生的事情是,当我第一次创建此UI时,它需要6-8秒才能显示,而当我调整窗口大小时,它需要2-3秒才能将窗口小部件更新为新的大小。

向用户显示在调整对象大小时应用程序已挂起的结果。这让我很烦。

我进行了一些分析,发现setStylesheet正在减慢此处的速度,因为它需要在所有小部件上设置样式。

这是我的问题: 您对如何使用如此多的样式自定义小部件实现ScrollableArea而没有这种性能问题有什么建议或指示吗?

在此先感谢您的帮助。

0 个答案:

没有答案