Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值
生活随笔
收集整理的這篇文章主要介紹了
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_ASCIIQt提供了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 WorldHello WorldHello WorldHello 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解析及文本段跨行赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python笔记-weditor的安装及
- 下一篇: MySQL笔记-免密码登录小技巧(运行参