Russian Qt Forum
Ноябрь 25, 2024, 03:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QToolBox и фокус. Баг?  (Прочитано 2965 раз)
Paramon
Гость
« : Июнь 22, 2014, 14:35 »

Установил параметр focusPolicy=NoFocus, но toolbox упорно продолжает принимать фокус. Если это баг, то как отловить приём фокуса toolbox'ом, чтобы передать следующему виджету (в сигналах не нашёл)? Спасибо.
Записан
Paramon
Гость
« Ответ #1 : Июнь 22, 2014, 17:59 »

Ловлю уведомления о получении фокуса. Это отлично работает. Но падает при закрытии программы.  Непонимающий
Код:
void MainWindow::focusChanged( QWidget * old, QWidget * now)
{
    QWidget *qwgt=now->parentWidget();

    if(qwgt!=NULL)
    {
        if(qwgt->objectName()=="toolBox")
        {
            this->focusNextChild();
        }
    }
}
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Июнь 22, 2014, 18:32 »

Может быть, now передается пустым?
Записан

Paramon
Гость
« Ответ #3 : Июнь 22, 2014, 21:08 »

Может быть, now передается пустым?
Точно. Теперь всё в порядке.
Спасибо.

Оказывается toolbox в себе ещё содержит что-то безыменное, которое и получает фокус. Делаю ему focusPolicy=NoFocus и всё в порядке.
Записан
Paramon
Гость
« Ответ #4 : Июнь 25, 2014, 12:19 »

По мере изучения Qt нашёл способ попроще
Код:
    const QObjectList list = ui->toolBox->children();
    for(int i=0; i<list.count(); i++)
    {
        QWidget *wgtCurr = qobject_cast<QWidget*>(list.at(i));
        if(wgtCurr!=NULL) wgtCurr->setFocusPolicy(Qt::NoFocus);
    }

Неприятный баг с "невидимым" фокусом исчез. Правда я не знаю, насколько это корректно, но уж получше чем ловить всё под ряд.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.