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

QML编码约定

QML中的国际化:

QML使用以下函数来将字符串标记为可翻译的

  1. qsTr()
  2. qsTranslate()
  3. qsTrld()
  4. QT_TR_NOOP()
  5. QT_TRANSLATE_NOOP()
  6. QT_TRID_NOOP

最常用的还是qsTr()

string qsTr(string sourceText, string disambiguation, int n) 

  • 返回 sourceText 的翻译版本,可以选择基于消除歧义字符串和包含复数的字符串的值 n ;否则,如果没有合适的翻译字符串可用,则返回 sourceText 本身。

    如果在同一翻译上下文中以不同的角色使用相同的 sourceText,则可能会传入额外的标识字符串以消除歧义

1.正常使用: 

Text {id: text1text: qsTr("text")}

 2.消除歧义:

当两个词语有相近的意思时,使用qsTr()的第二个参数来区分相同的文本 

Text {id: txt1;text: qsTr("Back", "not front");//将Back和 not front区分
}

3.使用arg()

Text {id: text1text: qsTr("%1,%2").arg(1).arg(2);}

4.使用%lx使数字本地化

可能国家和国家之间的表式方法不一样,可以使用%lx来使数字本地化

Text {text: qsTr("%L1").arg(total)
}

如果是数字“4321.56”(四千三百二十一点五十六);使用英语区域设置(区域设置)时,输出为“4,321.56”;使用德语区域设置时,输出为“4.321,56”。

5.国际化日期、时间和货币

Qt.locale返回一个Locale 对象,其中包含有关区域设置的各种信息。特别是,Locale.name 属性包含当前区域设置的语言和国家/地区信息。可以按原样使用该值,也可以分析该值以确定当前区域设置的相应内容。

  • 使用Date()获取当前时间

获取本地化的时间和日期:

Text {id: text1text: qsTr("Data:%1").arg(Date().toLocaleString(Qt.locale()))}

 

 QML编码规定:

 QMl对象属性构建顺序:

  1. id
  2. 属性声明
  3. 信号声明
  4. JavaScript
  5. 对象属性
  6. 子对象
  7. 状态
  8. 状态切换
Rectangle {id: photo                                               // id on the first line makes property bool thumbnail: false                          // property declarationsproperty alias image: photoImage.sourcesignal clicked                                          // signal declarationsfunction doSomething(x)                                 // javascript functions{return x + photoImage.width}color: "gray"                                           // object propertiesx: 20                                                   // try to group related properties togethery: 20height: 150width: {                                                // large bindingsif (photoImage.width > 200) {photoImage.width;} else {200;}}Rectangle {                                             // child objectsid: borderanchors.centerIn: parent; color: "white"Image {id: photoImageanchors.centerIn: parent}}states: State {                                         // statesname: "selected"PropertyChanges { target: border; color: "red" }}transitions: Transition {                               // transitionsfrom: ""to: "selected"ColorAnimation { target: border; duration: 200 }}
}

分组属性:

一些相同元素的属性可以进行合并 

Text{font.bold: truefont.family: "黑体"font.pixelSize: 20font.underline: true}

 可以合并为:

Text{font{ bold: true;underline: true;pixelSize: 20;family: "黑体" }}

私有属性:

QML和JavaScript中并没有C++中强制私有属性,但需要隐藏那些私有属性的话,使用__开头

Rectangle{id:rect1property real __peo: width+hieght//使用__开头width: 100height: 100}

JavaScript代码:

  1. 少量代码的话,直接内联
  2. 一个函数的话,把函数放到外部声明
  3. 多个函数的话,使用文件的方式存储再调用
http://www.lryc.cn/news/29228.html

相关文章:

  • 【Linux】安装Linux操作系统具体步骤
  • 前端ES6异步编程技术——Promise使用
  • Kotlin实现简单的学生信息管理系统
  • 413. 等差数列划分
  • 设计模式七大原则
  • 【Mybatis系列】Mybatis常见的分页方法以及源码理解
  • Java面向对象:多态特性的学习
  • id函数 / 可变类型变量 / 不可变类型变量 / +=操作
  • aws apigateway 使用apigateway集成lambda
  • Linux SPI 驱动实验
  • [1.4]计算机系统概述——操作系统的体系结构
  • FPGA的GigE Vision IP相机图像采集方案设计,转换为千兆UDP,支持10G MAC
  • 大数据相关面试题
  • AI绘画第二步,抄作业复现超赞的效果!
  • Python的并发编程
  • 【Linux】基本系统维护命令
  • 高数:数列的收敛
  • 不平凡的一天——
  • 【Java基础】Map遍历的5种方式
  • 第十四届蓝桥杯三月真题刷题训练——第 2 天
  • 自然语言处理历史最全预训练模型(部署)汇集分享
  • csdn写文章自定义表格怎么做
  • Pytorch处理数据与训练网络问题汇总(协同训练)
  • 机器学习:基于神经网络对用户评论情感分析预测
  • Vue3之组件间传值避坑指南
  • 02-问题思考维度:抓住核心用户、场景化分析、需求收集与辨别、用户故事
  • C 语言编程 — GCC Attribute 语法扩展
  • LeetCode 热题 C++ 399. 除法求值 406. 根据身高重建队列
  • 提升Mac使用性能的5大方法,CleanMyMacX 2023非常的好用哦~
  • 一步一步学会给Fritzing添加元器件-丰富你的器件库