Finally, animation works.
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include <QMessageBox>
|
||||
#include <QStatusBar>
|
||||
#include <QApplication>
|
||||
#include <QElapsedTimer>
|
||||
|
||||
#include <bcvaluemanager.h>
|
||||
|
||||
@@ -42,6 +43,16 @@
|
||||
using namespace Qt::StringLiterals;
|
||||
|
||||
|
||||
void processEventsFor(int milliseconds)
|
||||
{
|
||||
QElapsedTimer timer;
|
||||
timer.start();
|
||||
|
||||
while (timer.elapsed() < milliseconds) {
|
||||
QApplication::processEvents(QEventLoop::AllEvents, 50);
|
||||
}
|
||||
}
|
||||
|
||||
BCValueManager::BCValueManager(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
@@ -54,11 +65,11 @@ BCValueManager::BCValueManager(QObject *parent)
|
||||
// 4. Verbindungen herstellen (Signal/Slot über Thread-Grenzen)
|
||||
|
||||
// A) Befehl senden (Manager -> Runner)
|
||||
connect(this, &BCValueManager::newCommandArrived, &_transmitter, &BCTransmitter::enqueueValue);
|
||||
connect(this, &BCValueManager::valueCreated, &_transmitter, &BCTransmitter::enqueueValue);
|
||||
|
||||
// B) Ergebnisse empfangen (Runner -> Manager)
|
||||
connect(&_transmitter, &BCTransmitter::commandFinished, this, &BCValueManager::onCommandFinished);
|
||||
connect(&_transmitter, &BCTransmitter::messageLogged, this, &BCValueManager::onRunnerMessage);
|
||||
//connect(&_transmitter, &BCTransmitter::commandFinished, this, &BCValueManager::onCommandFinished);
|
||||
//connect(&_transmitter, &BCTransmitter::messageLogged, this, &BCValueManager::onRunnerMessage);
|
||||
|
||||
// C) Aufräumen: Wenn Thread endet, lösche den Runner
|
||||
connect(&_worker, &QThread::finished, &_transmitter, &QObject::deleteLater);
|
||||
@@ -77,14 +88,6 @@ BCValueManager::~BCValueManager()
|
||||
}
|
||||
|
||||
|
||||
void BCValueManager::transmitValue(const BCValue& value)
|
||||
{
|
||||
// Wir rufen keine Methode am Runner direkt auf!
|
||||
// Wir emitten ein Signal. Qt kümmert sich um den Thread-Wechsel.
|
||||
|
||||
emit newCommandArrived(value);
|
||||
|
||||
}
|
||||
|
||||
void BCValueManager::onCommandFinished(int id, bool success)
|
||||
{
|
||||
@@ -144,14 +147,25 @@ void BCValueManager::onSyncFromDevice()
|
||||
{
|
||||
|
||||
BCValueList& currentList = _valueModels[_currentDeviceID]->getValueList();
|
||||
for( BCValue& value : currentList )
|
||||
|
||||
BCValue& value = currentList[4];
|
||||
|
||||
for( const BCValue& value : currentList )
|
||||
{
|
||||
qDebug() << " --- value: " << value.label;
|
||||
_transmitter.enqueueValue( value );
|
||||
|
||||
// statt '_transmitter.enqueueValue( value )' entkoppeln
|
||||
// wir das eleganter über emit valueCreated()
|
||||
|
||||
//_transmitter.enqueueValue( value );
|
||||
emit valueCreated(value);
|
||||
|
||||
emit valueTouched( value.rowInModel );
|
||||
QApplication::processEvents();
|
||||
|
||||
processEventsFor(500);
|
||||
//QApplication::processEvents();
|
||||
// Thread schlafen lassen (Simulation einer blockierenden Operation)
|
||||
QThread::msleep(500);
|
||||
//QThread::msleep(500);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user