2019-9-12
- Object Model
1) signals and slots
用于两个对象之间进行通信
需要继承自QObject或其子类
信号只用声明,不需要定义,返回值是void
必须在类声明的最开始处添加Q_OBJECT宏
槽和信号类型相对应,并且不能比信号参数多
2) the property system
一个属性的表现就像一个普通的数据成员一样,但是它有额外供元对象系统访问的特性。
3) the object tree and ownership
4) Meta-Object System
- Container class
1) Introduction
sequential container: QList ...
associated containers: QMap ...
QList是一个指针数组
2) traverse the container
Java风格迭代器:指向项目之间
STL风格迭代器:直接指向项目
foreach关键字
3) General Algorithm
4) QString
implicitly shared (shallow and deep copy replication), the editing operation, a query operation, the switching operation
str = "%1 %2";
qDebug() << str.arg("%1f","hello"); // 结果为%1f hello
qDebug() << str.arg("%1f").arg("hello"); // 结果为hellof %2
第二种情况我是这么理解的:可以当作先用hello替换第一个arg函数里的%1,再用hellof
替换str里的%1
arg( )里的参数在进行替换时,只会按照数字从小到大的顺序进行替换,只有比当前数字
小的所有数字都替换完成了,才会替换当前数字,否则将当前数字和%按字符串处理且
数字为自然数!
‘g’ 或 ‘G’,指示后面的精度为整数和小数部分总和的长度;
’e’或 ‘E’ 时,表示为科学记数法形式,精度部分指示的为小数部分的位数长度;
5)QByteArray、QVariant
QVariant类型是常见的Qt数据类型的一个共用体(union)
- Regular expressions
1) Introduction
表达式:各种字符和字符组
量词:必须要匹配的表达式出现的次数
断言:做出一些有关文本的声明
从字符串的开始进行匹配:^;
匹配到字符串的结尾:$
2) the constituent elements
3) Text Capture
使用括号可以捕获被匹配的单词,使用cap()函数来提取匹配的字符
4) New QRegularExpression
模式字符串:
模式选项:更改模式字符串的含义