开始进行QT的学习,打算在此记录自己的学习过程,作以回顾和分享,整个内容是基于QT5版本进行的,主要学习书籍是《Qt5开发及实例》,参考网络资料学习。本篇主要是对其类,基本控件进行简单了解。
操作字符串:
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()
迭代器(JAVA风格):
只读迭代器 | 读写迭代器 |
---|---|
QListIterator | QMutableListIterator |
QLinkListIterator | QMutableLinkListIterator |
QVectorIterator | QMutableVectorIterator |
初始化:QListlterator
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
遍历使用:for(i=list.begin(); i !=list.end() ;++i)
list.insert(list.end(),j)
:两个参数
QMap
• QHash 具有比 QMap 更快的查找速度。
• QHash 以任意的顺序存储数据项,而 QMap 总是按照键 Key 的顺序存储数据。
• QHash 的键类型 Key 必须提供 operator==()和一个全局的 qHash(Key) 函数,而 QMap 的键
类型 Key 必须提供 operator<() 函数。
迭代器(JAVA风格):
只读迭代器 | 读写迭代器 |
---|---|
QMaplterator |
QMutableMaplterator |
QHashlterator |
QMutableHashlterator |
Java风格的迭代器没有提供查找键的函数。因此通过QMutableMaplterator
来实现查找和修改。
eg:
map.insert("beijing","111");
map.insert("shanghai","021");
map.insert("nanjing","025");
if(mi.findNext ("111"))
{
mi.setValue ("010");
}
STL风格:
只读迭代器 | 读写迭代器 |
---|---|
QMap |
QMap |
QHash |
QHash |
STL风格迭代器可以通过键值访问
eg:
mi=map.find("beijing");
if(mi! =map.end())
{
mi.value() ="010";
}
和
模块
常用算法
qAbs(a):返回a的绝对值
qMax(b,c):返回b、c中最大值
qRound(b):返回与一个浮点数最接近的整数值(四舍五入)
qSwap(bn,cn):交换两值
基本正则
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.Push Button: 按钮
2.Tool Button: 工具按钮
3.Radio Button: 单选按钮
4.Check Box: 复选框
5.Command Link Button: 命令链接按钮
6.Dialog Button Box: 对话框按钮盒
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.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 工具
Horizontal Spacer: 水平间隔
Vertical Spacer: 垂直间隔
Vertical Layout: 垂直布局
Horizontal Layout: 水平布局
Grid Layout: 网格布局
Form Layout: 表单布局
相关类:
水平布局类QHBoxLayout
;
垂直布局类QVBoxLayout
;
网格布局类QGridLayout
;
表格布局类QFormLayout
;
Group Box: 组框。
Scroll Area: 滚动区域。
Tool Box: 工具箱。
Tab Widget: 标签小部件。
Stacked Widget: 堆叠部件。
Frame: 帧。
Widget: 小部件。
MDI Area: MDI 区域。
Dock Widget: 停靠窗体部件。
QString字符串类一些概念
隐式共享:
共享对象时有浅拷贝(引用复制)、深拷贝(完整复制)两种复制方式
不改变时浅拷贝,需设置一个指向共享数据块的指针和引用计数器;
改变共享数据时,进行深拷贝