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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [решено] Закрывать диалог только программно  (Прочитано 5276 раз)
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« : Июнь 09, 2011, 19:35 »

Собственно весь вопрос в заголовке темы. Есть QDialog (модальный для всего application), у него есть флаги Qt::CustomizeWindowHint и Qt::WindowTitleHint - чтоб никаких кнопок не было и надо иметь возможность закрыть его только программно (чтобы alt+f4 и esc его тоже не закрывали). Сам по себе это диалог ввода логина/пароля и если данные не верны, то дальше не пускает, обычное дело вобщем-то.

п.с.
и не хотелось бы перегружать keyPressEvent() и там фильтровать нажатия, мало ли как ещё можно закрыть
« Последнее редактирование: Июнь 09, 2011, 19:52 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
BRE
Гость
« Ответ #1 : Июнь 09, 2011, 19:42 »

Собственно весь вопрос в заголовке темы. Есть QDialog (модальный для всего application), у него есть флаги Qt::CustomizeWindowHint и Qt::WindowTitleHint - чтоб никаких кнопок не было и надо иметь возможность закрыть его только программно (чтобы alt+f4 и esc его тоже не закрывали). Сам по себе это диалог ввода логина/пароля и если данные не верны, то дальше не пускает, обычное дело вобщем-то.
Так не бывает.  Улыбающийся
Если пользователь хочет запустить программу и знает пароль, то он его вводит и жмет Ок, а если не хочет/не знает, то жмет Отказ (Alt+F4, Esc) и приложение закрывается.
Записан
BRE
Гость
« Ответ #2 : Июнь 09, 2011, 19:43 »

и не хотелось бы перегружать keyPressEvent() и там фильтровать нажатия, мало ли как ещё можно закрыть
Alt+F4 ты никак в приложении не поймаешь.
Записан
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #3 : Июнь 09, 2011, 19:48 »

хотя да, по closeEvent() диалога можно закрыть приложение же.
А то я что-то застопорился именно на кнопке "отмена" диалога)). Пару суток не спал, голова болит, потому и соображается не шибко.
Пасиб
« Последнее редактирование: Июнь 09, 2011, 19:50 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
serg_hd
Хакер
*****
Offline Offline

Сообщений: 668



Просмотр профиля
« Ответ #4 : Июнь 09, 2011, 19:57 »

Хотя это будет работать только для alt+f4. Для esc допишу
Код
C++ (Qt)
void MyClass::keyPressEvent(QKeyEvent* event)
{
if (event->key() == Qt::Key_Escape)
 this->QDialog::close();
}
 
такой подход правильный же, надеюсь, будет
« Последнее редактирование: Июнь 09, 2011, 20:18 от serg_hd » Записан

kubuntu/Win7/x64/NetBeans
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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