2024-04-24 09:42:24 发布
网友
我创建了一个QTreeWidget,并将动画设置为true(setAnimated(true))。 当我点击项目左侧的一个标记(三角形)时,它会平滑地展开,但当我双击该项目时,它扩展得太快了(就像没有设置“动画”标志一样)。 我想要平滑的动画双击也。我怎样才能解决这个问题?在
QTreeWidget
setAnimated(true)
单击cd4{3>来标记这些方法。在
我使用PyScript创建QT应用程序(但我已经尝试C++,问题是一样的)。在
您需要覆盖click行为。检查事件是否双击,然后可以将事件重定向到相应的调用。你应该检查状态,如果它已经被点击或没有,以防止第二次动画可能发生。在
诀窍是,双击也会在默认实现中出现一次单击。 在展开动画之前,默认实现调用QAbstractItemView::setState(AnimatingState)来设置动画的内部状态。在
QAbstractItemView::setState(AnimatingState)
在QAbstractItemView::mouseReleaseEvent()中,QAbstractItemView::setState(NoState)在动画完成之前被调用。在此之后,动画立即终止。在
QAbstractItemView::mouseReleaseEvent()
QAbstractItemView::setState(NoState)
使用以下代码解决:
void YourSubTreeView::mouseReleaseEvent(QMouseEvent* event) { QAbstractItemView::State preState = state(); QTreeView::mouseReleaseEvent(event); if (preState == QAbstractItemView::AnimatingState) setState(preState); }
您需要覆盖click行为。检查事件是否双击,然后可以将事件重定向到相应的调用。你应该检查状态,如果它已经被点击或没有,以防止第二次动画可能发生。在
诀窍是,双击也会在默认实现中出现一次单击。 在展开动画之前,默认实现调用
QAbstractItemView::setState(AnimatingState)
来设置动画的内部状态。在在
QAbstractItemView::mouseReleaseEvent()
中,QAbstractItemView::setState(NoState)
在动画完成之前被调用。在此之后,动画立即终止。在使用以下代码解决:
相关问题 更多 >
编程相关推荐