簡體   English   中英

在QML中接收C ++信號

[英]Receiving C++ signal in QML

我發出信號然后用QML捕獲; 但是,當我嘗試讀取附加到信號的參數時,我得到“未定義”。 以下是一些代碼片段。 謝謝你的幫助提前!

mymodel.h

class MyModel : public QObject
{
    Q_OBJECT

    ...

    signals:
        void mySignal(float a, some::enum b)

    ...
}

mymodel.cpp

做一些事情來發出信號(這不是問題,只需emit mySignal(1.0, 2.0);

someotherclass.cpp

void SomeOtherClass :: setupQML(){...

QQuickView *view = new QQuickView();

QWidget *container = QWidget::createWindowContainer(view);

...

QmlRootData = new RootData();

view->rootContext()->setContextObject(QmlRootData);
view->rootContext()->setContextProperty("MyModel", model);
view->setSource(QUrl("main.qml"));
view->setResizeMode(QQuickView::SizeRootObjectToView);

QObject* rootObj = view->rootObject();

...

}

main.qml

Rectangle {
    Connections {
        target: MyModel
        onMySignal: console.log(a)
    }
}

上面的console.log(a)在預期時被調用; 但是,我希望輸出為“1.0”,但它只是說“未定義”,我不知道為什么。 我正在使用Qt 5.1和Qt Quick 2.0。

可能是枚舉參數在進程中導致錯誤,該錯誤將參數綁定到QML信號處理程序的上下文中。 由於這個枚舉似乎沒有作為QML的類型公開,我不相信它可以正確地將它轉換為qml,這可能會破壞整個過程。

鑒於您在發出信號時傳遞兩個浮點數,它實際上應該是兩個浮點輸入而不是浮點數和枚舉嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM