Привет всем У меня есть класс Foo код в foo.hне в состоянии соединить кесарево сигнал ++ к слоту в 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 добавляются в список и чем я буду иметь свою логику, чтобы создать новую вкладку внутри Foo.onFooAdded { ... }
Может кто-то пожалуйста, скажите мне, что я не хватает или делать неправильно, и как я могу подключить сигнал fooAdded (index) к onFooAdded внутри QML.
Обратите внимание, я также попытался код ниже и внутри FooTabView.xml, но до сих пор моя точка останова не попал
Connections {
target: fooInstance
onFooAdded: {
...
}
}
Я думаю, что я как-то подключиться к fooInstance :: onFooAdded и не Foo :: onFooAdded, но я получаю ошибку компиляции, если я перейти к fooInstance :: onFooAdded
заранее спасибо
Насколько я знаю, вам нужно вызвать 'fooInstance.fooAdded.disconnect (...)', когда слот-ресивер будет уничтожен. – tonytony