【问题标题】:qml c++ signal slot not workingqml c++ 信号槽不工作
【发布时间】:2012-11-01 11:38:40
【问题描述】:

在下面的 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")
      }
    }

【问题讨论】:

    标签: c++ qt signals qml slot


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    相关资源
    最近更新 更多