You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QML引入QtObject样式文件时出现Unable to assign [undefined]错误求助

问题原因及解决方案

出现undefined错误的核心原因是QML单例未被正确注册和导入,加上属性定义的语法不规范,导致引擎无法识别Theme的属性。

步骤1:修正Theme.qml的属性定义语法

你当前用了函数返回的写法初始化属性,不符合QML属性的规范写法,直接赋值即可:

pragma Singleton

import QtQuick

QtObject
{
    readonly property string tfont: "Calibri"
    readonly property real tpointSize: 28
    readonly property string tcolor: "black"
}

步骤2:添加qmldir文件注册单例

在Theme.qml所在的目录下,创建名为qmldir的文件,内容如下:

singleton Theme 1.0 Theme.qml

这个文件的作用是告诉QML引擎,该目录下的Theme.qml是一个版本为1.0的单例组件。

步骤3:正确导入单例模块

在使用Theme的QML文件中,修改导入语句,指定模块版本(本地目录路径前加./确保正确识别):

import "./Theme" 1.0

Label
{
    font.family: Theme.tfont
    font.pointSize: Theme.tpointSize
    color: Theme.tcolor
    text: "text"
}

额外检查

  • 确保Theme.qml和qmldir文件都被正确添加到项目资源(qrc)中,资源方式比本地文件系统路径更可靠。
  • 确认使用的Qt版本在5.7及以上,早期版本对QML单例的支持有限。

内容的提问来源于stack exchange,提问作者gmmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:00:57