Qml的一些细节

1、除了main.qml文件名的首字母可以小写以外,其它的.qml文件名的首字母都要大写。

2、在main.qml定义的(根item除外)MouseArea局部有效,在其它的.qml定义的MouseArea全局有效。

3、帮助文档没列出的方法、成员变量、信号、槽,可以利用代码提示得到,如:TreeView的__currentRow。

4、C++暴露方法给Qml时,传递的变量是强类型,而Qml的ECMAScript传递的变量是弱类型

5、C++的方法要定义为public slots才可以暴露方法给Qml,而private slots不可以。

6、在C++或Qml调用图片、视频等资源文件时,需要先添加到工程,才可以调用,调用时以工程的相对路径为准。

7、删掉了某一资源文件,编译时出错,可以删掉release、debug整个文件夹,重新编译就可以了。

8、如果要用鼠标拖动一个Rectangle,那么这个Rectangle不能使用锚布局,只能用x、y、width、height来布局,拖动时,改变x、y即可。

9、TextField有inputMask属性,可以限制输入文字的范围。

10、在qml上使用过多Timer,可能导致界面有点卡,用c++开个timer线程再发射信号到qml即可解决。

11、修改了除main.qml以外的qml文件,发现编译时现象跟代码不相符,可以删掉release、debug整个文件夹再重新编译,或者重新构建项目,再编译就可以了(Qt5.7.0才有这个bug,Qt5.9.2没有)。

12、对于所有item的text属性,建议使用qsTr("");,加上分号可以减少build project时的警告。

13、qml调用C++对象时,C++对象的构造函数会执行两次,这时可以把该构造函数内容写在qml的Component.onComplete中。


你可能感兴趣的:(QT)