Ich schreibe einige Threads in Qt und ich kann nicht herausfinden, wie man ein Prädikat an meine Zustandsvariable weiterleitet, um sich vor einem unerwünschten Aufwachen zu schützen.Übergeben Sie ein Prädikat an QWaitCondition?
Arbeitslösung in C++:
std::mutex(mu);
std::condition_variable cond;
std::unique_lock<mutex> alpha_lock(mu);
cond.wait(alpha_lock, [](){ return //some condition;});
alpha_lock.unlock();
//Continue to do stuff...
Qt-Äquivalent:
QMutex mu;
QWaitCondition cond;
QMutexLocker alpha_lock&(mu);
cond.wait(&mu, [](){return //some condition;})
Fehler:
"no matching member function for call to wait"
Alle Ideen, wie ein Prädikat in diesem Qt-Code verwenden?
Wo sehen Sie Dokumentation, die Sie einen Rückruf an QaitCondition übergeben können? Ich sehe nichts. http://doc.qt.io/qt-5/qwaitcondition.html Ich schätze, Sie wickeln es einfach in eine While-Schleife. while (! condition_to_test) qtwaitcondition.wait(); – xaxxon
Die wirkliche Frage ist: Da Sie eine funktionierende Lösung haben, die Standard C++ verwendet, warum beschränken Sie sich, indem Sie es umwandeln, um Qt zu verwenden? Gibt es einen Grund, warum Sie Ihre funktionierende C++ Lösung nicht verwenden können? – IInspectable
@Intensible Dies ist für eine Desktop-App, daher Qt-Verträge verwenden, um sicherzustellen, vollständig plattformübergreifend kompatibel –