连接c+时发出警告+;到qml插槽的信号 < >我在QT4.8中连接一个C++信号到QML函数。它工作正常,但在应用程序输出中发出警告,如下所示:

连接c+时发出警告+;到qml插槽的信号 < >我在QT4.8中连接一个C++信号到QML函数。它工作正常,但在应用程序输出中发出警告,如下所示:,c++,qt,qt4,qml,qt-quick,C++,Qt,Qt4,Qml,Qt Quick,对象::连接:没有这样的插槽QDeclarativeItem\u QML\u 9::onValue\u已更改(双精度) 对象::connect:(发送方名称:“MyWidget”) 我对qml插槽的定义如下: import QtQuick 1.0 Item { id: root property real value : 0 Connections { target: controllerObject o

对象::连接:没有这样的插槽QDeclarativeItem\u QML\u 9::onValue\u已更改(双精度) 对象::connect:(发送方名称:“MyWidget”)

我对qml插槽的定义如下:

import QtQuick 1.0

Item {
    id: root
    property real value : 0

    Connections
        {
            target: controllerObject
            onValue_changed :
            {
                root.value = value
            }
        }
}
<这是我的C++信号,它是如何连接到QML时隙:< /P>
ui->view->rootContext()->setContextProperty("controllerObject",this);
ui->view->setSource(QUrl("qrc:/myQml.qml"));
ui->view->setStyleSheet("background-color: rgba(255, 255, 255, 0);");
ui->view->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing);
ui->view->setResizeMode(QDeclarativeView::SizeRootObjectToView);

connect(this,SIGNAL(value_changed(double)),(QObject *)ui->view->rootObject(),SLOT(onValue_changed(double)));
为什么要发出这样的警告

如何省略警告

我对qml插槽的定义如下:

import QtQuick 1.0

Item {
    id: root
    property real value : 0

    Connections
        {
            target: controllerObject
            onValue_changed :
            {
                root.value = value
            }
        }
}
你错了。这不是插槽定义,而是连接本身 (为对象
controllerObject
的信号
value\u添加的QML处理程序已更改)。
这就是你编写代码的原因。但在这方面:

连接(此,信号(值更改(双)),(QObject*)ui->view->rootObject(),插槽(值更改(双))

您正在尝试将现有信号
value\u changed
连接到不存在的
onValue\u changed
(显然,它存在于代码中,但不存在于视图的
rootObject
中)。 这就是为什么你会得到警告

结论
您尝试了两次连接信号,但只有一种方法成功,所以代码运行良好

我对qml插槽的定义如下:

import QtQuick 1.0

Item {
    id: root
    property real value : 0

    Connections
        {
            target: controllerObject
            onValue_changed :
            {
                root.value = value
            }
        }
}
你错了。这不是插槽定义,而是连接本身 (为对象
controllerObject
的信号
value\u添加的QML处理程序已更改)。
这就是你编写代码的原因。但在这方面:

连接(此,信号(值更改(双)),(QObject*)ui->view->rootObject(),插槽(值更改(双))

您正在尝试将现有信号
value\u changed
连接到不存在的
onValue\u changed
(显然,它存在于代码中,但不存在于视图的
rootObject
中)。 这就是为什么你会得到警告

结论
您尝试了两次连接信号,但只有一种方法成功,所以代码运行良好

我对qml插槽的定义如下:

import QtQuick 1.0

Item {
    id: root
    property real value : 0

    Connections
        {
            target: controllerObject
            onValue_changed :
            {
                root.value = value
            }
        }
}
你错了。这不是插槽定义,而是连接本身 (为对象
controllerObject
的信号
value\u添加的QML处理程序已更改)。
这就是你编写代码的原因。但在这方面:

连接(此,信号(值更改(双)),(QObject*)ui->view->rootObject(),插槽(值更改(双))

您正在尝试将现有信号
value\u changed
连接到不存在的
onValue\u changed
(显然,它存在于代码中,但不存在于视图的
rootObject
中)。 这就是为什么你会得到警告

结论
您尝试了两次连接信号,但只有一种方法成功,所以代码运行良好

我对qml插槽的定义如下:

import QtQuick 1.0

Item {
    id: root
    property real value : 0

    Connections
        {
            target: controllerObject
            onValue_changed :
            {
                root.value = value
            }
        }
}
你错了。这不是插槽定义,而是连接本身 (为对象
controllerObject
的信号
value\u添加的QML处理程序已更改)。
这就是你编写代码的原因。但在这方面:

连接(此,信号(值更改(双)),(QObject*)ui->view->rootObject(),插槽(值更改(双))

您正在尝试将现有信号
value\u changed
连接到不存在的
onValue\u changed
(显然,它存在于代码中,但不存在于视图的
rootObject
中)。 这就是为什么你会得到警告

结论

您尝试了两次连接信号,但只有一个方法成功,因此代码运行良好。

谢谢您的回答。谢谢您的回答。谢谢您的回答。谢谢您的回答。谢谢您的回答。