QT学习笔记(1)工具类、控件的简单了解

QT学习笔记(1)——基本了解

开始进行QT的学习,打算在此记录自己的学习过程,作以回顾和分享,整个内容是基于QT5版本进行的,主要学习书籍是《Qt5开发及实例》,参考网络资料学习。本篇主要是对其类,基本控件进行简单了解。


1.1 字符串

操作字符串:
1.+号
2.append(str)
3.sprintf(“s%”,str)
4.QString(“%1 %2…”).arg(str1).arg(str2) //安全,完全支持unicode
5.insert(int position,str)在原字符串特定的位置插入
6.prepend(str):开头插入
7.replace(str1,str2):代替
8.trimmed()移除两端空白

查询字符串:
1.startxsWith(str,Qt:: CaseSensitive)/endsWith():判断开头/结尾为某字符串 eg:startsWith(“Welcorne”,Qt::CaseSensitive) //Qt::CaseSensitive区分大小写
2.contains(str,Qt:: CaseSensitive):判断是否出现过
3.localeAwareCompare(const QString&,const QString&): 前小于后,返回负 前等于后,返回0 前大于后,返回正 //基于本地(locale)字符集比较的与平台相关的
4.compare(const QString&,const QString&,Qt::CaseSensitivity) 可指定大小写比较,大小写比较完全基于字符的Unicode编码值,返回与上类似

转换字符串:
QString类提供了丰富的转换函数,可以将一个字符串转换为数值类型或者其他的字符编码集
1.数值类型:toInt()、toDouble()、toFloat()、toLong()、toLongLong()
2.字符编码:toAscii()、toUtf8()、toLocal8Bit()


1.2 容器类

1.2.1 QList、QLinkList和QVector类

  1. QList:列表,可用下标访问
  2. QLinkList:链式列表,非连续内存块报存数据,不能用下标访问,只能用迭代器,插入比QList快
  3. QVector:数组

迭代器(JAVA风格):

只读迭代器 读写迭代器
QListIterator QMutableListIterator
QLinkListIterator QMutableLinkListIterator
QVectorIterator QMutableVectorIterator

初始化:QListlterator i(list)
i.hasNext():检查迭代点后是否列表项
i.next():向后遍历
向前遍历:

QListIterator<T>::toBack(): //将迭代点移动到最后一个列表项的后面。
QListIterator<T>::hasPrevious(): //检查当前迭代点之前是否具有列表项。
QListIterator<T>::previous(): //返回前一个列表项的内容并将迭代点移动到前一个列表项之前。

向后遍历:

toFront(): //移动迭代点到列表的前端(第一个列表项的前面)。
peekNext(): //返回下一个列表项,但不移动迭代点。
peekPrevious(): //返回前一个列表项,但不移动迭代点。

findNext(): 从当前迭代点开始向后查找指定的列表项,如果找到,则返回 true,此时迭代点位于匹配列表项的后面如果没有找到,则返回 false, 此时迭代点位于列表的后端(最后一个列表项的后面)。
findPrevious(): findNext() 类似,不同方向向前,查找完成后的迭代点在匹配项的前面或整个列表的前端。
insert():插入

迭代器(STL风格):

只读迭代器 读写迭代器
QList< T >::const_iterator QList< T >::iterator
QLinkedList< T >::const_iterator QLinkedList< T >::iterator
QVector< T >::const_iterator QVector< T >::iterator

初始化:QList::iterator i
遍历使用:for(i=list.begin(); i !=list.end() ;++i)
list.insert(list.end(),j):两个参数

1.2.2 QMap类和QHash类

QMap、QHash
• QHash 具有比 QMap 更快的查找速度。
• QHash 以任意的顺序存储数据项,而 QMap 总是按照键 Key 的顺序存储数据。
• QHash 的键类型 Key 必须提供 operator==()和一个全局的 qHash(Key) 函数,而 QMap 的键
类型 Key 必须提供 operator<() 函数。

迭代器(JAVA风格):

只读迭代器 读写迭代器
QMaplterator QMutableMaplterator
QHashlterator QMutableHashlterator

Java风格的迭代器没有提供查找键的函数。因此通过QMutableMaplterator::findNext()来实现查找和修改。

eg:
map.insert("beijing","111");
map.insert("shanghai","021");
map.insert("nanjing","025");
if(mi.findNext ("111"))
{
  mi.setValue ("010");
}

STL风格:

只读迭代器 读写迭代器
QMap::const_iterator QMap::iterator
QHash::const_iterator QHash::iterator

STL风格迭代器可以通过键值访问

eg:
mi=map.find("beijing");
if(mi! =map.end())
{
  mi.value() ="010";
}

1.3 算法、正则

模块

  1. 常用算法
    qAbs(a):返回a的绝对值
    qMax(b,c):返回b、c中最大值
    qRound(b):返回与一个浮点数最接近的整数值(四舍五入)
    qSwap(bn,cn):交换两值

  2. 基本正则
    Qt的QRegExp类是正则表达式的表示类,它基于Perl的正则表达式语言,完全支待Unicode正则表达式由,表达式 (expressions) 、量词 (quantifiers) 和断言 (assertions) 组成。

量词:

量词 含义
E? 匹配0~1次
E+ 匹配1~多次
E* 匹配0~多次
E[n] 匹配n次
E[n,]/E[,m] 匹配至少n次/匹配至多m次
E[n,m] 匹配至少n次至多m次

断言:

量词 含义
^ 字符串开头匹配
$ 字符串结尾匹配
\b 单词边界
\B 非单词边界
(?=E) 表达式后跟E才匹配
(?!E) 表达式后不跟E才匹配

1.4 控件

1.4.1 按钮组(Buttons)

1.Push Button: 按钮
2.Tool Button: 工具按钮
3.Radio Button: 单选按钮
4.Check Box: 复选框
5.Command Link Button: 命令链接按钮
6.Dialog Button Box: 对话框按钮盒

1.4.2 输入部件组 (Input Widgets)

1.Combo Box: 组合框
2.Font Combo Box: 字体组合框
3.Line Edit: 行编辑框
4.Text Edit: 文本编辑框
5.Plain Text Edit: 纯文本编辑框
6.Spin Box: 数字显示框(自旋盒)
7.Double Spin Box: 双自旋盒
8.Time Edit: 时间编辑
9.Date Edit: 日期编辑
10.Date/Time Edit: 日期/时间编辑
11.Dial: 拨号
12.Horizontal Scroll Bar: 横向滚动条
13.Vertical Scroll Bar: 垂直滚动条
14.Horizontal Slider: 横向滑块
15.Vertical Slider: 垂直滑块
16.Key Sequence Edit: 按键序列编辑框

QDateTime类:
Date/Time Edit 对应QDateTime类,用来获得系统时间。通过QDateTime: :currentDateTime() 来获取本地系统的时间和日期信息。通过date()time() 来返回其中的日期和时间部分。

eg:
QLabel *datalabel =new QLabel(); 
QDateTime *datatime=new QDateTime(QDateTime::currentDateTime()); 
datalabel->setTex(datatime->date().toString()); 
datalabel->show();

1.4.3 显示控件组(Display Widget)

1.Label: 标签
2.Text Browser: 文本浏览器
3.Graphics View: 图形视图
4.Calendar Widget: 日历
5.LCD Number: 液晶数字
6.Progress Bar: 进度条
7.Horizontal Line: 水平线
8.Vertical Line: 垂直线
9.OpenGL Widget: 开放式图形库工具
10.QQuickWidget: 嵌入 QML 工具

1.4.4 空间间隔组(Spacers)

Horizontal Spacer: 水平间隔
Vertical Spacer: 垂直间隔

1.4.5 布局管理组(Layouts)

Vertical Layout: 垂直布局
Horizontal Layout: 水平布局
Grid Layout: 网格布局
Form Layout: 表单布局

相关类:
水平布局类QHBoxLayout;
垂直布局类QVBoxLayout;
网格布局类QGridLayout;
表格布局类QFormLayout;

1.4.6 容器组(Containers)

Group Box: 组框。
Scroll Area: 滚动区域。
Tool Box: 工具箱。
Tab Widget: 标签小部件。
Stacked Widget: 堆叠部件。
Frame: 帧。
Widget: 小部件。
MDI Area: MDI 区域。
Dock Widget: 停靠窗体部件。

QString字符串类一些概念
隐式共享:
共享对象时有浅拷贝(引用复制)、深拷贝(完整复制)两种复制方式
不改变时浅拷贝,需设置一个指向共享数据块的指针和引用计数器;
改变共享数据时,进行深拷贝

你可能感兴趣的:(QT学习,qt,学习,开发语言)