У меня есть программа Qt со многими кнопками, интерактивными виджетами и т. Д.
На одном этапе программы я бы хотел, чтобы все виджеты временно «перестали работать»; перестаньте реагировать на щелчки мышью и вместо этого передайте событие одной функции.
(Это значит, что пользователь может выбрать виджет для выполнения мета-операций. Объяснение части здесь: Получить имя переменной Qt Widget (для использования в таблице стилей)? )
Пользователь выбирает виджет (для работы с ним), щелкая его, и, конечно, нажатие кнопки не должно приводить к запуску функции привязки кнопки.
Каков правильный (самый абстрактный, разумный) способ сделать это?
(который не требует слишком много нового кода. т.е. не разбивает на подклассы каждый виджет)
Есть ли в Qt что-нибудь для этого?
Пока я могу получить список всех виджетов в программе (вызывая
QObject.findChildren(QtGui.QWidget)
чтобы решение могло включать это.
Мои нынешние ужасные идеи таковы;
- Кое-как, как обрабатывать все события приложений все время в одном
функция и не пропуская события, когда мне нужно
заявка на бездействие.
- Когда мне нужно покой, создайте новый прозрачный виджет, который получает
щелкнуть мышью и растянуть его по всему окну. Взять координаты
нажмите и выясните виджет внизу.
- Каким-то образом создайте новый экземпляр 'shell' окна.
СПАСИБО!
(Извините за ужасную переписку; в небольшом порыве)
Python 2.7.2
PyQt4
Windows 7