2.1 字符串类
 QString类保存16位Unicode值,提供了丰富的操作,查询和转换等函数。
   (1):QString提供了一个二元的"+"操作符用于组合两个字符串
   (2):QString::append()
   (3):组合字符串的另一个函数时QString::sprintf()
   (4):Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数
   (5):QString也提供了一些其他组合字符串的方式,包括
      insert()
      prepend()
      replace()
   (6):很多时候去掉一个字符串两端的空白("\n" "\r" "\t" " ")
      QString::trimmed()
      QString::simplified()

2.1.2 查询字符串数据
    (1)函数QString::startsWith()判断一个字符串是否以某个字符串开头
       QString str="Welcome to you!";
       str.startsWith("Welcome",Qt::CaseSensitive); //返回true
    (2):函数QString::endsWith()
    (3):函数QString::contains()判断一个指定的字符串是否出现过
    (4):比较两个字符串也是经常的功能
       operatr<(const QString&)
       operat<=(const QString&)
       ......
       ......
       compare(const QString&,const QString&,Qt::CaseSensitivity);
 2.1.3 字符串的转换
    (1):QString提供了丰富的转换函数。QString::toInt() QString::toDouble(),QString::toFloat(),QString::toLong(),toLongLong
       QString str="125";
       bool ok;
       int hex = str.toInt(&ok,16); //ok = true,hex=293
       int dec = str.toInt(&ok,10); //ok =  true,dec=125
    (2):QString提供的字符编码即的转换函数将会返回一个const char*类型版本的QByteArray,即构造函数QByteArray(const char*)构造的QByteArray对象;QByteArray支持的转换函数有一下几种:
       toAscii()
       toLatin1()
       toUtf8()
       toLocal8Bit()

     NULL字符串和空(empty)字符串的区别:
      NULL:是使用QString的默认构造函数或者使用"(const char*)0"
      空:是一个大小为0的字符串

2.2:容器类
   注意:Qt的QObject及其他的子类(如QWidget和QDialog等)是不能够存储在容器中的。因为QObject及其他的子类没有复制构造函数和赋值操作运算符。一个可能代替的方案是存储QObject及其子类的指针。

  2.2.1 QList类,QLinkedList类和QVector类
      QList<T>维护了一个指针数组,该数组存储的指针指向QList<T>存储的列表项的内容
      QLinkedList<T>是一个链式列表,它以非连续的内存块保存数据
      QVector<T>

  2.2.2 QMap类和QHash类
      QMap类和QHash类具有非常类似的功能,他们的差别仅仅在于:
      (1):QHash具有比QMap更快的查找速度
      (2):QHash以任意的顺序存储数据项,而QMap总是按照键Key顺序存储数据;
      (3):QHash的键类型Key必须提供operator==()和一个全局的qHash(Key)函数,而QMap的键类型Key必须提供operator<()函数

2.3 QVariant类
   QVariant类类似于c++的联合(union)类型,它不仅能够保存很多Qt类型的值,包括QColor QBrush等等,也能够存放Qt的容器类型的值。

2.4 算计及正则表达式

  • 2.4.1 Qt 5常用算法

Qt的<QtAlgorithms>和<QtGlobal>模板提供了一些算法和函数。
  qAbs(a):
  qMax(b,c);
  qRound(b):返回一个与浮点数最接近的整数
  qSwap(bn,cn):交换两个数的值

  • 2.4.2 基本的正则表达式

    • Qt的QRegExp类似正则表达式的表示类,它基于Perl的正则表达式语言,完全支持Unicode
    • 正则表达式由:
      • 表达式(expressions)
      • 量词(quantifiers)
      • 断言(asertions)
  • (1):最简单的表达式是一个字符

[AEIOU] :表示匹配所有大写元音字母
     [^AEIOU]:表示匹配所有非元音字母
     [a-z]:表示匹配所有小写英文字母

  • (2):量词说明表达式出现的次数

x[1,2]:表示x可以至少有一个,至多两个
    [A-Za-z_]+[A-Za-z_0-9]*:要求以字母或下划线开头,后面可以是字母,数字和下划线
    其中

    • “+”:表示[A-Za-z]至少出现一次,可以出现多次
    • "*":表示[A-Za-z_0-9]可以出现零次或多次
    •   
  • (3)"^","$","\b"都是正则表达式的断言
    •   
  • 2.5 控件
    • 2.5.1 按钮组

      • Push Button
      • Tool Button
      • Radio Button
      • Check Box
      • Command Link Button
      • Button Box
    • 2.5.2 输入空间组
    • 2.5.3 显示控件组
    • 2.5.4 空间间隔组
    • 2.5.5 布局管理组
    • 2.5.6 容器组
    • 2.5.7 项目视图组
    • 2.5.8 项目控件组

L2.1 字符串QString:概念解析

  L1:隐式共享

Chapter2:Qt5模板库,工具类及控件的更多相关文章

  1. 我的QT5学习之路(三)——模板库、工具类和控件(下)

    一.前言 作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性.作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他 ...

  2. 工具类(为控件设置圆角) - iOS

    为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: /* 为控件添加边框样式_工具类 */ #import <UIKit/UIKit.h> typedef ...

  3. 工具类(为控件设置色值) - iOS

    为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: /* 为控件设置色值 */ #import <UIKit/UIKit.h> @interface UI ...

  4. 工具类(设置控件 frame) - iOS

    为了便于日常开发效率,因此创建了一些小的工具类便于使用. 具体 code 如下: 声明: #import <UIKit/UIKit.h> @interface UIView (Frame) ...

  5. Map工具系列-08-map控件查看器

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  6. .NET Framework的属性类对控件的支持功能

     ToolBoxItem 此属性为类特性.属于工具箱属性,可以设置当前控件是否在工具箱中显示,以及所在工具箱项的类型名称等信息.默认生成的控件都显示在工具箱中. 更多设计时属性介绍: 4.3 属性的 ...

  7. java下载Excel模板(工具类)

    一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...

  8. 如何导出标准模板库(STL)类的实例化和包含STL类对象数据成员的类

    本文翻译自 https://support.microsoft.com/zh-cn/help/168958/how-to-export-an-instantiation-of-a-standard-t ...

  9. 自己动手写客户端UI库——创建第一个控件

    在上一篇文章中我们主要讲了C#如何和JS通信, 这一篇文章中,我们将创建一个最基础的Button控件 WUI库中控件的继承机制   我们先解释最简单的继承机制,以后WUI库的继承机制会比这个复杂的多 ...

随机推荐

  1. unity3d常用组件及分析

  2. Java Scanner学习记录

    1. Java.util.Scanner可以用来从键盘获取输入 Scanner.next()  只能读取字符,遇到任何的符合都不会输出 Scanner.nextLine()  会完全按照用户输入的st ...

  3. Spring5 新特性

    Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 最大特点之一是响应式编程(Reactive Programming). 响应式编程核 ...

  4. 记一个视频播放器插件 video.js

    最近在看扣丁学堂上面的一些视频, 突然对他用的视频播放器有点兴趣, 他也是采用的 ts切片播放, 如果使用传统的video标签是无法实现的 他使用的插件叫做 video.js 官网地址 官网提供的播放 ...

  5. babel-loader和webpack UglifyJS一起使用时console的问题

    一起使用babel-loader和webpack UglifyJS时,babel会优先处理一遍代码,编译后的代码才进入webpack进行打包和优化操作. 出处:https://www.tangshua ...

  6. Fixed-point multiplication (C166 A*B/B)

    I want to multiply two fixed point numbers. After the multiplication I have to shift the result so t ...

  7. Java利用hanlp完成语句相似度分析的案例详解

    分享一篇hanlp分词工具使用的小案例,即利用hanlp分词工具分析两个中文语句的相似度的案例.供大家一起学习参考! 在做考试系统需求时,后台题库系统提供录入题目的功能.在录入题目的时候,由于题目来源 ...

  8. Hanlp分词之CRF中文词法分析详解

    这是另一套基于CRF的词法分析系统,类似感知机词法分析器,提供了完善的训练与分析接口. CRF的效果比感知机稍好一些,然而训练速度较慢,也不支持在线学习. 默认模型训练自OpenCorpus/pku9 ...

  9. input子系统详解2

    上一节大概了解了输入子系统的流程 这一节认真追踪一下代码 input.c: input_init(void)函数 static int __init input_init(void) { int er ...

  10. Linux之poll机制分析

    应用程序访问1个设备文件时可用阻塞/非阻塞方式.如果是使用阻塞方式,则直接调用open().read().write(),但是在驱动程序层会判断是否可读/可写,如果不可读/不可写,则将当前进程休眠,直 ...