1 字符串与输入输出–QString类
1.1 字符串与数值之间的转换
Qstring是Qt程序经常使用到的类,用于处理字符串,可以进行字符串和数字之间的转换,使用QLineEdit就可以实现数字量的输入与输出。
例:
void Widget::on_pushButton_jisuan_clicked()
{
QString str=ui->lineEdit->text();
== int num=str.toInt();==
str=ui->lineEdit_2->text();
== float price=str.toFloat();==
float total=num*price;
str=str.sprintf("%.2f",total);
ui->lineEdit_3->setText(str);
}
一个简单的总价计算例子。标记即Qstring的字符串转换功能,还有如:
int toInt(bool ok = Q_NULLPTR, int base=10 ) const
long toLong(bool ok = Q_NULLPTR, int base=10 ) const
short toShort(bool ok = Q_NULLPTR, int base=10 ) const
uint toUint(bool ok = Q_NULLPTR, int base=10 ) const
ulong toUlong(bool ok = Q_NULLPTR, int base=10 ) const
1.2 进制转换
void Widget::on_btnDec_clicked()
{
//读取十进制转换为其他进制
Qstring str=ui->editDec->text();
int val=str . toInt(); //缺省为十进制
//str=Qstring::number(val,16);//转换为16进制字符串
str=str.setNum(val,16);//十六进制
str=str.toUpper();
ui->editHex->setText(str);
//。。。。。。。。。(此处省略2进制和8进制例子);
}
1.3 常用功能
-
append()与prepend():append()在字符串的后边添加字符串;prepend()在字符串的前面添加字符串。
Qstring str=“你”,str2=“好”;
Qstring str3=str1;
str1.append(str2); //str1=“你好”
str3.prepend(str2); //str3=“好你” -
toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式。
Qstring str1=“Ni Hao”";
str2=str1.toUpper(); //“NI HAO”
str2=str1.toLower(); //“ni hao” -
count() size()和length()都返回字符串的字符个数,三个函数相同,但字符串中如果有汉字,一个汉字算一个字符串;
Qstring str1=“NI 好”;
N=str1.count();//N=3;
N=str1.size();//N=3;
N=str1.length();//N=3; -
trimmed()和simplified()
trimmed()去掉字符串首位的空格,simplified()不仅去掉首位空格,中间连续的空格也用一个空格替换。
Qstring str1=" Are you Ok? ",str2;
str2=str1.trimmed(); //“Are you Ok?”;
str2=str1.simplified(); //“Are you Ok?”; -
indexOf()在自身字符串内查找参数字符串str出现的位置,参数 from 是开始查找的位置,Qt::CaseSensitivity cs参数指定是否区分大小写。
int indexof(const Qstring &str, int from=0,Qt::CaseSensitivity cs=Qt::CaseSensitive ) const
lastIndexOf()函数则是查找某个字符串最后出现的位置。
Qstring str1=“G:\Qt5Book\Qt5.9Study\qw.cpp”;
N=str1.indexof(“5.9”); //N =13
N=str1.lastIndexof("\"); // N=21
注意:“\”是转义字符,如果要找“\”,需要输入“ \ ”。 -
isNull()和isEmpty()
两个函数都是判读字符串是否为空,但是稍有差别,如果一个空字符串,只有“\0”,isNull()返回false,而isEmpty()返回true;只有未赋值的字符串,isNull()才返回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()判断是否以某个字符串结尾,startWith()判断是否以某个字符串开头。
-
left()和right()
left()表示从字符串中取左边多少个字符,right表示从字符串中取右边 多少个字符,
Qstring str2, str1=“学生性别,男,1994-1-9,汉族,河南”;
N=str1 . indexof(" , “); //N=4
str2=str1.left(N); //str2=“学生姓别”
N=str1.lastIndexof(”,"); //N=18
str2=str1.right(str1.size()-N-1); //str2=“河南”,提取最后一个逗号之后的字符串
其他功能和具体内容可以查阅相关资料获取。
spinBox的使用
QSpinBox用于整数的显示和输入,一般显示十进制数,也可以显示二进制和十六进制数,而且可以在显示框增加前辍或后辍;
QDoubleSpinBox用于浮点数的显示和输入,用法如QSpinBox;
void Widget::on_pushButton_jisuan_clicked()
{
int num=ui->spinBox->value();
float price=ui->doubleSpinBox->value();
float ttl=num*price;
ui->doubleSpinBox_2->setValue(ttl);
}
常见用法如上图所示,当然也可以作为其他形式的数字显示。