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. eclipse 视图打不开解决方法

    遇到一个eclipse问题,查看方法调用者,或打开调用层次窗口失败,这时要查看一个方法的调用者只好通过全局搜索的方式.网上搜索报错关键词没找到答案,看了一下全局设置也没有想过的选项. 后想到一个ecl ...

  2. ORACLE 12C 之集群日志位置变化

    如果你还是使用 oracle 11g RAC 的目录结构方式寻找集群的日志,你会发现目录中所有的日志都是空的.actdb21:/oracle/app/12.2.0/grid/log/actdb21(+ ...

  3. zookeeper 图形化的客户端工具:ZooInspector

    查看Zookeeper中的数据,我们可以通过ZkCli.sh命令客户端查看,但是不太直观,因为Zookeeper本身数据是以树型结构存储组织的, 今天推荐一个实用的界面操作工具ZooInspector ...

  4. Linux基础入门之vsFTP+MySQL/MariaDB认证实现虚拟用户配置详解

    https://www.dwhd.org/20150603_144841.html 摘要 VSFTP可以使用系统账户或者匿名账户登录,但是出于安全的考虑,通常建议使用vsftp虚拟账户来登录ftp服务 ...

  5. java中==与equals

    == ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象. 如: int a = 10; int b = 20; double d ...

  6. asp.net开发细节整理

    1.使用entity framework的DB First时,手动书实体类的表单验证 public partial class Fund { } [MetadataType(typeof(Valida ...

  7. 集群RedHat6.5+JDK1.8+Hadoop2.7.3+Spark2.1.1+zookeeper3.4.6+kafka2.11+flume1.6环境搭建步骤

    1.RHEL 6.5系统安装配置图解教程(rhel-server-6.5) 2.在Linux下安装JDK图文解析 3.RedHat6.5上安装Hadoop集群 4.RedHat6.5安装Spark集群 ...

  8. phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码

    以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...

  9. Emacs的一些事情(与Vi的争议及使用)

    一年成为Emacs高手(像神一样使用编辑器)推荐文章 http://ftp.gnu.org/gnu/emacs/windows/http://blog.csdn.net/redguardtoo/art ...

  10. xe5 android sample 中的 SimpleList 是怎样绑定的 [转]

    C:\Users\Public\Documents\RAD Studio\12.0\Samples\FireMonkeyMobile 例子中的绑定方式如下图: 1.拖拽一个listview到界面上,然 ...