crossplatform.ru

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

bigory
  опции профиля:
сообщение 27.10.2010, 22:30
Сообщение #1


Студент
*

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

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




Репутация:   0  


Всем доброе время суток!
Я пишу программу, где должна быть кнопка полной блокировки. Нажав на эту кнопку, все кнопки, меню, управляющие кнопки,границы окна перестают слушаться, только одна кнопка должна отвечать и работать процессы, происходящие в программе. При нажатии на эту кнопку, окно запрашивает пароль, если он введен правильно, то все окно разблокировывается. Мне удалось сделать такую кнопку, но она блокирует только меню, кнопки и запрещает закрытие программы.
Подскажите как можно при установке значение False, запретить сворачивания окна в панель, разворачивание окна на полный экран или сворачивание в окно, изменять размеры окна вручную, перетаскивать окно по экрану.
Какие у них функции и как ими работать?

Если кому интересно зачем мне это, то скажу в кратце. Представьте что это администраторская программка и за ним сидит админ. Админ это же тоже человек, ему нужно куда-то выйти или поговорить с кем-то, но не хочет чтобы кто-то работал с его программой. Он просто нажимает на кнопку заблокировать и уходит, а как придет, нажимает разблокировать и вводит пароль
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
Алексей1153
  опции профиля:
сообщение 28.10.2010, 0:10
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


если бы это было под виндой, то я бы просто создал локальную петлю обработки сообщений системы. Только WM_PAINT бы пропускал наружу, чтобы не стёрлись все остальные окна приложения. Как это провернуть под Qt- не знаю, не разбирался, но наверняка тоже можно

вроде
void QObject::installEventFilter ( QObject * filterObj )

Сообщение отредактировал Алексей1153 - 28.10.2010, 0:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 28.10.2010, 0:46
Сообщение #3


Студент
*

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

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




Репутация:   0  


Может я не совсем коректно пояснил чего хочу..
Возьмем программу, которая закачивает данные с инета. Сидеть и следить чтобы никто не подошел и не вырубил его слишком нудно. Есть кнопочка, которая ограничит на время функционал, то есть программа не будет слушаться пользователя: не будет закрываться при нажатии на крестик, не реагируют никакие кнопки, окно не хочет сворачиваться и перемещаться, но сама пробграмма продолжает закачивать данные. Вот приходит тот кто поставил ее на блокировку, нажимает на определенную кнопку, вводит пароль, вот после этого программа отвечает на все запросы пользователя.

Например, изщбежать закрытия программы, мы просто пишем
void MainWindow::closeEvent(QCloseEvent *event)
{ 
        if(...) // ставим условие при котором мы не хотим чтобы программа закрывалась при нажатии на крестик 
                    или вызова функции close();
        {
                 event->ignore();
         }


При этом что ни вызывай, что ни нажимай в прогроамме, прога не закроется. Можжно только через диспетчер задач.

Вот что-то типа этого хотел бы узнать как остальное блокировать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 28.10.2010, 4:50
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

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




Репутация:   1  


Ну а если выставить fixed size и просто убрать панель с крестиком,сворачиванием/разворачиванием?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.10.2010, 6:23
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


bigory,
1) можно сделать как я показал. Это более надёжно
2) как уже готовый вариант пункта №1: можно просто модальное окно вывести, которое закроется только при вводе пароля в его окошко. А чтобы глаза не мозолило - по таймеру делать прозрачным или невидимым. При получении фокуса (щёлкнули по основному окну или по модальному диалогу) невидимость убирать

Сообщение отредактировал Алексей1153 - 28.10.2010, 6:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2010, 20:43
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


bigory, Алексей1153 предложил наиболее удобный способ
Цитата(Алексей1153 @ 28.10.2010, 3:10) *
void QObject::installEventFilter ( QObject * filterObj )
, нужно пропускать только события рисования (пусть их базовый класс обрабатывает), и проверять комбинацию кнопок. на все остальные возвращать "true"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.10.2010, 20:47
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(Litkevich Yuriy @ 28.10.2010, 23:43) *
на все остальные возвращать "true"

наверное, просто return )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2010, 20:53
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 28.10.2010, 23:47) *
просто return )
нет, функция возвращает булевое значение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 28.10.2010, 20:56
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


прикольно, у меня в справке креатора совсем другой прототип
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.10.2010, 21:14
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Алексей1153 @ 28.10.2010, 23:56) *
прикольно, у меня в справке креатора совсем другой прототип
не путай две функции, они работают в паре:
void QObject::installEventFilter ( QObject * filterObj ) - устанавливает фильтр соытий на какой-либо объект
bool QObject::eventFilter ( QObject * watched, QEvent * event ) [virtual] - сам фильтр
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.7.2025, 22:46