【QString 函数学习篇】

news2024/10/5 20:17:42

【QString 函数学习篇】

  • 【1】UI设计布局
  • 【2】QChar | setAlignment |
  • 【3】sprintf | asprintf | setNum | number |
  • 【4】toInt | toUpper [十进制->十六进制 | 十进制->二进制]
  • 【5】clear | append
  • 【6】二进制->十六进制 | 二进制->十进制
  • 【7】prepend
  • 【8】strimmed
  • 【9】simplified
  • 【10】indexOf | replace
  • 【11】lastIndexOf
  • 【12】isNull | isEmpty
  • 【13】startWith
  • 【14】endsWith
  • 【15】left | right
  • 【16】section


【1】UI设计布局

布局按照自己的风格来就行,重点掌握QString的这些方法
在这里插入图片描述
在这里插入图片描述


【2】QChar | setAlignment |

在qt里面,QChar占2个字节,这意味在一串字符串中,一个汉字算一个字符
qchar类提供了一个16位的单码字符。

[slot] void QTextEdit::setAlignment(Qt::Alignment a)
将当前段落的对齐方式设置为a。
textBrowser:只作为文本浏览框,里面的内容不可写,但能复制

在这里插入图片描述

ui->textBrowser->setAlignment(Qt::AlignCenter | Qt::AlignHCenter);//水平居中 垂直居中
ui->textBrowser->append("QChar 大小字节="+QString::number(sizeof(QChar)));//2byte

QString 学习,采用堆积部件分页显示

【stackedWidget】 此属性保留可见的小部件的索引位置,如果没有当前小部件,则当前索引为-1。默认情况下,此属性包含一个值-1,因为堆栈最初为空。

void MainWindow::on_str_clicked()
{
    ui->stackedWidget->setCurrentIndex(0);//第0页
    ui->lineEdit_zj->clear();
}

【3】sprintf | asprintf | setNum | number |

sprintf】->安全地从格式字符串cfromat和任意参数列表构建格式化字符串。
asprintf】->格式字符串支持标准c库中由printf()提供的转换说明符、长度修改符和标志。cfromat字符串和%s参数必须是utf-8编码的。
number】->根据指定的基数返回一个等效于数字n的字符串。默认情况下,基数为10,并且必须介于2和36之间。对于除10以外的基数,n被视为无符号整数。
setNum】->将字符串设置为指定基数中的打印值n,并返回对该字符串的引用。默认情况下,基数为10,并且必须介于2和36之间。对于除10以外的基数,n被视为无符号整数。

//总价计算按钮 1
void MainWindow::on_str_1_clicked()
{
    ui->textBrowser->append("整形| 浮点型| 转化为:字符串类型");
    //开始计算
    QString str = ui->lineEdit_num->text();//数量
    bool ok;
    int num = str.toInt(&ok,10);
    str = ui->lineEdit_dj->text();//单价
    float price = str.toFloat();
    float total = num*price;
    //以下方式输出相同
    str = str.sprintf("%.2f",total);//方式1
    str = QString::asprintf("%.2f",total);//方式2
    str = QString::number(total,'f',2);//方式3
    str = str.setNum(total,'f',2);//方式4
    ui->lineEdit_zj->setText(str);//总价
}

在这里插入图片描述

【4】toInt | toUpper [十进制->十六进制 | 十进制->二进制]

【toInt】返回使用基底转换为int的字符串,默认为10,必须在2和36之间,或0之间。如果转换失败,则返回0。如果发生转换错误,则ok设置为false;否则ok设置为true。如果以基数为0,则使用c语言约定:如果字符串以&0开头,则使用基数16;如果字符串以0开头,则使用基数8;否则,使用基数10。
【toUpper】返回该字符串的大写。

//十进制->十六进制
//十进制->二进制
void MainWindow::on_str_2_clicked()
{
    ui->textBrowser->append("十进制转化为:二进制 | 十六进制");

    QString str=ui->lineEdit_sjz->text();//获取十进制数
    int val = str.toInt();
    str = QString::number(val,16).toUpper();//大写16进制
    ui->lineEdit_sljz->setText(str);
    str = QString::number(val,2);//二进制
    ui->lineEdit_ejz->setText(str);
}

在这里插入图片描述

【5】clear | append

【append】在文本编辑的末尾附加一个带有文本的新段落。
注:附加的新段落将具有与当前段落相同的字符格式和方块格式,由光标的位置决定。
【clear】清除行编辑的内容。

//清空
void MainWindow::on_clear_clicked()
{
    ui->textBrowser->append("清空进制输入框");
    ui->lineEdit_sjz->clear();
    ui->lineEdit_sljz->clear();
    ui->lineEdit_ejz->clear();
}

在这里插入图片描述

【6】二进制->十六进制 | 二进制->十进制

注意:必须这样,不然二进制无法转化
QString str = ui->lineEdit_ejz->text();//获取二进制
bool ok;
int val = str.toInt(&ok,2);//以二进制数读入

//二进制->十六进制
//十进制<-二进制
void MainWindow::on_str_3_clicked()
{
    ui->textBrowser->append("二进制转化为:十进制 | 十六进制");
    QString str = ui->lineEdit_ejz->text();//获取二进制
    bool ok;
    int val = str.toInt(&ok,2);//以二进制数读入

    str = QString::number(val,10);//转化为十进制
    ui->lineEdit_sjz->setText(str);

    str = str.setNum(val,16);//转化为十六进制
    str = str.toUpper() ;
    ui->lineEdit_sljz->setText(str);
}

在这里插入图片描述

【7】prepend

QString &QString::prepend(const QString &str)

【prepend 】将字符串str前置到此字符串的开头,并返回对此字符串的引用。

Example:

  QString x = "ship";
  QString y = "air";
  x.prepend(y);
  // x == "airship"
//prepend 按钮
void MainWindow::on_pushButton_clicked()
{
    QString s1="好";
    ui->textBrowser->append("prepend:在已有字符串前面添加字符串");
    ui->textBrowser->append("s1=好");
    ui->textBrowser->append("s1="+s1.prepend("你"));
}

在这里插入图片描述

【8】strimmed

【strimmed 】返回从开头和结尾删除空格的字符串。

Example:

  QString str = "  lots\t of\nwhitespace\r\n ";
  str = str.trimmed();
  // str == "lots\t of\nwhitespace"

//strimmed 按钮
void MainWindow::on_pushButton_9_clicked()
{
    ui->textBrowser->append("strimmed:去掉字符串首尾的空格");
    QString str="  hello  world ?    ";
    ui->textBrowser->append("str= "+str);
    ui->textBrowser->append("str= "+str.trimmed());
}

在这里插入图片描述

【9】simplified

QString QString::simplified() const

【simplified 】返回一个字符串,该字符串从开头和结尾都删除了空格,并且将每个内部空格序列替换为单个空格。

//simplified 按钮
void MainWindow::on_pushButton_10_clicked()
{
    ui->textBrowser->append("simplified:去掉字符串首尾的空格和中间连续空格变为一个空格");
    QString str="  hello    world   ?    ";
    ui->textBrowser->append("str= "+str);
    ui->textBrowser->append("str= "+str.simplified());
}

【10】indexOf | replace

int QString::indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Qt::CaseInsensitive 0 不区分大小写
Qt::CaseSensitive 1 区分大小写

【indexOf 】返回此字符串中第一个出现的字符串str的索引位置,即从中的索引位置向前搜索。如果没有找到str,则返回-1。
如果cs是Qt::CaseSensitive(默认),则搜索区分大小写,否则搜索不区分大小写。
【replace】将从索引位置开始的n个字符替换为后面的字符串,并返回对此字符串的引用。
注意:如果指定的位置索引在字符串内,但位置n超出了字符串范围,那么n将被调整为停止在字符串的末尾。

//indexOf 按钮
void MainWindow::on_pushButton_4_clicked()
{
    ui->textBrowser->append("indexOf:查找某个字符串出现的位置索引");
    QString str="Qt5QT5.9Studymain.cpp";
    ui->textBrowser->append("str= Qt5QT5.9Studymain.cpp");
    ui->textBrowser->append("5.9 index="+QString::number(str.indexOf("5.9"),'f',0));

    //替换5.9 变成6.9
    ui->textBrowser->append("replace函数 = 替换5.9 变成6.9");
    ui->textBrowser->append("str= "+str.replace(str.indexOf("5.9"),3,"6.9"));
}

在这里插入图片描述

【11】lastIndexOf

int QString::lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

【lastIndexOf】返回此字符串中最后一次出现的字符串str的索引位置,并从中的索引位置向后搜索。如果从为-1(默认),搜索从最后一个字符开始;如果从为-2,则位于最后一个字符,以此类推。如果没有找到str,则返回-1。

//lastIndexOf 按钮
void MainWindow::on_pushButton_7_clicked()
{
    ui->textBrowser->append("lastIndexOf:查找某个字符串出现的末尾索引");
    QString str="Qt5QT5.9Studymain.cpp";
    ui->textBrowser->append("str= Qt5QT5.9Studymain.cpp");
    ui->textBrowser->append("5 index="+QString::number(str.lastIndexOf("5"),'f',0));
}

在这里插入图片描述

【12】isNull | isEmpty

isNull:只有 ‘\0’的字符串 ,也不是Null
isEmpty:只有’\0’的字符串 ,也是Null

//isNull isEmpty 按钮
void MainWindow::on_pushButton_11_clicked()
{
     ui->textBrowser->append("isNull:只有 \"\\0\"的字符串 ,也不是Null (str =\"\")");
     ui->textBrowser->append("isEmpty:只有 \"\\0\"的字符串 ,也是Null (str =\"\")");
}

在这里插入图片描述

【13】startWith

bool QString::startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

【startWith】如果字符串以s开头,则返回true;否则将返回false。如果cs是qt::区分大小写(默认),则搜索区分大小写,否则搜索不区分大小写。

//startWith 按钮
void MainWindow::on_pushButton_8_clicked()
{
    ui->textBrowser->append("startWith:判断是否以某个字符串开头");
    QString str = "c:sdjfdfjjdksj.cpp";
    ui->textBrowser->append(QString("%1").arg(str.startsWith("c:",Qt::CaseSensitive)));
}

在这里插入图片描述

【14】endsWith

bool QString::endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

【endsWith】如果字符串以s结尾,则返回true;否则返回false。如果cs是qt::区分大小写(默认),则搜索区分大小写,否则搜索不区分大小写。

//endsWith 按钮
void MainWindow::on_pushButton_6_clicked()
{
    ui->textBrowser->append("endsWith:判断是否以某个字符串结尾");
    QString str = "c:sdjfdfjjdksj.cpp";
    ui->textBrowser->append(QString("%1").arg(str.endsWith(".cpp",Qt::CaseSensitive)));
}

在这里插入图片描述

【15】left | right

QString QString::left(int n) const
QString QString::right(int n) const

【left】返回一个包含该字符串最左边n个字符的子字符串。如果n大于或等于大小(),或小于零,则返回整个字符串。
【right】返回一个包含该字符串最右边n个字符的子字符串。如果n大于或等于大小(),或小于0,则返回整个字符串。

//left | right 按钮
void MainWindow::on_pushButton_2_clicked()
{
    ui->textBrowser->append("left | right:获取某个字符串个数");
    QString str = "1234,567,89,10";
    ui->textBrowser->append("str = \"1234,567,89,10\"");
    ui->textBrowser->append("left(4) ="+str.left(4));
    ui->textBrowser->append("right(4) ="+str.right(4));
}

在这里插入图片描述

【16】section

QString QString::section(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const

【section】此函数返回该字符串的一部分。此字符串被视为由字符分隔的字段序列,返回的字符串由从位置开始到位置结束的字段组成。
如果未指定end,则将包含从位置开始到字符串末尾的所有字段。
【字段的编号为0、1、2等,从左计数, 】【和-1、-2等, 从右到左计数】。flags参数可以用来影响函数行为的某些方面,例如是否区分大小写,是否跳过空字段,以及如何处理前导和尾随分隔符;

QString str;
QString data = "forename**middlename**surname**phone";
 str = data.section("**", 2, 2); // str == "surname"
 str = data.section("**", -3, -2); // str == "middlename**surname"
//section 按钮
void MainWindow::on_pushButton_5_clicked()
{
     ui->textBrowser->append("section:以某个字符串分割,从那个位置获取,获取第几个");
     QString str = "123,456,22,ff,55";
     ui->textBrowser->append("str = \"123,456,22,ff,55\"");
     ui->textBrowser->append("str.section(\",\",0,0) ="+str.section(",",0,0).toUtf8());
     ui->textBrowser->append("str.section(\",\",4,4) ="+str.section(",",4,4).toUtf8());
}

在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计SSM基于的餐厅管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

(十二)Vue之列表渲染

文章目录基本列表遍历数组遍历对象遍历字符串遍历指定次数key的原理虚拟DOM中key的作用用index作为key可能会引发的问题如何选择keyVue学习目录 上一篇&#xff1a;&#xff08;十一&#xff09;Vue之条件渲染 基本列表 在vue里基本的列表渲染可以使用v-for指令 v-for指令: …

Reactor手册

Flux Flux 是一个发出0-N个元素组成的异步序列的Publisher,可以被onComplete信号或者onError信号所终止。 Flux.just("Hello", "World").subscribe(System.out::println);// fromArray()&#xff0c;fromIterable()&#xff0c;fromStream()Flux.fromArra…

K8s 核心组件介绍

目录前言一、控制平面组件1.1 kube-apiserver1.2 etcd1.3 kube-scheduler1.4 kube-controller-manager1.5 cloud-controller-manager二、Node 组件2.1 kubelet2.2 kube-proxy2.3 Container Runtime前言 一个完整的 K8s 集群由一组节点&#xff08;node&#xff09;服务器组成&…

组队-蓝桥杯

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 作为篮球队教练&#xff0c;你需要从以下名单中选出 11 号位至 55 号位各一名球员&#xff0c;组成球队的首发阵容。 每位球员担任 11 号位至 55 号位时的评分如下…

关于人脸检测和人脸关键点检测的详解(涉及Opencv 和Dlibd)

关于人脸识别&#xff0c;大家入门opencv&#xff0c;最常见的是用opencv级联分类器器里面的函数进行人脸的识别&#xff08;当然里面包含很多各种物体的分类器&#xff0c;大家可以一一测试&#xff09;&#xff0c;今天我们来练一下关于人脸识别的级联器。 1&#xff0c;ope…

数据仓库(DW)、数据湖、数据中台的关系

一句话说明&#xff1a;数据中台是一套体系&#xff0c;既不是工具又不是存储&#xff0c;它可以包含数据湖和数据仓库。 数据仓库 数据仓库是一个面向主题的、集成的、随时间变化但信息本身相对稳定的数据集合&#xff0c;用于支持管理决策过程。其本质就是完成从面向业务过程…

[附源码]Python计算机毕业设计Django-菜篮子系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

一文学会jenkins pipline自动化构建

01 Pipeline流水线基本语法 首先创建 在jenkins上创建一个pipeline的流水线任务 新建ITEM–>选择流水线 基本pipeline脚本结构 pipeline {//agent 表示要执行的节点&#xff0c;any表示任意节点 agent any //stages表示任务执行时的所有步骤集合 stages { /…

企业销售CRM的主要优势是什么?

民营企业商品销售CRM的主要就竞争优势是什么? 新一代研究说明&#xff0c;由于差劲的顾客新体验&#xff0c;或内公司每月经济损失750亿元。为了更快地介绍您的顾客&#xff0c;您须要两个智能化的顾客管理工作系统。因而&#xff0c;您能提供更多直接影响您的商品销售的高质…

Python调用C++

1 背景 python被称为胶水语言&#xff0c;其优势是能够粘结各种不同的语言。同时&#xff0c;python有着更大的“亲民性”&#xff0c;很容易进行开发。但是&#xff0c;python最大的问题就是计算速度不够。通常可以用CUDA或者C对一个python程序进行加速&#xff0c;加速策略如…

【LeetCode】单词搜索 II [H](前缀树)

212. 单词搜索 II - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&am…

QT系列第2节 QT中元对象系统

QT是在标准C上进行了扩展&#xff0c;所以就有自己的特性&#xff0c;其中元对象系统就是其一。元对象系统有点类似于java和go语言中的反射&#xff0c;让我们在编程时解决问题多了些方法和思路&#xff0c;关于元对象可以简单总结出以下内容项。 目录 一.元对象要点总结 二…

Linux转发性能评估与优化之——转发瓶颈分析与解决方案

线速问题 很多人对这个线速概念存在误解。认为所谓线速能力就是路由器/交换机就像一根网线一样。而这&#xff0c;是不可能的。应该考虑到的一个概念就是延迟。数据包进入路由器或者交换机&#xff0c;存在一个核心延迟操作&#xff0c;这就是选路&#xff0c;对于路由器而言&…

软件工程复习简略

软件工程复习简略1.什么是软件生存周期&#xff1f;通常可划分为哪些阶段&#xff1f;2.简述需求分析要经过哪些步骤&#xff0c;每个步骤的作用。3.详细设计有哪些常用工具&#xff1f;&#xff08;注意Pad图的画法&#xff09;4.软件测试的目的和原则是什么&#xff1f;5.测试…

pythonselenium自动化测试实战项目(完整、全面)

前言 之前的文章说过&#xff0c; 要写一篇自动化实战的文章&#xff0c; 这段时间比较忙再加回家过11一直没有更新博客&#xff0c;今天整理一下实战项目的代码共大家学习。&#xff08;注:项目是针对我们公司内部系统的测试&#xff0c;只能内部网络访问&#xff0c;外部网络…

【SpringCloud负载均衡】【源码+图解】【三】LoadBalancer的工作原理

【SpringCloud负载均衡】【源码图解】【二】LoadBalancer配置 目录3. LoadBalancer的工作原理3.1 创建LoadBalancerRequest3.2 创建上下文3.2.1 properties3.2.2 configurations3.2.3 contexts3.3 获取ReactiveLoadBalancer3.4 获取ServiceInstance3.5 向serviceInstance请求结…

Java要学到什么程度才可以找工作?

Java为不同的集合提供了一个集合框架。集合基于数据结构&#xff0c;比如常见的&#xff1a;列表、数组、集合、哈希图等等。因此&#xff0c;在研究集合时&#xff0c;最好了解一点数据结构的相关知识。 主要副题&#xff1a; List Set Map ArrayList LinkedList Queue…

web3:智能合约-虚拟机(EVM、HVM、WASM、MOVE)

在区块链上&#xff0c;用户通过运行部署在区块链上的合约&#xff0c;完成需要共识的操作。而为智能合约提供运行环境的便是对应的虚拟机。 目录EVM基础概念技术细节EVM的存储模型交易在EVM的执行普通转账交易智能合约的创建或者调用EVM机器语言与现有的虚拟机科技作比较EVM的…

Java中类的复用

类的复用&#xff08;组合与继承&#xff09; 第一种方法&#xff1a;只需在新类中产生现有类的对象&#xff0c;新类由现有类组成&#xff0c;也称为组合&#xff0c;该方法只是复用了现有程序代码的功能&#xff1b; 第二种方法&#xff1a;按现有类来创建新类&#xff0c;…