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;
}