crossplatform.ru

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

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


Студент
*

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

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




Репутация:   0  


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


Активный участник
***

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

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




Репутация:   6  


Может следует сначала попробовать отловить событие потери фокуса?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 26.9.2011, 22:58
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 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) - Проверяем что фокус перешел к другой программе, а не на другое окно внутри этой.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.11.2024, 20:57