QTreeWidget在双cli上展开动画

2024-04-24 09:42:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个QTreeWidget,并将动画设置为true(setAnimated(true))。 当我点击项目左侧的一个标记(三角形)时,它会平滑地展开,但当我双击该项目时,它扩展得太快了(就像没有设置“动画”标志一样)。 我想要平滑的动画双击也。我怎样才能解决这个问题?在

单击cd4{3>来标记这些方法。在

我使用PyScript创建QT应用程序(但我已经尝试C++,问题是一样的)。在


Tags: 项目方法标记true应用程序标志动画qt
2条回答

您需要覆盖click行为。检查事件是否双击,然后可以将事件重定向到相应的调用。你应该检查状态,如果它已经被点击或没有,以防止第二次动画可能发生。在

诀窍是,双击也会在默认实现中出现一次单击。 在展开动画之前,默认实现调用QAbstractItemView::setState(AnimatingState)来设置动画的内部状态。在

QAbstractItemView::mouseReleaseEvent()中,QAbstractItemView::setState(NoState)在动画完成之前被调用。在此之后,动画立即终止。在

使用以下代码解决:

void YourSubTreeView::mouseReleaseEvent(QMouseEvent* event)
{
    QAbstractItemView::State preState = state();
    QTreeView::mouseReleaseEvent(event);
    if (preState == QAbstractItemView::AnimatingState)
        setState(preState);
}

相关问题 更多 >