是否有一种优雅的方式来激活焦点小部件所在的选项卡?

时间:2011-01-11 19:08:15

标签: c++ events qt user-interface

我在QTabWidget内的小部件中有一个QLineEdit。假设选项卡位于选项卡索引2.当前活动选项卡位于索引1,并且我在QLineEdit上调用setFocus()(以及show()和raise())时,活动选项卡不会切换到索引2显示焦点小部件。

当该窗口小部件获得焦点时,是否有任何优雅的方式来显示焦点窗口小部件的选项卡?

谢谢!

3 个答案:

答案 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()));