Здравствуйте!
Задача: отловить в QML файле сигнал и в дальнейшем в бэкенде передать значения в нужный слот.
В одном месте проекта все работает, а в этом нет.
Есть кнопка:
Button {
id: deleteNewsButton
text: "Del"
onClicked: {
mainWindow.deleteNews(id)
}
}
Начало моего "прямоугольника":
Rectangle {
id: mainWindow
visible: true
width: 800
height: 600
signal deleteNews(int news_id)
// ...
Кстати, вот этот код спокойно выводит в консоль ID:
Component.onCompleted: {
mainWindow.deleteNews.connect(test)
}
function test(news_id) {
console.log("News ID: " + news_id)
}
То есть, вроде, все работает в этой части.
Переходим в бэкенд.
Слот:
public slots:
void deleteNews(int news_id);
И, наконец, connect:
QQuickView *view = new QQuickView;
view->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
view->show();
QObject *object = view->rootObject();
QObject::connect(object, SIGNAL(deleteNews(int)), this, SLOT(deleteNews(int)));
// connect(object, SIGNAL(deleteNews(int)), this, SLOT(deleteNews(int))); // аналогичная ситуация
void MainWindow::deleteNews(int news_id) {
qDebug() << "DELETE " << news_id;
}
В результате в консоль ничего не пишет. Этот connect, судя по всему, вообще игнорируется.
Что делаю не так? Подскажите, пожалуйста.