当前位置: 首页 > news >正文

【C++ qml】qml页面加载配置文件信息的两种方式

前言

        工具类型应用,常需要读取配置信息进行展示。qml页面包含初始化加载,以及运行时状态变化加载

功能讲解

初始化加载

        所有组件完成初始化之后,触发的加载动作

Component.onCompleted:{}

看其直白的翻译:

Component:组成部分

onCompleted:on为qml的事件触发前缀,Completed完成

意思即是qml页面组成部分(组件)完成(加载)之后,触发完成事件

运行时状态变化加载

        首次进入此页面,或者是从其他页面进入到当前页面时的加载动作,tab页中常有此场景

onVisibleChanged: {}

看其直白的翻译,on为qml的事件触发前缀,VisibleChanged可见状态变化

源码

本篇是在上一篇的基础上,进行了小调整实现的https://blog.csdn.net/liangyuna8787/article/details/151767317?spm=1001.2014.3001.5502https://blog.csdn.net/liangyuna8787/article/details/151767317?spm=1001.2014.3001.5502

增加QSettings配置文件操作

在checkpwd类中增加配置文件操作功能

//checkpwd.h
#ifndef CHECKPWD_H
#define CHECKPWD_H#include <QObject>
#include <QVariant>class CheckPwd : public QObject
{Q_OBJECT
public:explicit CheckPwd(QObject *parent = nullptr);//声明给qml调用的函数Q_INVOKABLE bool logincheck(const QVariant usrname,const QVariant passwd);Q_INVOKABLE QVariant getusernamebyconf();//增加一个返回为字符串的读取配置函数signals:};#endif // CHECKPWD_H
//checkpwd.cpp
#define CONF_PATH "./shareconf.ini"
bool CheckPwd::logincheck(const QVariant usrname,const QVariant passwd){QString name=usrname.toString();QString pwd=passwd.toString();if(name== "admin" || name== "abc" || name== "test1")//只是为了测试{QSettings settings(CONF_PATH, QSettings::IniFormat);// 写入简单值settings.beginGroup("login");settings.setValue("username", name);settings.endGroup();return true;}elsereturn false;
}QVariant CheckPwd::getusernamebyconf(){QSettings settings(CONF_PATH, QSettings::IniFormat);// 写入简单值QString username = settings.value("login/username","no name").toString();qDebug() << username;return username;
}

Page1.qml增加动态加载配置信息

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12import CheckPwdObj 1.0
Rectangle {width: parent.widthheight: parent.heightcolor: "transparent"property alias welcomeName: welcomeText.textPasswordValidator {id: validator}// 应用刚启动,完成组件加载后只执行一次的动作
//    Component.onCompleted: {
//        getusename()
//    }// 可见状态发生变化时加载onVisibleChanged: {getusename()}function getusename() {var username = validator.getusernamebyconf()console.log("用户名:", username)welcomeText.text = username}Label {id: welcomeTextanchors.centerIn: parentfont {pixelSize: 24bold: true}color: "#333333"text: "正在加载..."}
}

http://www.dtcms.com/a/389535.html

相关文章:

  • 运维笔记:神卓 N600 解决企业远程访问 NAS 的 3 个核心痛点
  • GitHub 热榜项目 - 日榜(2025-09-18)
  • 使用开源免费的组件构建一套分布式微服务技术选型推荐
  • 需求质量检测Prompt之是否涉及异常场景
  • QT按钮和容器
  • Kafka4.0 可观测性最佳实践
  • 深入解析 Spring AI 系列:解析函数调用
  • ​​[硬件电路-245]:电气制图软件有哪些
  • 不会索赔500万的苹果,翻车如期到来,不过已没啥影响了
  • 第十一章:AI进阶之--模块的概念与使用(一)
  • 【IoTDB】01 - IoTDB的基本使用
  • 【C++】模版语法基础:认识模版(初识篇)
  • 继承测试用例回归策略
  • 卡普空《怪物猎人》系列策略转变:PC平台成重要增长点
  • UML 顺序图 | 概念 / 组成 / 作用 / 绘制
  • 安装SSL证书后如何测试和验证其是否正确配置?
  • A股大盘数据-20250918分析
  • 容器环境变量管理在云服务器多环境部署中的配置方法
  • 算法练习-排序-选择排序
  • 岭回归(Ridge Regression)在机器学习中的应用
  • python高级编程面试题
  • 模拟ic工程师如何提升自己?
  • springboot flowable 工作流入门与实战
  • 飞算Java的在线考试系统的设计与实现——学生开发者的课程实践记录
  • Vue3 基础语法详解:从入门到实践
  • 大白话聊明白:同步刷盘、异步刷盘以及RocketMQ和RabbitMQ的刷盘策略
  • I0流学习
  • 摄影灯MCU方案开发,摄影灯单片机分析
  • Salesforce知识点: LWC 组件通信全解析
  • Lua语言程序设计3:闭包、模式匹配、日期和时间