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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как проигнорировать блокировку виджета модальным окном?  (Прочитано 4314 раз)
unkeep
Гость
« : Ноябрь 11, 2014, 15:21 »

В частности нужно сделать так, чтобы в MdiArea модальный диалог блокировал только cсвой родительский MdiSubwindow.

installEventFilter с такой реализацией не помог. "QEvent::WindowBlocked" выводится, но окно всё равно блокируется.
bool MyEventFilter::eventFilter(QObject* obj, QEvent* event)
{
    if (event->type() == QEvent::WindowBlocked)
    {
        qDebug() << "QEvent::WindowBlocked";
        return false;
    }

    return QObject::eventFilter(obj, event);
}
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #1 : Ноябрь 11, 2014, 15:24 »

return true;
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
unkeep
Гость
« Ответ #2 : Ноябрь 11, 2014, 15:39 »

return true;

всё равно блокирует. Ещё пробовал event переопределять в родительском виджете.
пс: у диалога стоит Qt::WindowModal
Записан
vulko
Гость
« Ответ #3 : Ноябрь 11, 2014, 16:21 »

return true;

всё равно блокирует. Ещё пробовал event переопределять в родительском виджете.
пс: у диалога стоит Qt::WindowModal

возможно поможет event->accept() ?
Записан
unkeep
Гость
« Ответ #4 : Ноябрь 11, 2014, 16:51 »

возможно поможет event->accept() ?
неа В замешательстве
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #5 : Ноябрь 11, 2014, 20:03 »

тогда скорее уж event->ignore()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
vulko
Гость
« Ответ #6 : Ноябрь 12, 2014, 09:13 »

тогда скорее уж event->ignore()

event->accept() вроде как раз маркирует ивент как обработанный и дальше не прокидывает.
вместе с с return true/false надо попробовать.
и ignore() тоже можно.

если не помогает, значит не в ивенте дело и не обработка ивента отвечает за это.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #7 : Ноябрь 12, 2014, 18:29 »

можно попробовать по-другому: диалогу дать нулевого парента (ну или просто сделать его немодальным) и руками отправлять событие блокировки нужному виджету.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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