无法分配给不存在的默认属性

时间:2017-02-28 07:07:04

标签: multithreading qml

我无法在新线程中捕获图像 你能告诉我这是什么意思吗?

import qyvlik.thread.runnable 0.1   
import qyvlik.utility 0.1
import QtMultimedia 5.5
QmlRunnable
{
    id: runnable

    Camera
    {
        id: cam
    }

    onMessageReceived:
    {
        cam.imageCapture.capture()
    }
}

编辑(@ derM):似乎this是第三方模块的来源。

3 个答案:

答案 0 :(得分:3)

@KevinKrammer指出:

出现错误,因为您的班级QmlRunnable没有default property,您的Camera - 对象可以分配到该错误。这是QML中大多数非Item-QObjects的标准。

你班级的作者知道这个问题,因此他定义了一个属性来存储他的DirSize

中的import qyvlik.thread.runnable 0.1 import qyvlik.utility 0.1 QmlRunnable { id: runnable readonly property var __: DirSize { id: dirsize } onMessageReceived: { console.time("dirsize") sendMessage(dirsize.dirSize(message)); console.timeEnd("dirsize") } } - 对象

示例

import qyvlik.thread.runnable 0.1
import qyvlik.utility 0.1
import QtMultimedia 5.5
QmlRunnable
{
    id: runnable

    property Camera cam: Camera // <--- create a property to assign it to.
    {
    }

    onMessageReceived:
    {
        cam.imageCapture.capture()
    }
}

从此我想解决方案就是:

function comp( date)
{
    var dates = date;
    var flag = false;
    for( var i = 0 ; i < dates.length-1; i++)
    {
        var firstdate  = new Date(dates[i]);
        firstdate.setDate(firstdate.getDate() + 1);
        var seconddate  = new Date(dates[i+1]);
        if(seconddate.getTime() == firstdate.getTime())
        {
            flag = true;
        }
        else 
        {
            flag = false;
            return flag;
        }

    }
    return flag;
}

function compare()
{
    var days = ['2017-02-28', '2017-03-02', '2017-03-03', '2017-03-04'];
    var abc = comp(days);
}

答案 1 :(得分:0)

您正在使用某些第三方QML模块,其中一个明显提供QmlRunnable类型。

如果没有关于该类型的任何信息,例如其文档的链接,则错误会表明它是没有默认属性的信息。

当您尝试在Camera内创建QmlRunnable对象时,引擎会尝试将该实例分配给“父级”默认属性。

同样,在不了解类型的情况下,很难提供任何帮助。

答案 2 :(得分:0)

好吧,QmlRunnable不能使用gui类,因为它是不确定行为