出于某种原因,我被迫在程序开始时或用户使用期间创建大量QWidgets。 这将导致主线程卡住几秒钟。 我怎样才能提高创作速度?我应该让这些小部件更简单(比如删除按钮的像素图并保持最低限度的功能吗?)
答案 0 :(得分:3)
没有有效而简单的方法来打破物理定律。许多UI元素==慢,没有办法解决它。
解决方法:重用现有的UI元素,给人以滚动的印象。因此,不是创建10到000个UI元素来显示包含10列和1&000; 000行的表格,只需创建足以填充屏幕并在用户滚动时移动数据 - 只是给人的印象是UI是滚动。这种方法是由于屏幕空间有限而且通过添加您无法看到的UI元素几乎无法获得这种方法。
另一种方法是一次只创建几个元素,总是在"批次"之间提供UI线程时间。回复。对于此方法,创建N个元素,然后添加计时器事件。当计时器触发时,添加另外N个元素,依此类推,直到你创建了足够的。
第二种方法的缺点是,由于资源有限,您的操作系统最终会导致您死亡。如果您创建了100个&n; 000 UI元素,并且每个元素需要10 KB的RAM,那么应用程序将仅为UI分配1 GB的RAM。