QQmlApplicationEngine
QQmlApplicationEngine 提供从 QML 文件加载应用程序的方式。並向QML提供应用程序的功能,让 C++ 与 QML 混合编程,使用 C++ 控制业务逻辑,用 QML 做界面
setContextProperty
setContextProperty 用于在 QML中创建全局访问的 C++ 对象实例,如果要使用单个全局类来访问QML或从QML访问。这里您需要在使用 setContextProperty() 之前创建此类对象。就是说 类实列化一次,QML中可以直接使用这个类。 如:
MainController mainController;
engine.rootContext()->setContextProperty("MainController", &mainController);
则QML中可直接使用 MainController。
qmlRegisterType
qmlRegisterType 将 C++ 实现的类在QML中调用,允许在QML中实例化和使用 C++ 类,是连接C++和QML的一个工具,与 setContextProperty 不一样,全局不唯一。
如:
qmlRegisterType<AgoraWeb>("AgoraWeb",1,0,"AgoraWeb");
每个QML中 会自己实例化一份内存。
Item {
id:root
property bool isMaster: false
AgoraWeb{
id:agoraWeb
}
int qmlRegisterType(const char uri, int versionMajor, int versionMinor, const char qmlName)
- 參數1:* uri指的是QML中import後的内容,相当於頭文件名
- 參數2:主版本号
- 參數3:是次版本号
- 參數4:QML中類別的名字,首字母一定要大写,要不然会报错,而且是那种你找不到的
在main.qml文件中:
import com.mycompany.qmlcomponents 1.0 Slider { }
qRegisterMetaType
qRegisterMetaType 是为自定义类型在信号槽间传递做注册,确保信号槽连接能正确处理自定义类型的数据。
app.exec()
app.exec_()的含义是,最后一个窗口关闭后,程序才停止
沒有留言:
張貼留言