目前Linux qt create tabwidget 切换页时,会有划动动画,如何取消动画,直接切换到选择也,一般的设置方法没有效果,请从底层原理给出解决方案
时间: 2024-01-02 19:01:57 浏览: 140
在Linux Qt中,TabWidget的切换页时的滑动动画是由QTabWidget::tabBar()方法返回的QTabBar对象完成的。如果想要取消滑动动画,可以通过重载QTabBar::tabLayoutChange()方法,在其中移除滑动动画的QPropertyAnimation对象。具体实现步骤如下:
1. 创建一个新的TabBar类,继承自QTabBar类。
2. 重载TabBar类的tabLayoutChange()方法,移除QPropertyAnimation对象。
```
void MyTabBar::tabLayoutChange()
{
QTabBar::tabLayoutChange();
for (int i = 0; i < count(); ++i) {
QPropertyAnimation *animation = qobject_cast<QPropertyAnimation *>(tabData(i, AnimationIndex).value<QObject *>());
if (animation) {
animation->stop();
delete animation;
setTabData(i, AnimationIndex, QVariant());
}
}
}
```
3. 在TabWidget中使用新的TabBar类。
```
MyTabBar *tabBar = new MyTabBar();
ui->tabWidget->setTabBar(tabBar);
```
通过以上操作,就可以取消在Linux Qt中TabWidget切换页时的滑动动画,直接切换到选择页。
阅读全文