Q_PROPERTY在QML中的用处
- 先看看实例吧:
OpenCVshowFrame { //anchors.centerIn: parent anchors {left:parent.left; top:parent.top} id:opencvShowFrame m_capture: opencvCamera m_frameRate: 33 m_run: true width: 640 height: 380 onWho:{ console.log(i); messageDialog.show(qsTr("ID:") + i); } }
class OpenCVshowFrame : public QQuickItem { Q_OBJECT //方便与QML控件进行交流 Q_PROPERTY(int m_frameRate READ frameRate WRITE setFrameRate NOTIFY frameRateChanged) Q_PROPERTY(bool m_run READ run WRITE setRun NOTIFY runChanged) Q_PROPERTY(QObject* m_capture READ capture WRITE setCapture NOTIFY captureChanged)
- 可以看出QML中的三个属性分别与CPP文件中的Q_PROPERTY中的三个宏定义相对应,CPP中的宏定义其实就是相当于在QML中定义的对外可见的property变量