我在QTabWidget内的小部件中有一个QLineEdit。假设选项卡位于选项卡索引2.当前活动选项卡位于索引1,并且我在QLineEdit上调用setFocus()(以及show()和raise())时,活动选项卡不会切换到索引2显示焦点小部件。
当该窗口小部件获得焦点时,是否有任何优雅的方式来显示焦点窗口小部件的选项卡?
谢谢!
答案 0 :(得分:6)
这是一个更通用的功能,可切换到包含小部件的选项卡:
void SwitchToTabContaining(QTabWidget * tabsW, QWidget * w)
{
for(int i=0;i<tabsW->count();++i) {
QWidget * tab = tabsW->widget(i);
if(tab->isAncestorOf(w)) {
tabsW->setCurrentWidget(tab);
break;
}
}
}
它没有经过测试,但你应该知道它是如何工作的。
答案 1 :(得分:1)
假设QTabWidget
名为qtab:
在QLineEdit的focusInEvent
:
QTabBar* bar = qtab->tabBar();
bar->setCurrentIndex(2);
答案 2 :(得分:1)
对于您的特定情况,您确定QLineEdit是您的某个标签小部件的子项:
myTabWidget->setCurrentIndex(myTabWidget->indexOf(myLineEdit->parentWidget()));