- 
    Bug 
- 
    Resolution: Duplicate
- 
    P2: Important 
- 
    5.11.0
- 
    None
- 
    Qt Creator 4.6.2
 
 Qt Creator 4.7.0 - Beta1
 
 Windows 10 Enterprise
- 
        2f4b8f159545b545d4b49cb3c1429c09522519ee
Ich habe eine Klasse als Singleton registriert.
qmlRegisterSingletonType<CTaskManager>("Singletons", 1, 0,"TaskManager", [](QQmlEngine*, QJSEngine*) -> QObject* { CTaskManager* pInstance = new CTaskManager(); return pInstance; });
Damit werden verschiedenen Aufgaben in einen seperaten Thread ausgelagert.
void CTaskManager::runAsync(CTask* task)
{
    Q_CHECK_PTR(task);
    QThread* thread  = new QThread();
    task->moveToThread(thread);
    connect(this    , SIGNAL(canceled())                                        , task  , SLOT(cancel())                                            , Qt::DirectConnection);
    connect(task    , SIGNAL(progressChanged(float))                            , this  , SLOT(setProgress(float))                                  , Qt::DirectConnection);
    connect(task    , SIGNAL(finished(bool,unsigned int, const QVariantMap&))   , this  , SLOT(setFinished(bool,unsigned int, const QVariantMap&))  , Qt::DirectConnection);
    connect(thread  , SIGNAL(started())                                         , task  , SLOT(run()));
    connect(task    , SIGNAL(finished(bool,unsigned int, const QVariantMap&))   , thread, SLOT(quit()));
    connect(thread  , SIGNAL(finished())                                        , task  , SLOT(deleteLater()));
    connect(thread  , SIGNAL(finished())                                        , thread, SLOT(deleteLater()));
    thread->start();
}
Diese Task Objekte schicken ein Signal an den CTaskManger(QML-Singleton) wenn sie abgearbeitet sind. Das Signal wird dann weitergeleitet und in QML ausgewertet.
void CTaskManager::setFinished(bool canceled, unsigned int error, const QVariantMap& args) { Q_ASSERT(true == this->running()); this->setRunning(false); emit this->finished(canceled, error, args); }
Auf QML Seite habe ich zu dem finished Signal eine Connection die dann anhand der übergebenen Parameter die weitere Auswertung übernimmt.
    Connections
    {
        target: TaskManager
        onFinished:
        {
            if (false === canceled)
            ... usw..
Der Parameter canceled sowie error und args werden im Creator als "undefined" angezeigt und können nicht ausgewertet werden.
Wird das selbe Projekt unter LINUX-Mint-Cinnamon gestartet tritt dieser Fehler NICHT auf!
- duplicates
- 
                    QTBUG-68522 V4 messes up arguments and locals in "hasDirectEval" mode -         
- Closed
 
-