在开发
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
}
3. 需要调用的setCurrentIndex:
void QTabWidget::setCurrentIndex(int index)
{
Q_D(ImTabWidget);
d->tabs->setCurrentIndex(index);
+ if (index < d->stack->count() && index >= 0)
+ d->stack->setCurrentIndex(index);}
把蓝色
部分加到红色部分即可,这样tabbar与stackedWidget就可以保持一致了.
用图说明一下现象:
如图中状态时关闭窗口,再次打开时,Tabbar中的Effect显示是对应,但StackWidget却
显示成了Subtigle对应的stackWidget.
本文来自CSDN博客,转载请标明出处:
http://blog.csdn.net/notton/archive/2010/11/25/6033861.aspx[ 此帖被notton在2010-11-25 09:35重新编辑 ]