Russian Qt Forum
Ноябрь 24, 2024, 02:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как временно запретить выполнение слотов?  (Прочитано 4456 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Декабрь 30, 2015, 00:56 »

Нужно мне временно, на период выполнения некоторых действий, запретить объекту обрабатывать сигналы. Другими словами, надо запретить выполнение слотов.

Я нашел только метод QObject::blockSignals(bool block).

А нужно нечто наподобие QObject::blockSlots(bool block), но такого метода нет.

Как сделать запрет выполнения слотов?
Записан

Собираю информацию по крупицам
http://webhamster.ru
Bepec
Гость
« Ответ #1 : Декабрь 30, 2015, 00:59 »

Т.е. вы хотите запретить полностью выполнение слотов, даже если их вызовут как обычные методы?
Ну тут я не вижу другого выхода как страж. Условие воткнуть с булевской переменной, если кто не понял.
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #2 : Декабрь 30, 2015, 01:08 »

Т.е. вы хотите запретить полностью выполнение слотов, даже если их вызовут как обычные методы?
Ну тут я не вижу другого выхода как страж. Условие воткнуть с булевской переменной, если кто не понял.

И в каждый слот прописывать условие?

Это как-то ненадежно.

Может быть, можно хотя бы получить перечень определенных пользователем слотов?
Записан

Собираю информацию по крупицам
http://webhamster.ru
Bepec
Гость
« Ответ #3 : Декабрь 30, 2015, 05:17 »

Можно получить  все слоты, но это работает исключительно с наличием дебажной информации.
Код:
const QMetaObject* metaObject = this->metaObject();
    QStringList methods;
    for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
        methods << QString(metaObject->method(i).methodSignature());

blockSignals вам в принципе же подходит. Другой вопрос что вам возможно неудобно будет управлять объектом, но тут уже от задачи зависит.

PS не вижу проблемы.
« Последнее редактирование: Декабрь 30, 2015, 05:27 от Bepec » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Декабрь 30, 2015, 11:03 »

Можно получить  все слоты, но это работает исключительно с наличием дебажной информации.
Ерунда. Это прекрасно работает и исключительно без наличия дебажной информации. Улыбающийся
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Декабрь 30, 2015, 11:23 »

Наверное всё-таки стоит сначала изучить азы, чтобы впредь таких вопросов не возникало.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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