Qt Quick 是一种高级用户界面技术,使用它可轻松地创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。三种全新的技术共同构成了 Qt Quick 用户界面创建工具包:一个改进的Qt Creator IDE、一种新增的简便易学的语言 (QML) 和一个新加入 Qt 库中名为 QtDeclarative 的模块即Qt Declarative UI,这些使得 Qt 更加便于不熟悉 C++ 的开发人员和设计人员使用。
研究了几天QML,我想编程人员最关心的还是QML怎样与C++ Application交互了。发现网上QT中文资料很少,唉,只能参照官网文档:
一、QML引用C++对象
//main cpp #include <QApplication> #include <QDeclarativeView> #include <QDeclarativeContext> int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; QDeclarativeContext *context = view.rootContext(); context->setContextProperty("backgroundColor", QColor(Qt::yellow)); view.setSource(QUrl::fromLocalFile("main.qml")); view.show(); return app.exec(); } //main.qml import Qt 4.7 Rectangle { width: 300 height: 300 color: backgroundColor Text { anchors.centerIn: parent text: "Hello Yellow World!" } } |
对于C++中自定义的类:
//main cpp #include <QApplication> #include <QDeclarativeView> #include <QDeclarativeContext> int main(int argc, char *argv[]) { QApplication app(argc, argv); QDeclarativeView view; view.rootContext()->setContextProperty("palette", new CustomPalette); view.setSource(QUrl::fromLocalFile("main.qml")); view.show(); return app.exec(); } //main.qml import Qt 4.7 Rectangle { width: 240 height: 320 color: palette.background //调用C++的类 Text { anchors.centerIn: parent color: palette.text text: "Click me to change color!" } MouseArea { anchors.fill: parent onClicked: { palette.text = "blue"; } } } |