Chapter2:Qt5模板库,工具类及控件
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 项目控件组
- 2.5.1 按钮组
L2.1 字符串QString:概念解析
L1:隐式共享
Chapter2:Qt5模板库,工具类及控件的更多相关文章
- 我的QT5学习之路(三)——模板库、工具类和控件(下)
一.前言 作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性.作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他 ...
- 工具类(为控件设置圆角) - iOS
为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: /* 为控件添加边框样式_工具类 */ #import <UIKit/UIKit.h> typedef ...
- 工具类(为控件设置色值) - iOS
为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: /* 为控件设置色值 */ #import <UIKit/UIKit.h> @interface UI ...
- 工具类(设置控件 frame) - iOS
为了便于日常开发效率,因此创建了一些小的工具类便于使用. 具体 code 如下: 声明: #import <UIKit/UIKit.h> @interface UIView (Frame) ...
- Map工具系列-08-map控件查看器
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- .NET Framework的属性类对控件的支持功能
ToolBoxItem 此属性为类特性.属于工具箱属性,可以设置当前控件是否在工具箱中显示,以及所在工具箱项的类型名称等信息.默认生成的控件都显示在工具箱中. 更多设计时属性介绍: 4.3 属性的 ...
- java下载Excel模板(工具类)
一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...
- 如何导出标准模板库(STL)类的实例化和包含STL类对象数据成员的类
本文翻译自 https://support.microsoft.com/zh-cn/help/168958/how-to-export-an-instantiation-of-a-standard-t ...
- 自己动手写客户端UI库——创建第一个控件
在上一篇文章中我们主要讲了C#如何和JS通信, 这一篇文章中,我们将创建一个最基础的Button控件 WUI库中控件的继承机制 我们先解释最简单的继承机制,以后WUI库的继承机制会比这个复杂的多 ...
随机推荐
- APACHE如何里一个站点绑定多个域名?用ServerAlias servername
APACHE2如何里一个站点绑定多个域名?用ServerAlias以前很笨,要使多个域名指向同一站点总是这样写: <VirtualHost *:80>ServerAdmin i@kuigg ...
- 22 初始模块 random time collections functools
一 .初始模块 1.从⼩到⼤的顺序: ⼀条代码 < 语句块 < 代码块(函数, 类) < 模块 2.引入模块的方式 ① import 模块 ② from 模块 im ...
- centos7 pptp 安装
1 安装 ppp yum install -y ppp 2 安装 pptpd yum install -y pptpd 3 编辑/etc/pptpd.conf 在最后 添加 localip 192. ...
- 转JMeter ----数据库 not allowed to connect to this MySQL
测试的时候遇到报错: Cannot create PoolableConnectionFactory (null, message from server: "Host 'ceshiP ...
- WCF入门教程(二)从零做起-创建WCF服务
通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) 定义了协议,具体什么操作,操作的参数和返回值 ...
- golang gopacket网络抓包和分析
gopacket 是golang语言使用的网络数据抓取和分析的工具包. 本文简单介绍如何使用gopacket进行网络抓包. 下载gopacket # go get git@github.com:goo ...
- Linux crontab配置
crontab配置 1.命令功能 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本.时间间隔的单位可以是分钟.小时.日.月.周及以上的任意组合.这个 ...
- SSH框架搭建demo
1.新建Java Web工程 2.添加Struts2.1框架支持 去除冲突包:antlr-2.7.2.jar 一般项目加上这三个包足够,后期可以视项目需求增加支持包: 2.1配置web.xml文件 增 ...
- NSIS 制作简单安装包
;replace NSIS/Contrib/zip2exe/Modern.nsh;NSI format: Asni;http://nsis.sourceforge.net/ ;UAC级别Request ...
- 利用curl 模拟多线程
所谓多线程就是多个 程序同时运行,单线程:执行一段逻辑,等待完成后 在执行另外一个. 多线程:几个逻辑同时进行处理,不需要相互等待,提高了总的执行时间 接下来就用curl实现多线程 实现逻辑 1. f ...
