【QString 函数学习篇】

article/2025/9/12 6:52:45

【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);//方式1str = QString::asprintf("%.2f",total);//方式2str = QString::number(total,'f',2);//方式3str = str.setNum(total,'f',2);//方式4ui->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.9ui->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://chatgpt.dhexx.cn/article/FAnHNUms.shtml

相关文章

Qt扫盲-QString使用总结

QString使用总结 一、概述二、初始化字符串1、极速版2、原理版 三、操作字符串1、极速版1. 增加2. 删除3. 修改4. 插入5. 转换 2、原理版 四、查询字符串五、字符串格式转换六、Null 字符串和 Empty 字符串的区别七、字符串参数格式化八、更高效的字符串构造九、最大大小和出现…

Qt之QString字符串类的详细介绍及功能函数示例用法

前序&#xff1a;为了加深对Qt各个类的认识和了解&#xff0c;决定以后再闲暇的时间对Qt类进行详细的阅读&#xff08;基于Qt cteater 的帮助文档&#xff09;&#xff0c;这样既可以提高自己的英文阅读能力&#xff0c;也可以对各个类有一个更加深入的认识和了解。 注&#xf…

QString类详解

文章目录 一、简要介绍1.1 隐式共享 二、常用方法2.1 常用构造函数2.2 字符串与数值之间的转换2.3 添加字符串2.4 大小写转换2.5 长度2.6 其他常用函数 一、简要介绍 在Qt中表示字符串的类是QString类&#xff0c;它存储字符串是采用的Unicode码&#xff0c;编码方式是使用UTF…

QString(详解)

目录 一、QString转char* 二、合并字符串 三、分割字符串 split()函数 mid(pos,n)函数 QString::section truncate(int)函数&#xff0c;从指定位置截断字符串str 四、去除字符串两端的空白 QString::trimmed()函数 QString::simplified()函数 五、查找是否包含字符…

Java——JLabel自动换行问题

┏(ω)☞ 本专栏的目录&#xff08;为您提供更好的查询方式&#xff09;&#xff08;点这里说不定有你想要的&#xff09; JLabel类可显示文本&#xff0c;一般直接添加文字会导致如下问题&#xff08;字体显示不全&#xff09;&#xff0c;在不同过增加文本框的长度的情况下可…

JLabel展示文本和图片

JLabel 构造方法 JLabel&#xff08;&#xff09;创建一个不含图像&#xff0c;不含文本的 JLabel 对象 JLabel&#xff08;String text&#xff09;使用指定的文本创建一个 JLabel 对象 JLabel&#xff08;Icon image&#xff09;创建一个具有指定图像的 JLabel 对象 pack…

java设置JLabel字体字号颜色

JLabel jl; Font f new Font("宋体",Font.PLAIN,16); jl.setFont(f); jl.setForeground(Color.red); 效果图&#xff1a;

JLabel设置背景颜色和设置文字颜色

JLabel设置背景颜色&#xff1a; JLabel light1 new JLabel("wuli"); light1.setOpaque(true); //此句是重点&#xff0c;设置背景颜色必须先将它设置为不透明的&#xff0c;因为默认是透明的。。。 light1.setBackground(Color.GREEN); JLabel设置文字颜色&…

【Java|Swing】关于JLabel换行

最近在用Swing做Windows的窗口程序&#xff0c;在使用JLabel时发现使用\n没办法换行&#xff0c;于是乎借助百度一下弄懂了JLabel是如何实现换行的。 先可以看一下使用\n的效果 JLabel labelnew JLabel("数据版本\nv1.0.0"); 运行测试 很明显&#xff0c;换行失败了…

初识JFrame、JPanel、JLabel

JFrame&#xff1a;java图形化界面设计&#xff0c;是一个顶层的框架类&#xff0c;相当于容器。好比一个窗户的框子&#xff0c;这个框子可以嵌入几个玻璃窗。 JPanel&#xff1a;也是一个容器类&#xff0c;相当于一个大玻璃窗。 JLabel&#xff1a;是一些基础组件&#xff0…

JFrame,JPanel,JLabel详解

JFrame是一个顶层的框架类&#xff0c;好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。 JPanel是一个容器类&#xff0c;相当于一大玻璃窗。 JLabel等是一些基础组件&#xff0c;它必须置于某个容器里&#xff0c;类似于窗花、剪纸&#xff0c;必须置于窗户…

Java图形界面之JFrame,JLabel,JButton

Java图形界面之JFrame&#xff0c;JLabel&#xff0c;JButton 前言 ​ Java第一卷​ 图形界面第一节 JFrame package Demo03;import javax.swing.*; import java.awt.*;public class JFrame01 {public static void main(String[] args) {JFrame f new JFrame("第一个Swi…

Java GUI编程4---标签组件JLabel

1. 认识JLabel JLabel组件表示的是一个标签&#xff0c;本身是用于显示信息的&#xff0c;一般情况下是不能直接更改器显示内容的。创建完的Label对象可以通过Container类中的add()方法&#xff0c;加入到容器中&#xff0c;JLabel类的常用方法和常量如下表所示。 序号常量描…

JLabel标签较为常见部分的使用方法

本篇文章将会教会大家如何使用JLabel 1添加JLabel //创建一个标签 JLabel jLabel new JLabel("Hi,我是标签"); //添加到面板 Jpanel1.add(jLabel); //将面板添加到窗口 jFrame.add(Jpanel1);2设置文本颜色 //设置文本颜色 jLabel.setForeground(Color.green);3设…

Java基础-JLable组件、文本框组件、JPanel轻量级容器、Swing事件处理三种方式、适配器

1、JLable标签组件 标签是一种可以包含文本和图片的非交互组件&#xff0c;其文本可以是单行文本&#xff0c;也可以是 HTML 文本。对于只包含文本的标签可以使用 JLabel 类&#xff0c;该类的主要构造方法有如下几种形式。 JLabel()&#xff1a;创建无图像并且标题为空字符串…

06.JavaSwing(基础组件——JLabel类)

软件界面是软件和用户之间的交流平台&#xff0c;而组件则是绘制软件界面的基本元素&#xff0c;是软件和用户之间的交流要素。 一、概述 JLabel组件用来显示文本和图像&#xff0c;可以只显示其一种&#xff0c;也可以同时显示。JLabel类提供了一些列用来设置标签的方法。 二…

从DTW到DILATE---时序预测损失函数总结

时间序列预测损失函数 时间序列预测是指通过分析历史数据来预测未来数据的变化趋势。时间序列预测在许多领域都有着广泛的应用&#xff0c;例如金融、气象、交通等。为了能够准确预测未来数据&#xff0c;时间序列预测中损失函数的选择非常关键。损失函数的选择直接影响模型的…

DTW算法——matlab实现(二)

DTW算法——Matlab实现 本文只是简单的介绍DTW算法的目的和实现。具体的DTW可以参考一下文献&#xff1a; 离散序列的一致性度量方法&#xff1a;动态时间规整&#xff08;DTW&#xff09; http://blog.csdn.net/liyuefeilong/article/details/45748399 动态时间归整/规整/弯曲…

【时间序列】DTW算法详解

作者 | 追光者 研究 | 机器学习与时间序列 出品 | AI蜗牛车 1.DTW 1.1 时序相似度 在时间序列数据中&#xff0c;一个常见的任务是比较两个序列的相似度&#xff0c;作为分类或聚类任务的基础。那么&#xff0c;时间序列的相似度应该如何计算呢&#xff1f; “ 经典的时间序列相…

学习dtw-python库内容 动态弯曲距离(DTW)具体实现

文章目录 一、install 数据包二、函数功能三、函数的参数以及含义四、具体实现 一、install 数据包 简单的pip install一下就好了&#xff0c;注意最后提示Successfully installed dtw-python-1.3.0 pip install dtw-python二、函数功能 执行 DTW 算法&#xff0c;并计算两个…