快捷键 | 功能 |
---|---|
F9 | 设置/取消断点 |
F5 | 开始调试/跳到下一个断点 |
F10 | 单步 |
F11 | 单步进入 |
Shift + F11 | 单步跳出 |
Ctrl + F10 | 跳到指定行 |
Shift + F5 | 结束断点调试 |
隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。隐式共享类当作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递的数据的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制。数据相同时,执行浅拷贝,仅复制指向数据块的指针,数据不同时则执行深拷贝。隐式共享技术可以大大降低对内存的开销及CPU资源的消耗,很大程度提高应用程序的运行效率。
QString类保存了16位的Unicode值,Unicode把所有语言都统一到一套编码里,Unicode提供UTF-8、UTF-16、UTF-32编码方式。UTF-8以字节为单位对Unicode进行编码,对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。
const char *c1 = "Hello";
QString s1(c1);
QString s("Hello");
QString s1(s); // 与QString s1 = s;效果等同
QChar c2[5] = {
'H', 'e', 'l', 'l', 'o'};
QString s2(c2);
QString s3("15");
// QString转int
int nAge = s3.toInt();// toInt(是否转换成功(bool),转换的进制);
// int转QString
QString s4(QString::number(nAge));
QString s5("3.14159");
// QString转float
float nPI = s5.toFloat();// toFloat(是否转换成功(bool));
// float转QString
QString s6(QString::number(nPI));
QString s7("1.4142135623731");
// QString转double
double n = s7.toDouble();// toDouble(是否转换成功(bool));
// double转QString
QString s8(QString::number(n));
QString转const char*需要借助QByteArray
const char *c3("Hello World!");
// const char*转QString
QString s9(c3);
// QString转QByteArray
QByteArray byteArray = s9.toUtf8(); // 头文件:QByteArray
// QByteArray转QString
QString s10(byteArray.data());
QString s11("2020-06-26 19:01:33");
// QString转QDateTime
QDateTime dateTime = QDateTime::fromString(s11, "yyyy-MM-dd hh:mm:ss");
// QDateTime转QString
QString s12(dateTime.toString("yyyy-MM-dd hh-mm-ss"));
QString s13("H");
// +
s13 = s13 + "ello";
// +=
s13 += " Wor";
// 尾部追加
s13.append("ld");
// 头部追加
s13.prepend("A ");
QString s14;
// A. sprintf()方法
s14.sprintf("%s%d%s", "鱼的记忆是",7,"秒的故事!");
// B. arg()组合方法
QString s15(QString("%1%2%3")
.arg("鱼的记忆是")
.arg(7)
.arg("秒的故事!"));
A、at()方法
B、下标运算符[]
QString s16("Hello World!");
// A、at()方法
QChar c4(s16.at(0));
// B、下标运算符[]
QChar c5(s16[0]);
A、头部插入 prepend()方法
B、尾部插入 append()方法
C、任意位置插入
D、修改字符串 replace()方法
QString s17("ell");
// A、头部插入 prepend()方法
s17.prepend("H");
// B、尾部插入 append()方法
s17.append("orld!");
// C、任意位置插入
s17.insert(5, " Wo");
// D、修改字符串 replace()方法
s17.replace(6, 5, "wORLD");
A、去除字符串两端空格 trimmed()方法
B、去除字符串两端空格,其他地方的空格以一个空格替代 simplified()方法
QString s18(" Hello World! ");
// A、去除字符串两端空格 trimmed()方法
s18 = s18.trimmed();
// B、去除字符串两端空格,其他地方的空格以一个空格替代 simplified()方法
QString s19(" Hello World! ");
s19 = s19.simplified();
A、头部查询 startsWith()方法
B、尾部查询 endsWith()方法
C、其他位置查询 contains()方法
QString s20("Tom and Jerry are good friends.");
// A、头部查询 startsWith()方法
bool isTom = s20.startsWith("tom", Qt::CaseInsensitive);
// B、尾部查询 endsWith()方法
bool isFriends = s20.endsWith("friends.", Qt::CaseInsensitive);
// C、其他位置查询 contains()方法
bool isGood = s20.contains("good", Qt::CaseInsensitive);
使用:compare()方法
// 使用compare()方法
int isCompare = QString::compare("tom", "Tom", Qt::CaseInsensitive);
使用:split()方法
QString s21("Hello World");
QStringList strList;
// 使用:split()方法
strList = s21.split(" ");
使用:mid()方法
QString s22("汤姆和杰瑞是好朋友");
// 使用:mid()方法
s22 = s22.mid(0,5);
<<运算符
尾部追加 append()方法
头部追加 prepend()方法
任意位置追加 使用:insert()方法
QStringList weekList;
// <<运算符添加元素
weekList << "星期二";
weekList << "星期三" << "星期四"
<< "星期五" << "星期六";
// 尾部追加
weekList.append("星期日");
// 头部追加
weekList.prepend("星期一");
// 任意位置追加
weekList.insert(0,"星期零")
for
foreach
// for
qDebug() << "使用for";
for(int i = 0; i < weekList.size(); i++) {
qDebug() << weekList[i]; // weekList[i]等同于weekList.at(i);
}
// foreach遍历
qDebug() << "使用foreach";
foreach (QString s, weekList) {
qDebug() << s;
}
STL风格迭代器(读写、只读)
Java风格迭代器(读写、只读)
// STL风格读写迭代器
qDebug() << "STL风格读写迭代器";
QStringList::iterator it_rw;
for(it_rw = weekList.begin(); it_rw != weekList.end(); ++it_rw){
qDebug() << *it_rw;
}
// STL风格只读迭代器
qDebug() << "STL风格只读迭代器";
QStringList::const_iterator it_r;
for(it_r = weekList.constBegin(); it_r != weekList.constEnd(); ++it_r) {
qDebug() << *it_r;
}
// Java风格读写迭代器
qDebug() << "Java风格读写迭代器";
QMutableListIterator<QString> itor_rw(weekList);
for(itor_rw.toFront();itor_rw.hasNext(); ) {
qDebug() << itor_rw.next();
}
// Java风格只读迭代器
qDebug() << "Java风格只读迭代器";
QListIterator<QString> itor_r(weekList);
for(itor_r.toFront();itor_r.hasNext(); ){
qDebug() << itor_r.next();
}
使用:contains()方法
参数:contains(要查找的字符串, 大小写是否敏感[带默认值]);
bool isContain = weekList.contains("星期一");
删除第一个元素 使用:removeFirst()方法
删除最后一个元素 使用:removeLast()方法
删除指定元素 使用:removeOne()方法
删除所有指定元素 使用:removeAll()方法
删除指定索引值元素 使用:removeAt()方法
清空链表 使用:clear()方法
// 删除第一个元素
weekList.removeFirst();
// 删除最后一个元素
weekList.removeLast();
// 删除指定元素
weekList.removeOne("星期三");
// 删除所有指定元素
weekList.removeAll("星期一");
// 删除指定索引值元素
weekList.removeAt(3);
// 清空链表
weekList.clear();