Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值相关的知识,希望对你有一定的参考价值。

QString的许多成员函数都被重载了,用于接收const char *。包括拷贝构造函数、分配符、操作符

insert()、replace()、indexOf()。上述的函数都被优化避免const char *传入后调用拷贝构造函数。

如下例子,假如str为QString。

  if (str == "auto" || str == "extern"
          || str == "static" || str == "register") {
      ...
  }

会比下面这种操作更加的快:

  if (str == QString("auto") || str == QString("extern")
          || str == QString("static") || str == QString("register")) {
      ...
  }

下面这种方式调用了4次QString的构造函数,会深拷贝里面的数据内容。

如果项目中定义了QT_NO_CAST_FROM_ASCII,就不能直接调用QString的const char *这个API。

在.pro文件中定义

DEFINES += QT_NO_CAST_FROM_ASCII

Qt提供了QLatin1String类,这个是对const char *的简单封装,使用QLatin1String的代码如下:

  if (str == QLatin1String("auto")
          || str == QLatin1String("extern")
          || str == QLatin1String("static")
          || str == QLatin1String("register") {
      ...
  }

这种相似效率和

  if (str == "auto" || str == "extern"
          || str == "static" || str == "register") {
      ...
  }

这种的一致。

QString(QLatin1String)的这个构造函数,使得开发越来越方便

QLabel *label = new QLabel(QLatin1String("MOD"), this);

下面是关于文本段跨行的赋值

有三种方式:

①每一行用引号引起了,在换行的地方加\\斜线;

②每一行用引号引起了;

③R"()"包裹。

代码如下:

#include <QCoreApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    const auto cmd1 = QLatin1String("Hello World"
                                    "Hello World"
                                    "Hello World"
                                    "Hello World");
    const auto cmd2 = QLatin1String(R"(Hello World
                                    Hello World
                                    Hello World
                                    Hello World)");

    const auto cmd3 = QLatin1String("Hello World"\\
                                    "Hello World"\\
                                    "Hello World"\\
                                    "Hello World");

    const auto cmd4 = QString("Hello World\\r\\n"\\
                                    "Hello World\\r\\n"\\
                                    "Hello World\\r\\n"\\
                                    "Hello World\\r\\n");

    qDebug() << "cmd1:" << cmd1;
    qDebug() << "cmd2:" << cmd2;
    qDebug() << "cmd3:" << cmd3;
    qDebug() << "cmd4:" << cmd4;


    return a.exec();
}

程序运行截图如下:

 

以上是关于Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值的主要内容,如果未能解决你的问题,请参考以下文章

Qt文档阅读笔记-DTLS server解析

Qt文档阅读笔记-Simple Chat Example解析

Qt文档阅读笔记-Broadcast Sender Example解析

Qt文档阅读笔记-QtConcurrent Progress Dialog Example解析

Qt文档阅读笔记-QNetworkProxy::ProxyType解析(Qt设置Fiddler代理)

Qt文档阅读笔记-QNetworkProxy::ProxyType解析(Qt设置Fiddler代理)