Есть ли элегантный способ активировать вкладку, в которой находится сфокусированный виджет? - PullRequest
1 голос
/ 11 января 2011

У меня есть QLineEdit внутри виджета внутри QTabWidget.Допустим, вкладка находится в индексе вкладки 2. Когда активная в данный момент вкладка находится в индексе 1, и я вызываю setFocus () (и show (), и повысить ()) в QLineEdit, активная вкладка не переключается в индекс 2показать сфокусированный виджет.

Есть ли какой-нибудь элегантный способ показать вкладку сфокусированного виджета, когда этот виджет получает фокус?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 11 января 2011

Вот более общая функция для переключения на вкладку, содержащую виджет:

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 голос
/ 11 января 2011

А для вашего конкретного случая, когда вы уверены, что QLineEdit является дочерним элементом одного из ваших виджетов со вкладками:

myTabWidget->setCurrentIndex(myTabWidget->indexOf(myLineEdit->parentWidget()));
1 голос
/ 11 января 2011

Предполагая, что QTabWidget называется qtab:

В QLineEdit focusInEvent:

QTabBar* bar = qtab->tabBar();
bar->setCurrentIndex(2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...