1、 1.我们先看以下图片所示的文件,这是一个小程序,但很有学习的意义。这里有test.h与test.cpp文件则两个文件主要的作用是用于与qml界面数据的交互的,而main.cpp当然就是存放着这个小程序的主函数。 main.qml则是qml的ui设计部分,由于用来学习,就不写那么复杂了;最后一个就是会被很多人忽略的一个文件就是资源文件,资源文件很重要,作用时添加所要用的文件,这里只添加了qml文件,没有添加就会导致qml文件找不到进而程序错误。
2、 2. 这是test.h头文件,该头文件拥有Q_PROPERTY的方法以供qml使用,READ即是qml的可读数据,WRITE即为可写数据,NOTIFY则是触发的信号。其实Q_PROPERTY宏定义具有多达十个参数,这里只用到三个参数,这里的id与name都可以被qml使用。getId()与getName()则是读取的方法,setId()与setName()则是写数据。
3、 3.这是test.cpp文件,该文件是对test.h的函数实现。这里有一个构造函数TestAdd::TestAdd()里面是初始化m_name与m_id参数,当qml调用时候则是初始化这些的值。
4、 4. 下图的是main.cpp文件,该文件主要存放的是主函墙绅褡孛数,QDeclarativeVi髫潋啜缅ew是一个创建一个qml实例,而setSource()是设置一个qml文件,用来引用该界面。然后就是connect()函数是对c++的信号,quit()函数则是当qml调用qt.quit()则触发quit()信号从而退出程序。这里有一个重点就是viewer.rootContext()->setContextProperty("test1", &test);该函数是set一个上下文环境进qml,换言之就是让test对象可以被qml使用。这一句非常关键,没有这一句test对象在qml将会无法使用。
5、 5.最后的一个文件就是main.qml文件了,该文件test1.name则是调用了qt的test的方法,以使得qml可以调用test对象的name值,由于name的初始值是“Qml&&Qt”则会在这里的文本显示。
6、 6.最后总结一下:①.使用qml时候需要设置资源文件,就是.qrc后缀的文件,该文件是需要手动添加qml资源,否则无法进行加载qml所显示的文件;②.Qml与qt的数据交互特点是,在qt创建对象(test),然后setContextProperty上下文环境,进而使得qml可以使用该上下文;③.文章这里虽然有statusChanged信号函数,没有用到,我们还可以利用该信号函数做一些其它的附加行为也是可以的。