在我的申请中,我有一个QGridLayout
,涵盖了大部分Window
。其中我添加了一个序列的对象。目前当QLineEdit
物件的数量> 500 & & QLabel
物件> 500的GUI
明显变慢&因为更大的值无法正常运作。此外,大多数这些小部件在窗口中不可见,因此需要滚动才能查看。 因为我在grid layout
中添加了很多widgets
(循环后通过循环&调用repaint
),绘画花费了大量时间。 所以我有一个解决方案的想法,即使我的widgets
被添加在Grid Layout
不是每个人都画。我想要一个rectangle
,其中所有的widgets
被绘制& 矩形的坐标将在窗口被滚动时更新。但我不知道如何做到这一点。所以我想知道是否有可能这样做? 如果可能的话,请添加一个小示例代码,以便我能够理解如何实现该代码。 谢谢。如何控制应在GUI中绘制的QGridLayout中的Widget?
更新:添加图像来描述情景。
Black Rectangle = QGridLayout say myGid.
Red Rectangle = Bounding Rectangle which is approximately same size as Main Window of my Application.
Green Rectangle = Widgets in myGrid.
Green Rectangle filled with yellow = Widgets shown in Main Window
(只有这些部件应考虑调用repaint
),未填充矩形的其余部分存在于myGrid
但不考虑调用repaint
部件。 因此,当我滚动我的主应用程序,red rectangle
的坐标更新&全部widgets bounded by it are considered for repaint.
我希望我让问题变得简单易懂。
我知道您已经花了相当多的时间处理这个问题,但您可能需要退后一步,尝试更优雅的解决方案。 – 2013-03-12 05:12:44
确实。 [如果你必须问,你可能做错了。](http://blogs.msdn.com/b/oldnewthing/archive/2007/03/01/1775759.aspx)(不完全相同的事情,但足够接近) – cgmb 2013-03-12 05:13:04
@Sosukodo我有一个替代使用堆叠小工具,然后能够控制什么是绘画,但在这种情况下,我不得不添加按钮,改变小部件的索引,通过堆叠小部件显示&我不吨得到一个连续滚动,因为我没有堆叠的小部件会得到。 – 2013-03-12 05:19:27