目录
1.普通数值与字符串之间的转换
2.进制转换
3.字符串与数值转换应用示例
4.QString 常用功能
5.QString 常用功能应用示例
int toInt(bool *ok = Q_NULLPTR,int base = 10) constlong toLong(bool *ok = Q_NULLPTR,int base = 10) constshourt toShort(bool *ok = Q_NULLPTR,int base = 10) constuint toUInt(bool *ok = Q_NULLPTR,int base = 10) constuint toULong(bool *ok = Q_NULLPTR,int base = 10) const
double toDouble(bool *ok = Q_NULLPTR) constfloat toFloat(bool *ok = Q_NULLPTR) const
QString str;float flo=3.141;//使用QString的静态函数number()和asprintf()str = QString::number(flo,'f',2);str = QString::asprintf("%.2f",flo);//使用公共函数setNum()和sprintf()str = str.setNum(flo,'f',2);str = str.sprintf("%.2f",flo);
QString &setNum(int n,int base = 10)QString number(int n,int base = 10)
#ifndef WIDGET_H
#define WIDGET_H
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btnCal_clicked(); //计算 按键单击响应
void on_btnDec_clicked(); //十进制转换为其他进制
void on_btnBin_clicked(); //二进制转换为其他进制
void on_btnHex_clicked(); //十六进制转换为其他进制
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
(2)widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnCal_clicked()
{ //计算 按键单击响应
int num=ui->editNum->text().toInt(); //读取字符串为整数
float price=ui->editPrice->text().toFloat();//读取字符串为浮点数
float total=num*price;//相乘计算
QString str;
// str=str.setNum(total,'f',2); //浮点数2位小数
str=str.sprintf("%.2f",total); //格式化输出浮点数
ui->editTotal->setText(str);//在文本框里显示
// QString str2="卖";
// QString str3="拐";
// QString str1=str2;
// str1.append(str3);
// str2.prepend(str3);
}
void Widget::on_btnDec_clicked()
{ //读取十进制数,转换为其他进制
int val=ui->editDec->text().toInt();//读取十进制数
QString str=QString::number(val,16);// 显示为16进制 的字符串
// str=str.setNum(val,16);//16进制
str=str.toUpper(); //转换为全大写字母
ui->editHex->setText(str);//显示16进制字符串
// str=str.setNum(val,2); //2进制
str=QString::number(val,2);// 显示2进制的字符串
ui->editBin->setText(str);//显示二进制字符串
}
void Widget::on_btnBin_clicked()
{ //读取二进制数,转换为其他进制的数
bool ok;
int val=ui->editBin->text().toInt(&ok,2);//以二进制数读入
// str=str.setNum(val,2);//显示为2进制字符串
QString str=QString::number(val,10);//数字显示为10进制字符串
ui->editDec->setText(str);//显示10进制数字符串
// str=str.setNum(val,16);//显示十六进制
str=QString::number(val,16);//显示为十六进制字符串
str=str.toUpper(); //全大写字母
ui->editHex->setText(str);//显示十六进制字符串
}
void Widget::on_btnHex_clicked()
{//读取16进制数,转换为其他进制的数
bool ok;
int val=ui->editHex->text().toInt(&ok,16);//以十六进制数读入
// str=str.setNum(val,10);//显示为10进制字符串
QString str=QString::number(val,10);// 显示为10进制字符串
ui->editDec->setText(str);//显示为10进制字符串
// str=str.setNum(val,2);//显示为2进制字符串
str=QString::number(val,2);// 显示二进制字符串
ui->editBin->setText(str);//显示二进制字符串
}
(3)main.cpp文件
#include "widget.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
(4)UI界面
QString是Qt编程中常用的类,除了用作数字量的输入输出之外,Qstring还有很多其他功能。QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算作是一个字符。
append()和prepend()
append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:
QString str1 = "卖",str2="拐";
QString str3 = str1;
str1·append(str2);//str1 ="卖拐"
str3.prepend(str2);//str3 ="拐卖"
toUpper()和toLower()
toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式,如:
QString str1="Hello,World",str2;
str2=str1·toUpper();//str1="HELLO,WORLD"
str2=str1·toLower();//strl="hello,world"
count()、size()和length()
count()、size()和length()都返回字符串的字符个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。
QString str="NI好";
N=str1·count();//N = 3
N=str1,size();//N = 3
N=str1·lengt();//N = 3
trimmed()去掉字符串首尾的空格,simpli行ed()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。
QString str1=" Are you OK? ",str2;
str2=str1,trimmed();//str1 = "Are you OK?"
str2=str1.simplified();//str1 = "Are you OK?"
indexOf()和lastlndexOf()
indexOf()函数的原型为:
int indexOf(const QString&str,int from=0,Qt::CaseSensitivity cs=Qt::CaseSensitive)
其功能是在自身字符串内查找参数字符串str出现的位置,参数from是开始查找的位置,Qt::Casesensitivitycs参数指定是否区分大小写。
lastlndexOf()函数则是查找某个字符串最后出现的位置。
QString str1="G:\Qt5Book\QT5.9Study\qw.cpp"
N=str1.indexOf("5.9");//N=13
N=strl.lastIndexOf("\\");//N=21
“\”是转义字符,如果要查找“\”,需要输入“\\”。
isNull()和isEmpty()
两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNuII()才返回true。
QString str1,str2="";
N=str1·isNull();//N=true 未赋值字符串变量
N=str2.isNull();//N=false 只有"\0"的字符串,也不是Null
N=str1.isEmpty();//N=true
N=str2.isEmpty();//N=true
QString只要赋值,就在字符串的末尾自动加上“\0”,所以,如果只是要判断字符串内容是
否为空,常用isEmpty()。
contains()
判断字符串内是否包含某个字符串,可指定是否区分大小写。
QString str1 = "G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.contains(".cpp",Qt::CaseInsensitive);//N=true,不区分大小写
N=str1.contains(".CPP",Qt::CaseSensitive);//N=false,区分大小写
endsWith()和startsWith()
startsWith()判断是否以某个字符串开头,endsWith()判断是否以某个字符串结束。
QString str1 = "G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.startsWith(".cpp",Qt::CaseInsensitive);//N=true,不区分大小写
N=str1.endsWith(".CPP",Qt::CaseSensitive);//N=false,区分大小写
N=str1.startsWith("g: ");//N = true,缺省为不区分大小写
left()和right()
left表示从字符串中取左边多少个字符,right表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。
QString str2,str1 ="学生姓名,男,1984-3-4,汉族,山东";
N = str1.indexOd(",");//N=4,第一个","出现的位置
str2 = str1.left(N);//str2 ="学生姓名"
N =str1.lastIndexOf(","); //N=18,最后一个","出现的位置
str2 = str1.right(str1.size()-N-1);//str2 = "山东",提取最后一个逗号之后的字符串
section()
section()函数的原型为:
QString section (const QString &sep, int start, int end =-1,SectionFlags flags = SectionDefault) const
其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。
QString str2,str1 ="学生姓名,男,1984-3-4,汉族,山东";
str2 = str1.section(",",0,0);//str2= "学生姓名",第1段的编号为0
str2 = str1.section(",",1,1);//str2= "男"
str2 = str1.section(",",0,1);//str2= "学生姓名,男"
str2 = str1.section(",",4,4);//str2= "山东"
(1)widget.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void on_pushButton_5_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_pushButton_10_clicked();
void on_pushButton_11_clicked();
void on_pushButton_12_clicked();
void on_pushButton_13_clicked();
void on_pushButton_14_clicked();
void on_pushButton_15_clicked();
void on_pushButton_16_clicked();
void on_pushButton_17_clicked();
void on_pushButton_18_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
(2)widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{//append()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
str1.append(str2);
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_2_clicked()
{//prepend()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
str1.prepend(str2);
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_3_clicked()
{//contains()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.contains(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("contains()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_4_clicked()
{//count()函数
QString str1=ui->comboBox1->currentText();
int i=str1.count();
// int i=str1.length();
ui->spinBox->setValue(i);
ui->LabSpin->setText("count()");
}
void Widget::on_pushButton_5_clicked()
{//size()函数
QString str1;
str1=ui->comboBox1->currentText();
int i=str1.size();
ui->spinBox->setValue(i);
ui->LabSpin->setText("size()");
}
void Widget::on_pushButton_6_clicked()
{//endsWith()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.endsWith(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("endsWith()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_7_clicked()
{//indexOf()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
int i;
i=str1.indexOf(str2);
ui->spinBox->setValue(i);
ui->LabSpin->setText("indexOf()");
}
void Widget::on_pushButton_8_clicked()
{//isEmpty()函数
QString str1;
str1=ui->comboBox1->currentText();
bool chk;
chk=str1.isEmpty();
ui->checkBox->setChecked(chk);
ui->checkBox->setText("isEmpty()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_9_clicked()
{//lastIndexOf()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
int i;
i=str1.lastIndexOf(str2);
ui->spinBox->setValue(i);
ui->LabSpin->setText("lastIndexOf()");
}
void Widget::on_pushButton_10_clicked()
{//startsWith()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=ui->comboBox2->currentText();
bool chk;
chk=str1.startsWith(str2);
ui->checkBox->setChecked(chk);
ui->checkBox->setText("startsWith()");
ui->checkBox->sizeHint();
}
void Widget::on_pushButton_11_clicked()
{//toUpper()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=str1.toUpper();
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_12_clicked()
{//toLower()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
str2=str1.toLower();
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_13_clicked()
{//trimmed()函数
QString str1;
str1=ui->comboBox1->currentText();
str1=str1.trimmed();
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_14_clicked()
{//section()函数
int i;
QString str1,str2,str3;
str1=ui->comboBox1->currentText();
i=ui->spinBox->value();
// str2=str1.section('\\',2,2);
str3=ui->comboBox2->currentText();
if (QString::compare(str3,"\\",Qt::CaseInsensitive)==0)
str2=str1.section('\\',i,i+1); //
else
str2=str1.section(str3,i,i+1); //
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_15_clicked()
{//left()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
int v=ui->spinBox->value();
str2=str1.left(v);
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_16_clicked()
{//right()函数
QString str1,str2;
str1=ui->comboBox1->currentText();
int cnt=str1.size();
int v=ui->spinBox->value();
str2=str1.right(cnt-v-1);
ui->edtResult->setText(str2);
}
void Widget::on_pushButton_17_clicked()
{//simplified()函数
QString str1;
str1=ui->comboBox1->currentText();
str1=str1.simplified();
ui->edtResult->setText(str1);
}
void Widget::on_pushButton_18_clicked()
{//isNull()函数
QString str1;
str1=ui->comboBox1->currentText();
bool chk;
chk=str1.isNull();
ui->checkBox->setChecked(chk);
ui->checkBox->setText("isNull()");
ui->checkBox->sizeHint();
}
(3)main.cpp文件
#include "widget.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
(4)UI界面