我是QML的初学者。我想使用对象类型与主窗口分开定义一些值。 (我从一个已经在更复杂的上下文中使用此机制的现有项目中获得了这个想法。我试图提取和测试此功能,但是由于它不起作用,我可能简化了)。这是我尝试做的事:
main.qml:
import QtQuick 2.9
import QtQuick.Window 2.2
Window {
visible: true
Text{
text: CustomizedText.name
}
}
CustomizedText.qml:
import QtQuick 2.9
QtObject {
property string name: "dummy text"
property int size
property variant attributes
}
所以我想让我的窗口显示“虚拟文字”。
不幸的是,没有显示文本,但显示了以下错误:
Unable to assign [undefined] to QString
我可以轻松地设置用户定义的对象类型的属性值。但是没有设法获取一个属性的值。是否有可能做到这一点?这样做是个好主意,还是Qt并非设计成这样工作?
尽管我将此问题标记为重复,但我也想在此处提供答案。有两个原因:1.我认为我的答案仅限于基本问题。 2.这使解决方案非常简单。
正如folibis所说,我将CustomizedText用作单例。由于我必须将其声明为单例。可以使用包含以下代码的模块定义文件qmldir来完成此操作:
singleton CustomizedText 1.0 CustomizedText.qml
此文件可以与.qml-Files添加到相同的层次结构:
或作为纯文本:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>CustomizedText.qml</file>
<file>qmldir</file>
</qresource>
</RCC>
就是这样。