首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能设定QTreeWidget的动画速度吗?

你能设定QTreeWidget的动画速度吗?
EN

Stack Overflow用户
提问于 2021-05-12 09:16:06
回答 1查看 193关注 0票数 2

可以将QTreeWidget设置为动画:

代码语言:javascript
复制
tree_widget = QtWidgets.QTreeWidget()
tree_widget.setAnimated(True)

这将使QTreeWidgetItems在其崩溃和扩展时具有动画。

是否有一种方法可以访问和编辑动画速度,并键入与QtCore.QVariantAnimation()相同的方式?

我希望能够改变速度和动画类型(如,QtCore.QEasingCurve.Linear),如果可能的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 11:50:41

让我们追踪源头;

  1. 当我们寻找animated属性时,我们可以使用找出,它实际上是QTreeView类的一部分。
  2. 因此,首先,我们需要检查他们是否提供了一个公共方法(可以命名为set/add动画)来访问/操作该属性。但根本就没有。(不完全正确,请参见更新部分)
  3. 然后,我们将研究QTreeView的源代码。在第910行处设置为animationsEnabled标志的属性。
  4. 当我们查找根据此标志所采取的操作在第3096行第3113项的位置时
  5. 不幸的是,这些方法是QTreeViewPrivate类的一部分,根据doc-string,它不是Qt 的一部分:

W、R、N、I、N、G 这个文件不是Qt的一部分。它纯粹是作为实现细节而存在的。此头文件可能在没有通知的情况下从一个版本更改到另一个版本,甚至可以被删除。 我们是认真的。

所以,我看不出一种直接的方式去访问或改变它,而不用触摸和构建源。

更新

最近,我转到Qt样式表引用中的一个Qt样式表引用属性,用样式表覆盖内置的动画持续时间值,并决定在这里添加它。但是,支持哪些小部件的文档很少。幸运的是,在谷歌黑客的帮助下,我找到了相关承诺

代码语言:javascript
复制
"widget-animation-duration" inurl:"code.qt.io"

Diffstat -rw-r-- src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc 4 -rw-r-- src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc 16 -rw-r--r-- src/widget/itemview/qColumnview.cpp 6 -rw-r--r-- src/widget/itemview/qtreeview.cpp 2 -rw-r--r-- src/小部件/样式/qCommonstyle.cpp 5 -rw-r--r-- src/widgets/styles/qstyle.cpp 9 -rw-r--r-- src/widgets/styles/qstyle.h1 -rw-r--r-- src/小部件/样式/q样式表样式.src 4 -rw-r--r-- src/小部件/小部件/qtabbar_P.H2 -rw-r--r-- src/widget/widget/qwidgetanimator.cpp 4 10文件更改了,41次插入,12次删除

QColumnView和QWidgetAnimator类有这些行,我在测试时能够更改QColumnView动画的持续时间。

代码语言:javascript
复制
if (const int animationDuration = style()->styleHint(QStyle::SH_Widget_Animation_Duration, 0, this)) {
    d->currentAnimation.setDuration(animationDuration);

但是: QTreeView实现只检查标志是否存在,而不使用它的值,因为它们通过将树呈现为像素映射并按像素绘制来使其具有动画效果。我们可以假设他们会使用它,因为这看起来像是为它做的准备:

代码语言:javascript
复制
animationsEnabled = q->style()->styleHint(QStyle::SH_Widget_Animation_Duration, 0, q) > 0;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67500678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档