add qCallQueued

This commit is contained in:
2024-10-14 18:36:04 +03:00
parent dd4695780d
commit 744d689eee

View File

@@ -44,6 +44,20 @@
PIQt::qpiConnect(src, &decltype(PIQt::removePtr(src))::sig, tgt, &(tgt)->__stat_eh_##handler##__); PIQt::qpiConnect(src, &decltype(PIQt::removePtr(src))::sig, tgt, &(tgt)->__stat_eh_##handler##__);
/// much more compact and easy to use alternative to QMetaObject::invokeMethod(... , Qt::QueuedConnection)
/// examples:
/// qCallQueued(this, &MyClass::myFunc);
/// qCallQueued(this, &MyClass::myFuncWithInt, 0xFF);
/// qCallQueued(this, &MyClass::myFuncWithIntAndString, 0xAB, "string");
template<typename O, typename F, typename... Args>
void qCallQueued(O * o, F f, Args... args) {
QMetaObject::invokeMethod(
o,
[o, f, args...]() { (o->*f)(args...); },
Qt::QueuedConnection);
}
namespace PIQt { namespace PIQt {
template<typename T> template<typename T>