大家好我的主要有Foo类 代码foo.h中无法对C++的信号QML
Class Foo : public QObject
{
static Foo* Get(); // Singleton Pattern
Q_INVOKABLE int addFoo();
signals:
void fooAdded(int index);
public slots:
private:
QList<QString> m_fooArray;
}
守则Foo.cpp中
int Foo::addFoo()
{
QString newString = "blah.."
m_fooArray.append(newString);
emit fooAdded(m_fooArray.size()-1);
return m_fooArray.size()-1;
}
功能码是
{
Foo fooInstance;
qmlRegisterType<GUI::Foo>("xxx", 1, 0, "Foo");
engine.rootContext()->setContextProperty("fooInstance", &fooInstance);
}
现在我有两个XML的main.xml和fooTabView.qml
main.xml中的代码是
import QtQuick 2.3
import QtQuick.Controls 1.2
import xxx 1.0
ApplicationWindow {
id: appWindow
visible: true
width: 640
height: 480
FooTabView {
anchors.left: parent.left
anchors.top: parent.top
anchors.margins: 50
}
Button {
id: addFoo
x: 50
y: 59
text: qsTr("Add Connection")
onPressedChanged: fooInstance.addFoo();
}
}
现在,当我编译和调试时,我在addFoo按钮我在addFoo断点()函数被击中和信号fooAdded(指数)发出点击
在我FooTabView.qml我有下面的代码
import xxx 1.0
.....
.....
Foo.onFooAdded:
{
.....
}
但现在当我编译和调试我没有得到任何错误,但我Foo.onFooAdded从来没有命中内部断点。
我基本上希望的是,当我打的按钮,一个新富会添加到列表中,比我将有我的逻辑来创建内一个新的标签Foo.onFooAdded { ... }
有人可以告诉我,我错过了什么或做错了,我如何将fooAdded(index)信号连接到QML中的onFooAdded。
请注意,我也尝试了下面的代码也在里面FooTabView.xml但是我的断点没有被击中
Connections {
target: fooInstance
onFooAdded: {
...
}
}
我想我无论如何都必须连接到fooInstance :: onFooAdded而不是foo :: onFooAdded,但我得到,如果我改变fooInstance编译错误::提前
据我所知,当插槽接收器被破坏时,您需要调用'fooInstance.fooAdded.disconnect(...)'。 – tonytony 2014-11-29 10:46:39