qml c ++信号槽无法正常工作

时间:2012-11-01 11:38:40

标签: c++ qt signals qml slot

在下面的C ++代码中,我加载了一个qml文件。但是c ++插槽无法正常工作。没有出现错误或警告,但调试消息始终是“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")
      }
    }

1 个答案:

答案 0 :(得分:3)

问题是 Component.onCompleted 在您调用 QObject :: connect(...)之前发生。即调用 view-&gt; setSource(...)时会创建qml中的Rectangle,并在将信号连接到插槽之前调用 Component.onCompleted 。所以 qmlLoadedProcess()永远不会被调用。