跳至主要內容

Qt

LincZero大约 2 分钟

Qt

目录

QString字符串类

标准C++提供了两种字符串,而Qt提供了QString字符串类

  • C语言风格的以“\0”字符结尾的字符数组(C++)
  • 字符串类String(C++)
  • Qt字符串类QString(Qt)

QString类

保存16位Unicode值,提供丰富的操作、查询和转换等函数

进行了隐式共享implicit sharing)、高效的内存分配策略等优化

注意:QString输出时是带双引号的

符号操作

  • +,组合字符串
  • +=,组合字符串
  • =,可以用双引号引起来的C类型字符串构造函数

字符串函数 - 组合字符类

  • QString::append(),尾部追加字符串
    • 与+=操作符功能相同
    • 例:str1.append("world");
  • QString::sprintf(),格式化组合字符串
    • 格式定义与C++库中函数sprintf()定义的一样
    • 例:str.sprintf("%s %s","Hello ","World!")
  • QString:arg(),格式化组合字符串
    • 相对于QString::sprintf()QString:arg()是一个比较好的解决方案:类型安全,完全支持Unicode,允许改变%n参数的顺序
    • 例:str = QString(".%1 was born in %2.").arg("John").arg(1998);
  • insert(),原字符串特定位置插入另一字符串
  • prepend(),原字符串开头插入另一字符串
  • replace(),用自定字符串代替原字符串中某些字符
  • QString::trimmed(),移除字符串两端的空白字符
  • QString::simplified(),移除字符串两端的空白字符,使用单个空格字符“ ”代替字符串中出现的空白字符

字符串函数 - 查询字符串类

  • QString::startsWith(),判断一个字符串是否以某个字符串开头。第一个参数指定一个字符串,第二个参数指定是否大小写敏感,默认是
  • QString::endsWith(),判断一个字符串是否以某个字符串结尾
  • QString::contains(),判断一个字符串是否出现过

字符串函数 - 比较两个字符串

  • operator<(const QString&)
  • operator<=(const QString&)
  • operator==(const QString&)
  • operator>=(const QString&)
  • localeAwareCompare(const QString&, const QString&)
  • compare(const QString&, const QString&, Qt::CaseSensitivity)

字符串函数 - 字符串的转换

字符串转换为数值类型

  • QString::toInt()
  • QString::toDouble()
  • QString::toFloat()
  • QString::toLongLong()

字符串转换为其他字符编码集。会返回一个const char*类型版本的QByteArray

  • toAscii()
  • toLatin1()
  • toUtf8()
  • toLocal8Bit()

隐式共享(又称回写复制)

《Qt5开发及实例》P52

内存分配策略

《Qt5开发及实例》P53

QString

  • 头文件
    • #include <QString> (但好像不加也行,不知道被哪个头文件给包含了)
  • 方法
    • 格式化字符串:QString("x=%1 y=%2").arg(x).arg(y);
  • 补充
    • 类似于string类
    • 打印出来是带引号的,解决方法:qstring.toUtf8().data()(先转换成QByteArray再转成char *)

QStringList / QList<QString>

  • 头文件
    • (但好像不加也行,不知道被哪个头文件给包含了)
  • 使用
    • QStringList list1; list1 << "1" << "2";,调用list1[i]
    • QList<QString> list2; list2 << "1" << "2";,调用list2.at(i);

QDebug(调式输出)

  • 头文件
    • #include <QDebug>
  • 使用
    • qDebug() << "调试信息";或者qDebug("调试信息");(但我用后者时好像不行)