Название: [решено] вызвать сигнал только для того кто просил данные Отправлено: deMax от Ноябрь 03, 2017, 12:16 Хочу создать интерфейс классу для работы с БД:
Код: class BD{ sendQuery возвращает id запроса, чтоб понять что спрашивали. хотелось бы чтобы sendResult посылал автоматически тому кто спрашивал данные. Или лучше сделать sendResultModule1, sendResultModule2.. или отсылать всем и по id отсеивать? Название: Re: вызвать сигнал только для того кто просил данные Отправлено: qate от Ноябрь 03, 2017, 15:31 можно через invokeMethod
Название: Re: вызвать сигнал только для того кто просил данные Отправлено: deMax от Ноябрь 07, 2017, 08:40 можно через invokeMethod он текстовое имя слота просит, а хотелось бы указатель на слот передавать, как в connect. Название: Re: вызвать сигнал только для того кто просил данные Отправлено: qate от Ноябрь 07, 2017, 13:35 можно через invokeMethod он текстовое имя слота просит, а хотелось бы указатель на слот передавать, как в connect. QTimer::singleShot(0, theObject, [param](){ theObject->method(param); }); Название: Re: вызвать сигнал только для того кто просил данные Отправлено: deMax от Ноябрь 07, 2017, 14:06 В смысле, лямду использовать? Мне слот в другом потоке вызвать надо.
У меня счас N потоков работающих с БД, сигнал-слот получить-отправить и все запущенны, в классе БД(основной поток) соединяюсь со всеми сигналами-слотами в потоках. Сигнал на выполнение sql уходит всем потокам, внутри потока фильтр ( if(numThread != this->numThread) return; ). Оно работает, но сигналы лишний раз вызываются. Название: Re: вызвать сигнал только для того кто просил данные Отправлено: qate от Ноябрь 07, 2017, 14:44 В смысле, лямду использовать? Мне слот в другом потоке вызвать надо. а оно и будет в другом, см. реализацию QTimer::singleShot для случая msec == 0 - там вызов invokeMethod ) Название: Re: вызвать сигнал только для того кто просил данные Отправлено: deMax от Ноябрь 08, 2017, 08:40 Спасибо
|