LINUX.ORG.RU

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

 , ,


0

1

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

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

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

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

★★★★★

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

wolph ★★ ()

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

HerrWeigel ★★★★ ()

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

KblCb ★★★★★ ()

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

WRG ★★★★ ()

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

и метод setProcessing(bool flag)

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

if(!isProcessing) return

тадададам

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

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

Нет

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

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

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

if(!isProcessing) return

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

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

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

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

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