【QT基础】数据类型及转换

QString与基本数据类型转换

QString与数字之间转换

将数字转换为QString:

int num = 123;
QString str = QString::number(num); // 使用QString的静态函数number()

将QString转换为整数:

QString str = "456";
int num = str.toInt(); // 使用QString的成员函数toInt()

将QString转换为浮点数:

QString str = "3.14";
float f = str.toFloat(); // 使用QString的成员函数toFloat()

将QString转换为双精度浮点数:

QString str = "3.14159";
double d = str.toDouble(); // 使用QString的成员函数toDouble()

QDateTime与QString之间转换

将QDateTime转换为QString:

QDateTime dt = QDateTime::currentDateTime(); // 获取当前日期时间
QString str = dt.toString("yyyy-MM-dd hh:mm:ss"); // 将日期时间格式化为字符串

将QString转换为QDateTime:

QString str = "2021-12-31 23:59:59";
QDateTime dt = QDateTime::fromString(str, "yyyy-MM-dd hh:mm:ss"); // 从字符串中解析日期时间

在进行日期时间和字符串之间的转换时,应该使用相同的日期时间格式。

除了上述方法,还可以使用其他相关的成员函数,如QDateTime::toString(Qt::DateFormat)、QDateTime::fromString(QString, Qt::DateFormat)等,根据具体的需求选择适合的函数来进行QDateTime和QString之间的转换。

QString与QByteArray之间转换

将QString转换为QByteArray:

QString str1 = "Hello, world!";
QByteArray byteArray = str1.toUtf8(); // 使用QString的toUtf8()函数将QString转换为UTF-8编码的QByteArray

QString str2 = "Hello, world!";
QByteArray byteArray = str2.toLatin1(); // 将QString对象转换为Latin-1编码的QByteArray对象

将QByteArray转换为QString:

QByteArray byteArray = "Hello, world!";
QString str = QString::fromUtf8(byteArray); // 使用QString的fromUtf8()函数将UTF-8编码的QByteArray转换为QString

QByteArray latinByteArray = "Hello, world!"; // Latin-1编码的字节数组
QString str = QString::fromLatin1(latinByteArray); // 将Latin-1编码的字节数组转换为QString对象

在进行QString和QByteArray之间的转换时,要确保所使用的字符编码一致。通常推荐使用UTF-8编码进行转换,因为它是一种通用的字符编码方式。

QString与char*之间转换

将QString转换为char*:

QString str = "Hello, world!";
const char* charStr = str.toUtf8().constData(); // 使用QString的toUtf8()函数将QString转换为UTF-8编码的QByteArray,然后使用constData()获取其指针

将char*转换为QString:

const char* charStr = "Hello, world!";
QString str = QString::fromUtf8(charStr); // 使用QString的fromUtf8()函数将UTF-8编码的char*转换为QString

除了上述方法,还可以使用QString::toLatin1()、QByteArray::fromRawData()等函数进行转换,具体根据使用场景选择合适的方法。

QString与string之间转换

QString 转换为 std::string:

QString qtString = "Hello, World!";
std::string stdString = qtString.toStdString();

std::string 转换为 QString:

std::string stdString = "Hello, World!";
QString qtString = QString::fromStdString(stdString);

QVarient类

QVarient类本质为C++联合数据类型,可以用于存储各种不同类型的数据

QVariant var;
var = 42; // 存储整数类型
var = "Hello"; // 存储字符串类型
var = QVariant::fromValue(QPoint(10, 20)); // 存储自定义类型 QPoint
int value1 = var.toInt(); // 获取存储的整数值
int value2 = var.value<int>(); // 从QVariant对象中获取整数值
QString str = var.toString(); // 获取存储的字符串值

QMap<QString,QVarient> qmap;
qDebug()<<endl;
qmap["int"] = 20000;
qmap["double"] = 99.98;
qmap["string"] = "good";
qmap["color"] = QColor(255,255,0); //QColor类型

qreal

qreal是Qt中定义的一个类型,用于表示浮点数(即实数)。它是一个平台无关的浮点数类型,可以在不同的平台上保持一致的精度和行为。

qreal类型在不同的平台上可能对应不同的底层实现,例如在32位系统上,它通常对应float类型;而在64位系统上,它通常对应double类型。这样设计的目的是为了在不同的平台上保持一致的精度,并且在不同的平台之间进行数据交换时能够得到正确的结果。

在Qt中,qreal类型通常用于表示图形、几何和绘图等领域的浮点数值。它可以与其他Qt类一起使用,如QPointF(表示一个二维点)、QRectF(表示一个矩形区域)等。

qreal radius = 3.5;
qreal pi = 3.14159;
qreal x = 1.2, y = 2.3;

qreal result = sqrt(x * x + y * y); // 计算平方根

QPointF point(x, y); // 创建一个二维点

QRectF rectangle(0, 0, 10.5, 8.7); // 创建一个矩形区域

QDataStream

用于序列化和反序列化数据的类,它可以用来方便地将数据以二进制形式进行读写。

#include <QDataStream>
#include <QFile>

int main() {
    QFile file("data.bin");
    if (!file.open(QIODevice::ReadWrite))
    {
        // 处理文件打开失败的情况
    }
	
    //创建一个QDataStream对象,并绑定到已打开的文件上
    QDataStream stream(&file);
    
    int value = 42;
    stream << value;
    
    int readValue;
    stream >> readValue;
    
    file.close();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值