Qt学习之--QString

  QString在Qt出镜相当之高,几乎无处没有它的影子。QString是Qt中最常用的用于处理与存储字符串对象。在本小节中,与笔者一起学习它的使用方法。

1. 字符串连接

(1)使用+= 

QString str = "User: ";
str += userName + "\n";

(2)使用append 

str = "User: ";
str.append(userName);
str.append("\n");

2. 格式化

(1)使用sprintf

str.sprintf("%s %.1f%%" , "perfect competition", 100.0);

(2)使用arg() 

str = QString("%1 %2 (%3s-%4s)\n")
        .arg("permissive")
        .arg("society")
        .arg(1950)
        .arg(1970);

3. 与数值之间的转换

(1)数值-->字串

str = QString::number(59.3);
str.setNum(293.4);

   可以带参。对于整数,可以设置进制,如2进制,8进制之类。对于浮点数,可以设置其精度。

(2)字串-->数值

    通用格式: QString::to<DataType>(bool *isOK);  如:

bool isOk;
double d = str.toDouble(&isOk);
int i = str.toInt(&isOk);

4. 字串提取

(1)从字符串中提取指定位置的字符串

str = "polluter pays principle";
cout << str.mid(9, 4) << endl;  // 从第9位开始取4个字符: pays
cout << str.mid(9) << endl;     // 从第9位开始取后面的所有字符串: pays principle
cout << str.left(8) << endl;    // 取前8个字符: polluter
cout << str.right(9) << endl;   // 取后9个字符: principle

(2)字串定位 

str = "the middle bit";
int i = str.indexOf("middle");

    上面的代码返回4。若没有找到指定的字串,则反回-1。

5. 字串检查

if (url.starstWith("http:") && url.endsWith(".png"))

    判断字串是否是以"http:"开头,以".png"结尾的字串。

6. 大小字转换: toLower(), toUpper()

7. 替换: replace()

8. 去除字串两边的空格

str = " \t Hi, I am fine. \n";
cout << str;
cout << str.trimmed();

   输出结果,去除了字串前后两边的空格、制表符、换行符。

    注:str 本身没有发生变化。

9. 拆分与合并

(1)拆分,通过split()函数将QString拆分成QStringList。

str = "Peter,John,Lily,Lucy,Ken";
QStringList slist = str.split(',');

  将上述的人名通过','进行拆分。

(2)合并

<span></span>QStringList slist;
slist.append("Shanghai");
slist.append("Beijing");
slist.append("Shengzhen");
QString str1 = slist.join("/");<span></span> QString str1 = slist.join("/");
cout << str1;

将QStringList成员中所有QString单无用"/"合并成一个QString。

10. 字符串与QString转换

(1)字符串转QString,这个过程通常是自动转换的。

QString str1("hello");
QString str2 = "Hi";

(2)QString转字符串

时间: 2025-01-02 11:07:58

Qt学习之--QString的相关文章

Qt 学习之路 2 --- 读书笔记

一.文章来由 来自豆子老师非常好的一本Qt教程,但是只有网络版,所以用这个做笔记了,不动笔墨不读书嘛~~ 二.读书笔记 1.Qt 学习之路 2(2):Qt 简介 1.1 关于 Qt 的一站式解决 Qt 是一个著名的 C++ 应用程序框架.但并不只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个"一站式"的解决方案:不再需要研究 STL,不再需要 C++ 的,不再需要到处去找解析 XML.连接数据库.访问网络的各种第三方库,因为

qt qstring-为什么QT需要封装QString,而不需要封装 int double ???? 真心求解

问题描述 为什么QT需要封装QString,而不需要封装 int double ???? 真心求解 做了一些QT的小项目,自己也写了 QStingtoStr的一些转换函数,可是不懂QT为什么非要把string给封装了,又不提供转换的函数. 解决方案 下面这些还不够吗,还要自己写转换方法? std::string QString::toStdString () const Returns a std::string object with the data contained in this QS

Qt学习之路(12):菜单和工具条

在前面的QMainWindow的基础之上,我们开始着手建造我们的应用程序.虽然现在已经有一个框架,但是,确切地说我们还一行代码没有写呢!下面的工作就不那么简单了!在这一节里面,我们要为我们的框架添加菜单和工具条. 就像Swing里面的Action一样,Qt里面也有一个类似的类,叫做QAction.顾名思义,QAction类保存有关于这个动作,也就是action的信息,比如它的文本描述.图标.快捷键.回调函数(也就是信号槽),等等.神奇的是,QAction能够根据添加的位置来改变自己的样子 --如

Qt学习笔记 ListWidget的增删改

学习了一下ListWidget控件的使用,做一个小功能增删改 先把代码分解最后给出完整代码 在窗体上添加一个ListWidget 一个Horizontal Specer和  三个PushButton 效果如下 因为构造函数中的SetupUi(this)会自动将符合on_objectName_signalName()命名 的任意槽与相应的objectName的signalName()信号连接到一起 我就直接在.h文件里添加槽的声明  private slots: void on_btn_AddEv

Qt学习之路(34):国际化(下)

上次说了国际化的过程,现在来看一下具体的国际化的相关代码. 在代码中,我们使用tr()将需要翻译的字符串标记出来.lupdate工具就是提取出tr()函数中的相关字符串.tr()函数是QObject类的一个static函数,其签名如下: static QString tr(const char *sourceText, const char *comment = 0, int n = -1); 虽然我们只传了一个参数,但是实际上tr()函数是接受3个参数的.第一个参数是我们需要翻译的文字,如果使

Qt学习之路(33):国际化(上)

2D绘图部分基本告一段落,还在想下面的部分要写什么,本来计划先说下view-model的相关问题,但是前面看到有朋友问关于国际化的问题,所以现在先来说说Qt的国际化吧! Qt中的国际化的方法有很多,常用的有使用QTextCodec类和使用tr()函数.前者将编码名称写到代码里面,除非你使用Unicode 编码,否则国际化依然是一个问题:后者就不会有这个问题,并且这也是Qt推荐的做法.因此,我们主要来说使用tr()函数的方法进行应用程序的国际化. 我们先来看一个很简单的MainWindow.为了清

Qt学习之路(24):QPainter

多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子.因为event比较难做例子,也就没有去写,只是把大概写了一下.今天带来的是新的部分,有关Qt的2D绘图.这部分不像前面的内容,还是比较好理解的啦!所以,例子也会增加出来. 有人问豆子拿Qt做什么,其实,豆子就是在做一个Qt的画图程序,努力朝着Photoshop和GIMP的方向发展.但这终究要经过很长的时间.很困难的路程的,所以也放在网上开源,有兴趣的朋友可以来试试的呀- 好了,闲话少说,来继续我们的学习吧! Qt的绘图系

Qt学习之路(23):自定义事件

Qt允许你创建自己的事件类型,这在多线程的程序中尤其有用,当然,也可以用在单线程的程序中,作为一种对象间通讯的机制.那么,为什么我需要使用事件,而不是使用信号槽呢?主要原因是,事件的分发既可以是同步的,又可以是异步的,而函数的调用或者说是槽的回调总是同步的.事件的另外一个好处是,它可以使用过滤器. Qt中的自定义事件很简单,同其他类似的库的使用很相似,都是要继承一个类进行扩展.在Qt中,你需要继承的类是QEvent.注意,在Qt3中,你需要继承的类是QCustomEvent,不过这个类在Qt4中

Qt学习之路(19):事件(event)

前面说了几个标准对话框,下面不打算继续说明一些组件的使用,因为这些使用很难讲完,很多东西都是与实际应用相关的.实际应用的复杂性决定了我们根本不可能把所有组件的所有使用方法都说明白.这次来说说Qt相对高级一点的特性:事件. 事件(event)是有系统或者Qt本身在不同的时刻发出的.当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件是在对用户操作做出响应的时候发出,如键盘事件等:另一些事件则是由系统自动发出,如计时器事件. 一般来说,使用Qt编程时,我们并不会把