• Qt signals Меня откровенно достало вручную блокировать сигналы каждый раз как мне надо задать текст элемента из программного кода, так что я склепал из различных решений в интернете простенький механизм на основе function wrappper`а который сначала блочит сигналы, потом выполняет функцию, потом сразу же разблокирует сигналы.
    codepad.org

    Для работы — подключаете как хедер и оборачиваете вызов напрмиер так:
    SilentCall(ui.lineEdit)->SetText(tr("Whatever"))
    ♡ recommended by @fuze

Replies (3)

  • @zeks, почему нужен QSignalBlockerCallProxy? почему нельзя вызывать o->blockSignals( false ); нутри деструктора QSignalBlocker ?
  • @sany, ты знаешь — не знаю. Методика взята из Страуструпа "Wrapping C++Member Function Calls". Завтра сам собирался проверить от что ты предложил — видимо есть подводные камни.
  • @zeks, а хотя нет — знаю. у страуструпа этот метод подразумевает постоянное существование объекта враппера на протяении некоторого времени. в моём случае и правда можно упростить