首页 文章 精选 留言 我的

精选列表

搜索[学习模式],共10000篇文章
优秀的个人博客,低调大师

Qt中的单例模式来啦

总的来说,需要完成那些事呢? 首先,您需要在QML脚本中使用pragma Singleton关键字, 然后您需要将该组件注册为单例, 最后您需要将它导入到需要使用他的其它QML文件中。 第一步:将一个QML组件声明为单例 假设以下使我们将要进行单例的文件 //MyStyleObject.qml import QtQuick 2.0 Item { readonly property string colourBlue: "blue" readonly property string colourRed: "red" readonly property int fontPointSize: 16 } 1 2 3 4 5 6 7 8 要将其进行单例化,首先您需要在首行添加如下语句 //MyStyleObject.qml pragma Singleton //注意这里 import QtQuick 2.0 Item { readonly property string colourBlue: "blue" readonly property string colourRed: "red" readonly property int fontPointSize: 16 } 1 2 3 4 5 6 7 8 9 第二步:注册组件 现在您有两种选择 您可以在C++中注册组件, 或者使用qmldir文件。 C++中实现 要在您的C ++代码的某个地方通过C ++注册单例,您需要调用qmlRegisterSingletonType()。 #include <QtQml> ... qmlRegisterSingletonType( QUrl("file:///absolute/path/MyStyleObject.qml"), "ca.imaginativethinking.tutorial.style", 1, 0, "MyStyle" ); ... 1 2 3 4 QML中实现 如果将调用添加到qmlRegisterSingletonType()不适用于您,也许这是一个Qt Quick UI项目(即没有C ++),那么您可以将名为qmldir的文件添加到MyStyleObject.qml文件所在的目录。 在导入目录时,QML引擎首先查找qmldir文件并使用它导入在该目录中找到的脚本; 如果该文件不存在,它将导入使用默认值(即非单例并使用文件名称作为组件名称)找到的脚本。 qmldir文件可以定义不同的名称来代替文件名,还可以指示将脚本注册为单例。 目录结构应该如下所示: /root + absolute | + path | | + qmldir | | + MyStyleObject.qml | | + AnotherObject.qml | | + MyButton.qml | | + MySwitch.qml | + main.qml 1 2 3 4 5 6 7 8 9 以下是qmldir应该有的样子: singleton MyStyle 1.0 MyStyleObject.qml MyOtherObject 1.0 AnotherObject.qml MyButton 1.0 MyButton.qml 1 2 3 请注意,如果在目录中找到脚本但未在qmldir文件中声明脚本,它仍会导入,但使用默认设置。 MySwich.qml将被导入并使用名称MySwitch注册为非单例。 您可以在这里看到,我们也可以使用qmldir来定义组件的文件名之外的其他名称,MyButton被注册为使用默认的文件名,但AnotherObject.qml被注册为使用名称MyOtherObject。 第三步:导入并使用单例 C++中实现 如果您使用上面的C ++选项,那么为了在您的QML脚本中导入和使用单例,您需要通过qmlRegisterSingletonType()的第二个参数导入您定义的模块,然后使用注册名称(参数三qmlRegisterSingletonType))。 //main.qml import QtQuick 2.0 import wanywhn.style 1.0 Rectangle { anchors.fill: parent color: MyStyle.colourBlue // <-- 注意这里 } 1 2 3 4 5 6 7 8 QML中实现 如果您使用qmldir方法,那么您只需导入文件所在的目录。 //main.qml import QtQuick 2.0 import "path" Rectangle { anchors.fill: parent color: MyStyle.colourBlue // <-- 注意这里 } 1 2 3 4 5 6 7 8 但是请注意,如果main.qml位于路径目录中,您仍然必须导入该路径,因为当您依靠自动查找时,qmldir文件不会被使用。 那么使用效果如何呢? 代码地址 让我们尝试创建一千个方块。当然这里会有两种方式 Component { id: gridDelegateUsingAnInstanceStyleObject Rectangle { width: 50 height: width color: myStyle.colourBlue border.color: myStyle.colourRed border.width: myStyle.borderSize Text { anchors.centerIn: parent text: index font.pointSize: myStyle.fontPointSize color: myStyle.colourWhite } MyStyleObject { id: myStyle //<-- 注意这里,当您使用myStyle时,他指向一个实例对象 } } } Component { id: gridDelegateUsingASingletonStyleObject Rectangle { width: 50 height: width color: MyStyle.colourBlue //<-- 注意当使用MyStyle(大写字母M)时,您指的是qml目录文件中定义的单例。 border.color: MyStyle.colourRed border.width: MyStyle.borderSize Text { anchors.centerIn: parent text: index font.pointSize: MyStyle.fontPointSize color: MyStyle.colourWhite } } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 分别使用这两个delegate,使用QML 分析器查看效果 效果 不用说都清楚了吧。;)

优秀的个人博客,低调大师

hadoop安装配置——伪分布模式

1. 安装 这里以安装hadoop-0.20.2为例 先安装java,参考这个 去着下载hadoop 解压 tar -xzf hadoop-0.20.2 2. 配置 修改环境变量 vim ~/.bashrc export HADOOP_HOME=/home/rte/hadoop-0.20.2 #这里为实际hadoop解压的目录位置 export PATH=$PATH:$HADOOP_HOME/bin source ~/.bashrc 配置hadoop-env.sh vim conf/hadoop-env.sh export JAVA_HOME=/home/rte/Software/java/jdk1.6.0_27 配置conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml文件 文件:core-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> 文件:mapred-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> 文件:hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> 3. 开启关闭 通过NameNode格式化HDFS文件系统 cd hadoop-0.20.2/conf hadoop namenode -format 开启hadoop cd hadoop-0.20.2/bin sh start-all.sh 通过jps命令检查期望的hadoop进程是否运行 关闭hadoop cd hadoop-0.20.2/bin sh stop-all.sh 4. 参考 Running Hadoop on Ubuntu Linux (Single-Node Cluster) hadoop三个配置文件的参数含义说明 hadoop安装配置 本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3825546.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册