为啥有些 QtQuick 控件有隐藏变量?

Posted

技术标签:

【中文标题】为啥有些 QtQuick 控件有隐藏变量?【英文标题】:Why some QtQuick Controls have the hidden variable?为什么有些 QtQuick 控件有隐藏变量? 【发布时间】:2018-03-30 00:33:01 【问题描述】:

这个问题其实来自How to scroll to certain row in QML TreeView。 QtQuick 项目的某些属性像 __listView 一样隐藏在 TreeView 中。 我知道有一些基于其他基本组件的复杂 UI 组件。

Qt 提供了使用它的可访问性,但没有在文档中提及它,这样的隐藏属性确实按预期工作得很好。那么为什么 Qt 隐藏属性呢?我要使用它吗?

【问题讨论】:

因为让我们的生活变得悲惨是很重要的。 QML API 通常因缺乏可配置性而臭名昭著。某个地方的某个人认为一种尺寸应该适合所有人,从而为其他人可能设想的附加功能铺平道路。 【参考方案1】:

这是在 Qt4 中 QML 开始时创建的约定,我们可以在 link 中找到,这似乎没有在 Qt5 中记录:

私人财产

QML 和 javascript 不会像 C++ 那样强制执行私有属性。那里 是否需要隐藏这些私有属性,例如,当 属性是实现的一部分。作为惯例,私人 属性以两个下划线字符开头。例如,__area, 是可访问但不供公众使用的财产。笔记 QML 和 JavaScript 将授予用户访问这些 属性。

 Item 
     id: component
     width: 40; height: 50
     property real __area: width * height * 0.5    //not meant for outside use
 

【讨论】:

以上是关于为啥有些 QtQuick 控件有隐藏变量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 RangeSlider 在 QtQuick 中可用,而不是作为标准 Widget

QtQuick Rectangle 控件显示啥边框?

如何从 PySide 访问 QML\QtQuick 控件?

QtQuick/Qml自定义控件(1)-ToolTip

QtQuick/Qml自定义控件(3)-自定义对话框

QTQuick控件基础视图