LINUX.ORG.RU

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

 ,


0

1

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

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

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

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

★★★★★

Единственный вариант, который пока пришел в голову: переопределить QObject::connect, чтобы он еще куда-нибудь сохранял информацию о сделанных соединениях.

HerrWeigel ★★★★
()

В Qt5 слотов как таковых нет. Любая функция может быть слотом. Теперь внимание вопрос: как запретить произвольному объекту обрабатывать вызовы функций-членов?

KblCb ★★★★★
()

Ну как вариант можно временно отсоединить слоты, которые не должны выполняться.

WRG ★★★★
()

внутри класса делаешь bool isProcessing

и метод setProcessing(bool flag)

в каждом слоте проверку делаешь

if(!isProcessing) return

тадададам

MikeDM ★★★★★
()
Ответ на: комментарий от wolph

А разве это не одно и то же? Слоты то по сигналам выполняются.

Нет

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

ТС, если нужен грязный хак, то добавить в Объект поле «bool active» и в начале каждого метода писать «if (!active) return;»

JANB
()
Ответ на: комментарий от JANB

мое почтение. вторым тоже быть почетно =)

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

if(!isProcessing) return

+1, всегда так делаю, без шуток

P.S. третийн.. расчет окончен )))))

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

А я бы просто сделал disconnect/connect

UVV ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.