crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Диалог, закрывающийся при клике мимо
zaytsewa
  опции профиля:
сообщение 26.9.2011, 8:49
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


Всем привет!
Есть необходимость закрытия диалога при клике в любую область мимо него. Коллега говорит, что события потери фокуса в linux'e( конткретно в мсвс ) не приходят или не посылаются или не отлавливаются, вообщем с ними какие-то проблемы. Какие есть обходные пути? Все спасибо).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 26.9.2011, 22:58
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(zaytsewa @ 26.9.2011, 9:49) *
Всем привет!
Есть необходимость закрытия диалога при клике в любую область мимо него. Коллега говорит, что события потери фокуса в linux'e( конткретно в мсвс ) не приходят или не посылаются или не отлавливаются, вообщем с ними какие-то проблемы. Какие есть обходные пути? Все спасибо).


Все работает (конкретно в убунте и арче). Вот куски из работающего проекта.
void MainWindow::showHide()
{
    if (isVisible())
        hide();
    else
    {
       show();
       activateWindow();
    }
}


bool MainWindow::event(QEvent *event)
{
    if (event->type() == QEvent::WindowDeactivate)
    {
        if (qApp->activeWindow() == 0)
           hide();
    }

    return QMainWindow::event(event);
}

if (qApp->activeWindow() == 0) - Проверяем что фокус перешел к другой программе, а не на другое окно внутри этой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 12:49