【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());
}