В коде C ++ ниже я загружаю файл qml. Но слот с ++ не работает. Не возникает ошибок или предупреждений, но сообщение отладки всегда является символом «a». Символ «b» не появляется. Ты можешь сказать мне, почему? Благодарю.
код стороны c ++
::::::::::::::
view=new QDeclarativeView;
view->setSource(QUrl("qml/groundMenu/Ground.qml"));
rootObject = dynamic_cast<QObject*>(view->rootObject());
QObject::connect(rootObject, SIGNAL(qmlSignal()),this, SLOT(qmlLoadedProcess()));
:::::::::::::::::
void MainWindow::qmlLoadedProcess()
{
qDebug()<<"b";
}
//qml side code
Rectangle
{
signal qmlSignal()
Component.onCompleted:
{
qmlSignal()
console.log("a")
}
}
Проблема в том, что Component.onCompleted происходит до того, как вы назвали QObject :: подключить (…). То есть Прямоугольник в qml создается при вызове view-> setSource (…) и Component.onCompleted вызывается перед подключением сигнала к слоту. Итак qmlLoadedProcess () никогда не звонят.
Других решений пока нет …