Qt 6.5.0中QtCore的Settings QML类型未生成settings.ini文件
问题解决:QML QtCore.Settings 未生成指定路径的 settings.ini 文件
问题分析
核心问题是QML中QtCore模块的Settings类型的location属性要求传入URL格式的路径,而非普通字符串路径。直接使用相对路径字符串时,Qt会默认将设置存储到系统默认配置目录(比如Linux下的~/.config/[组织名]/[应用名]、Windows下的注册表),因此设置能被记住,但不会在你指定的位置生成settings.ini文件。
解决方案
使用QML的Qt.resolvedUrl()函数将相对路径转换为符合要求的URL格式,该函数会自动基于当前QML文件的路径解析出正确的绝对URL。
修改后的 main.qml 代码
import QtQuick import QtQuick.Controls import QtQuick.Layouts import QtCore ApplicationWindow { id: window visible: true width: 800 height: 600 Settings { // 使用Qt.resolvedUrl处理相对路径,生成正确的URL location: Qt.resolvedUrl("settings.ini") property alias x: window.x property alias y: window.y property alias width: window.width property alias height: window.height } }
替代方案:直接使用绝对URL路径
如果需要指定固定的绝对路径,可以直接写file:///开头的URL:
// Linux/macOS示例 location: "file:///home/your_user/your_app_dir/settings.ini" // Windows示例(注意三个斜杠) location: "file:///C:/your_app_dir/settings.ini"
验证说明
修改后运行程序,调整窗口尺寸并关闭,settings.ini会生成在main.qml所在的目录下,再次启动程序时窗口会恢复到上次的尺寸和位置。
内容的提问来源于stack exchange,提问作者vld17
相关产品推荐
相关产品推荐

