qt常用数据类型

常用数据类型

1、常用基本数据类型

常用接口
//求绝对值,T是泛型,以下都是
T qAbs(const T &t)

//最大值和最小值,会把最大或最小的返回出来
T &qMax(const T &value1, const T &value2)
T &qMin(const T &value1, const T &value2)
    
//取中间值3个区中间的那个(比大小)
const T &qBound(const T &min, const T &value, const T &max)
    
//比较浮点数大小
bool qFuzzyCompare(float p1, float p2)
bool qFuzzyCompare(double p1, double p2)


//随机数,可以像C的随机数一样使用,能执行成功
//如果没有随机数种子(qsrand),每次通过qrand随机出来的数都是一样的
qsrand((uint)QTime::currentTime().msec);//获取时间的秒,当作随机数种子
qrand()%10;//随机0~9,和C语言讲的一样
//获取变量环境

QByteArray ba = qgetenv("Path");
qDebug() << ba ;

2、QSize 、QSizeF

QSize(int width, int height) //表示大小,宽高
QSizeF(qreal width, qreal height) 
    
    
QSize size(100, 10);
size.rwidth() += 20;//120,12
//有不带r的width,不带r不能这样修改


3、QPoint、QPointF

QPoint(int xpos, int ypos);
QPointF(qreal xpos, qreal ypos);

//类似和QSize一样的操作,只不过这个表示的坐标

4、QRect

QRect(const QPoint &topLeft, const QPoint &bottomRight)
QRect(const QPoint &topLeft, const QSize &size)
QRect(int x, int y, int width, int height)

5、QString

QString类提供了一个Unicode字符字符串。 注意是Unicode字符的字符串

5.1初始化
QString str="zhangsanlisi";
5.2追加
QString str="sta";
str.prepend("six");//在前面追加
str.append("deu");//在后面追加
//也可以使用push_back、push_front

5.3替换
QString str1="six sta edu";
QString str2="nine";
str1.replace(0,3,str2); //从第0个位子,把后面3个改为str2
//str1="nine sta edu";
5.4删除
QString str="five nine start edu";
str.remove(3,5);//从第三个位子删5个
qDebug()<<str;
str.remove(QChar('s'),Qt::CaseInsensitive);//不加第二个参,不区分大小写

qDebug()<<str;
str.remove("edu");//删除edu
qDebug()<<str;
5.5插入
QString str="Fiv star";
str.insert(8,QString("t edu"));
5.6判断是否为空
//两种判断方式,注意区别

QString().isEmpty(); // returns true
QString("").isEmpty(); // returns true
QString("x").isEmpty(); // returns false
QString("abc").isEmpty(); // returns false

QString().isNull(); // returns true
QString("").isNull(); // returns false
QString("abc").isNull(); // returns false

5.7查找字符串出现的位子
QString str1="six SIX 666";
QString str2="six";

qDebug()<<str1.indexOf(str2);//返回0 找到了第一个匹配的
qDebug()<<str1.indexOf(str2,1);//从1的位子开始搜索 返回-1 区分大小写
qDebug()<<str1.indexOf(str2,3,Qt::CaseInsensitive);//返回4 区分大小写
qDebug()<<str1.indexOf(str2,5);//返回-1 没找到

5.8查找是否包含字符串
QString str = "SIX";
qDebug()<<str.contains("six", Qt::CaseInsensitive);//不区分大小写 返回true
qDebug()<<str.contains("six");//返回false

5.9查找字符串出现次数
QString str = "SIX six";
qDebug()<<str.count("six", Qt::CaseInsensitive);//返回2
qDebug()<<str.count("six");//返回1
5.10字符串截取
QString str = "zhangsanlisi";
qDebug()<<str.left(7);//zhangsa 向左截取
qDebug()<<str.right(6);//anlisi 向右截取
5.11 mid()截取
QString str = "zhangsalisiwu";
qDebug()<<str.mid(7,4);//从第7个位子开始截取4个 lisi
qDebug()<<str.mid(7);//从第7个位子开始截取到最后 lisiwu
5.12数字转QString
QString str;
qint32 val=10;
str=QString::number(val);//默认10进制
qDebug()<<str;//10

val=65535;
str=QString::number(val,16);//16进制 同理后面还可以是2 8
qDebug()<<str;//ffff

qreal num=1.0123456789;
str=QString::number(num);//默认情况 保留6位,整数位一起算进来
qDebug()<<str;//1.01235
str=QString::number(num,'g',8);//保留8位,'g'是默认参数,'f'是保留小数点后面的位数
qDebug()<<str;//1.0123457
5.13格式化输入
qint32 age=18;
QString name="yimu";
qreal score=66.654321;

QString str=QString("姓名:%1,年龄:%2,成绩:%3").arg(name).arg(age).arg(score,0,'f',2);//保留小数点后2位
//%1,%2为格式占位符

qDebug()<<str;//姓名:yimu,年龄:18,成绩:66.65

5.14 QString与std::string的转换
QString str1="aaaaa";
string str2=str1.toStdString();//QString转std::string
cout<<str2;

//头文件iostream string 命名空间std
//选项->文本编辑器->行为->默认编码选system->ok
std::string str1="aaaaa";
QString str2=QString::fromStdString(str1);//std::string转QString
qDebug()<<str2;



std::string str1="aaaa";
QString str2 = str1.data();//str1.c_str();也行
qDebug()<<str2;

6、QByteArray

提供一个字节数组(序列),QByteArray可用于存储原始字节(包括“\ 0” )和传统的8位 “\ 0” 端接字符串 . 使用QByteArray比使用const char 更方便.

在IO操作中,c语言常使用const char ,而Qt中常使用QByteArray;

QByteArray ba1="adf";//直接赋值
qDebug()<<ba1;

qDebug()<<ba1.at(2);//通过at访问

QByteArray ba2;
ba2[0]='c';//方括号赋值,访问
qDebug()<<ba2;

6.1 QByteArrar 与char*相互转换
QByteArray ba("这是一个字符串");
const char *p=ba.constData();//QByteArray转const char *
qDebug()<<p;

const char *p="aaa";//const char *转QByteArray
QString s=QString(p);
QByteArray ba=s.toUtf8();//
qDebug()<<ba;

const char *p="aaa";//const char *转QByteArray
QByteArray ba(QByteArray::fromRawData(p,3));
qDebug()<<ba;

const char *p="aaa\0bbb\0ccc";
QByteArray ba(QByteArray::fromRawData(p,11));
qDebug()<<ba;
cout<<ba.constData();//返回值类型为 const char * 输出为aaa

7、QVariant

QVariant变量是没有数据类型的。 QVariant类像是最常见的Qt的数据类型的一个共用体(union), 一个QVariant对象在一个时间只保存一个单一类型的一个单一的值(有些类型可能是多值的,比如字符 串列表)。

可以使用toT()(T代表一种数据类型)函数来将QVariant对象转换为T类型,并且获取它的值。这里 toT()函数会复制以前的QVariant对象,然后对其进行转换,所以以前的QVariant对象并不会改变。

QVariant v=1.23;
qDebug()<<v;
qDebug()<<v.toInt();//输出1,转成了整型

v=13;
qDebug()<<v;
v="aaaaa";
qDebug()<<v;
posted @ 2022-10-08 21:34  宣哲  阅读(127)  评论(0编辑  收藏  举报