首页 > 编程知识 正文

qml界面实例,天书奇谈绑定属性

时间:2023-05-05 00:58:53 阅读:54956 作者:466

另一方面,引言属性绑定是QML的核心特性,可以指定不同对象属性之间的关系。 属性的依存关系值更改时,该属性将根据指定的关系自动更新。

在后面,QML引擎监视属性依赖关系,即绑定表达式中的变量。 检测到更改后,QML引擎会重新计算绑定表达式,并将新结果应用于属性,以实现对象与其他对象之间的属性绑定。

总之,属性绑定关系存在于多种QML对象类型之间,是QML的核心特性之一。

二、如何进行qml属性绑定用qml进行属性绑定的主要三种方法:

(1)冒号(: )绑定属性。 如下所示。 text (将id : text1x 3360205 y 3360176 width 3360230 height 336040///slider的value属性绑定到text 1的text。如果slider的value值更改, text1显示文本text:qstr('%1'.arg ).value )将发生变化font.pixel size :33 horizontal alignment : text.alignhcentent 注意: **QML属性绑定是单向的*单向是指slider的value值改变时文本1的显示文本改变; 但是,不能相反。

)2) Qt.bing ) )使用函数绑定属性,如下所示:

button { id : buttonx :270 y :253 text : qstr (请单击() onclicked: ) text1.text=Qt.binding ) function 使用类型绑定属性{ target : text1property : ' text ' value 3360 slider.value }三、使用qml属性绑定心得和绑定属性是必需的但是,如果在绑定后从JavaScript语句中为属性指定静态值,则会删除绑定。 【这一点特别重要】

下一个代码

window { id : window width :640 height :480 visible :真彩色3360 ' # 99c4e9' title : qstr (hello world ' ) } text { id : text 1x :205 y :176 width :230 height 336040 text : qstr (' %1'.arg ) slider.value ) } font.pixel size :33 horizontal alignment : text.alignhcenterverticalalignment 3360 text.align vcenter } button { id : buttonx :270 y :253 text : qstr ('请单击() onclicked: )//运行此单击事件处理函数时,文本1中的然后,//text1对象将从slider对象中解除绑定。 【那么滑动slider不会改变文本1中的文本】text1.text=qstr('999 ); } slider { id : sliderx :459 y :105 width :40 height 3360315 to 3360100 orientation : Qt.vertical value 3360 } } )2)在覆盖属性绑定的调试qml APP应用程序中出现错误的一个常见原因是意外地使用JavaScript语句的静态值来覆盖绑定。 为了跟踪这些问题,QML引擎会在被强制分配且绑定丢失时发出提示消息。

要生成提示信息,必须按如下方式启用qt.qml.binding.removal日志类别的信息输出:

在main.c的main函数下,添加以下代码【#请注意使用#include QLoggingCategory包含此类】:

日志目录:3360 set filter rules (qstring literal (' Qt.qml.binding.removal.info=true ' ); 在中,如果在开发过程中遇到“属性绑定覆盖”情况,控制台将打印提示消息,如下所示:

)3)使用" this "解析属性绑定的歧义类似于以下代码: 在Item范围内,width是指Item的宽度,而不是Rectangle的宽度。 要将Rectangle的高度绑定到自己的宽度,绑定表达式必须显式引用this.Width (或rect.width )。

item { width :500 height :500 rectangle } id : rectwidth :100 color : ' yellow ' } component.on completed 3:60 { red 1000 console.log (rect.height=' rect.height ) )4) qml和c混合开发类型的属性绑定必须添加NOTIFY字段才能合并为c

如果q _ property (qstringm _ agereadgetagewritesetagenotifyagechanged )属性值在c中更改,则必须发送由notify指定的属性更改信号。 否则,属性绑定可能也不会生效。 【这非常重要! 】

)5)如何实现对象之间的双向绑定,这可以通过在两个对象之间分别进行一次属性绑定来实现双向绑定。

现在,如果进行与c混合的编程,则在用qml导出c类属性时,必须确定该属性值是否真的发生了变化,然后发出相应的属性更改信号。 否则很可能会发生问题,哈哈!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读