【问题标题】:How to modify the animation speed of a QTreeWidget?如何修改 QTreeWidget 的动画速度?
【发布时间】:2022-11-05 14:49:06
【问题描述】:

我发现了一个类似的问题:Can you set the animation speed of a QTreeWidget?

我尝试添加到样式表:

QTreeWidget {
    widget-animation-duration: 1000;
}

但是折叠和展开的动画延迟继续相同,我认为默认值为0。

【问题讨论】:

  • 我认为您不能这样做,因为您没有访问权限,但是您可以根据 qt 源代码创建自定义树小部件,并在那里设置您喜欢的动画。我的意思是,如果它对您创建实现 treewidget 的类如此重要
  • 类似问题的答案确实表明存在“widget-animation-duration”,但它仅用于启用/禁用QTreeView 的动画。
  • 因此,您最好的选择可能是更改 Qt 源代码,正确使用样式表的持续时间设置或将其公开为 QTreeView 的 C++ 成员函数。另请参阅类似问题答案中的研究。
  • @m7913d 源的一部分影响所有小部件,而不仅仅是QtreeWidget
  • “源的那部分”是什么意思?哪一部分?

标签: c++ qt


【解决方案1】:

您可以使用isAnimated() 禁用动画,但据我所知,无法加快动画速度。

【讨论】:

    【解决方案2】:

    唯一的解决方案是基于 QTreeWidget 创建一个新类并覆盖以下方法:

    <code>class TreeWidget(QTreeWidget):
    def __init__(self, parent=None):
        QTreeWidget.__init__(self, parent)
    
    def collapseItem(self, itm):
        self.collapseItem(itm, False)
    
    def collapseAll(self):
        self.collapseAll(False)
    
    def expandItem(self, itm):
        self.expandItem(itm, False)
    
    def expandAll(self):
        self.expandAll(False)
    

    问题是总是使用默认动画,要解决这个问题你必须使用没有动画的替代方法,如果是这样就没有必要在界面中暴露它们,所以解决方案是覆盖动画方法,在上面的代码中使用了没有动画的方法。

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 2021-08-02
      • 2013-12-18
      • 1970-01-01
      • 2013-02-17
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多