在开发Thinvd视频转换软件时,调用的QTabWidget作为effect界面的布局类。QTabWidget上可设置多个Tabbar, 当我选择了其中一个Tabbar,然后关闭窗口,希望通过setCurrentIndex(或setCurrentWidget)设置能再现关闭前的状态。结果只更改了Tabbar的状态,再没有更新里面的stackedWidget, 也就是说它的tabbar与stackedWidget没有保持一致。个人在做这个之前反复查阅了QTabWidget的文档,能设置它当前界面的也就是setCurrentIndex,setCurrentWidget,如果是点击Tabbar是没有问题的。
看了一下QTabWidget::currentChanged ( int index ) 的来源,相关跟踪:
1. connect(d->tabs, SIGNAL(currentChanged(int)),
this, SLOT(_q_showTab(int)));
2. void QTabWidgetPrivate::_q_showTab(int index)
{
Q_Q(ImTabWidget);
if (index < stack->count() && index >= 0)
stack->setCurrentIndex(index);
emit q->currentChanged(index);
#ifdef QT3_SUPPORT
emit q->selected(q->tabText(index));
emit q->currentChanged(stack->widget(index));
#endif
}