C++跟QML的交互之配置类的应用

如何在QML中使用我们的自定义的配置类,程序运行截图:
其中Text对象所显示的文本"fuzhou"就是从配置类中获取.

1. 自定义配置类qxSetting


class qxSetting : public QObject
{
Q_OBJECT
public:
qxSetting(QObject* parent = 0 ):QObject(parent){};
public slots:
void setValue( const QString& key , const QString& value );
QString getValue( const QString& key );
private:
QMap<QString,QString> mMap_;
};

//========== 实现qxSetting.cpp ====================
void qxSetting::setValue(const QString &key, const QString &value)
{
this->mMap_.insert(key,value);
}

QString qxSetting::getValue(const QString &key){
return this->mMap_.value(key);
}

注意: QML中只能调用类的槽函数

2. 在QML中使用


qxSetting d ;
d.setValue("name","fuzhou");

QQmlApplicationEngine* engine = new QQmlApplicationEngine();

//注册
engine->rootContext()->setContextProperty("settings",&d);

完整的main.cpp


int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);

qxSetting d ;
d.setValue("name","fuzhou");

QQmlApplicationEngine* engine = new QQmlApplicationEngine();
engine->rootContext()->setContextProperty("settings",&d);

engine->load(QUrl(QStringLiteral("qrc:///main.qml")));
// QQmlComponent cm(engine ,QUrl(QStringLiteral("qrc:///main.qml")) );
// cm.create();

return app.exec();
}

附带的qml代码(包含2个qml文件)


=> main.qml 主文件
import QtQuick 2.1
import QtQuick.Window 2.1
Window {
id:mainwin
visible: true
width: 360
height: 360

ContactModel{
Text{
property bool isHide : false

id: textid
anchors.centerIn: parent
text:settings.getValue("name")

focus: true
Keys.onSpacePressed: {
if( isHide == false)
hideParent()
else{
parent.border.color = "lightsteelblue";
isHide = false;
}
}

function hideParent(){
parent.border.color = "white";
isHide = true;
}
}
}

ContactModel{
Rectangle{
color: "green"
anchors.centerIn: parent
width : 40
height: 40
}

}

}

//========================================
//自定义组件 ContactModel.qml
import QtQuick 2.0

Rectangle{
id: boradRect
width : 80 ; height: 80
border.color: "lightsteelblue"
border.width: 4
radius : 8

MouseArea{
anchors.fill: boradRect
drag.target: boradRect
drag.axis: drag.XAndYAxis
}

}

---恢复内容结束---

时间: 2024-08-04 17:10:51

C++跟QML的交互之配置类的应用的相关文章

使用 universalimageloader 缓存图片的配置类及使用方法

0.gradle 配置 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:25.1.1' compile 'com.squareup.okhttp3:okhttp:3.3.0' //okttp依赖 compile 'com.nostra13.universalimagelo

[cocos2dx笔记012]一定简易的UI配置类

使用cocostudio可以装载编辑好的UI,但是过于复杂.特别是在加截UI后,发现触屏事件有些问题.如果直接使用程序写死加载UI又过于麻烦.花点时间,增加了一个基于ini的UI配置类,目前只实现了CCSprite和plist的加载.其它的可以后面慢慢加 头文件 #ifndef _X_UI_H_ #define _X_UI_H_ #include <cocos2d.h> namespace zdh { USING_NS_CC; void CreateByXUI(CCNode * paramPa

前后台交互的工具类

在企业的实际开发过程中,前后的的交互基本都有公司自己封装的统一方法,应为这样的话更便于代码的编写.维护,以及新手更容易上手,而且这样代码的风格更加的统一. 1.首先前后台交互的时候主要用到的都是JsonObject. 对于JsonObject的封装每个项目经理都有自己的封装思想,当然我也有自己的封装考虑: 第一个,前后台交互的工具类.主要用户action护着controller层: 思路: 传入一个map和一个response: map:封住了数据信息 response:用于返回 package

JFinal中配置类实例无法创建的问题

java.lang.RuntimeException: Can not create instance of class: 你的配置类 cause by: [你的配置类]无法找到 解决方法: 项目右键 -> run as -> maven clear + maven install

Spring Boot自动配置类

http://docs.spring.io/spring-boot/docs/current/api/overview-summary.html http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#auto-configuration-classes 前提 1.一般来说,xxxAware接口,都提供了一个setXxx的方法,以便于其实现类将Xxx注入自身的xxx字段中,从而进行操作. 例如 Applicatio

转:C#制作ORM映射学习笔记二 配置类及Sql语句生成类

在正式开始实现ORM之前还有一点准备工作需要完成,第一是实现一个配置类,这个很简单的就是通过静态变量来保存数据库的一些连接信息,等同于.net项目中的web.config的功能:第二需要设计实现一个sql语句的生成类来帮助生成sql语句,当前如果不实现这个类也不会影响orm的制作,之所以要做这么一个类主要有几个目的,1.减少sql语句中拼写错误的发生.2.统一解决防sql注入的问题. 下面分别说明一下这两个类的实现方式: 1.配置类DbConfig using System; using Sys

数据源配置类

package com.ustcinfo.hibernate.dbSourseConfig; import java.sql.SQLException; import javax.sql.DataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.c

*使用配置类定义Codeigniter全局变量

之前提到的 CodeIgniter 引入自定义公共函数 这篇文章提到了公共函数实现,全局的变量也可以借助 helper 函数来实现.不过,更为合适的方式可能要属用配置类定义了. CodeIgniter 默认有一个主配置文件,位于application/config/config.php 路径,其中定义了一堆框架级别的全局配置,一个名称为$config 的数组. 如果需要添加全局配置项,可以在这个文件中实现,考虑到自定义配置和框架配置的分离,建议新建一个文件 vars.php,然后做如下定义: /

spring boot 导入xml配置文件所需注解和禁用自动配置类的注解

导入XML配置 如果您绝对必须使用基于XML的配置,我们建议您仍然从一个@Configuration类开始.然后您可以使用@ImportResource注释来加载XML配置文件. 禁用特定的自动配置类 如果您发现不需要的特定自动配置类正在应用,则可以使用exclude属性@EnableAutoConfiguration来禁用它们,如以下示例所示: import org.springframework.boot.autoconfigure.*; import org.springframework