qt配置文件中怎么解析加的字符|qt如何对字符串进行md5加密保存到文件然后能读取到解密到文件

|

1. QT编程中对于文件操作的程序讲解,最好是把下面的程序一句一句的解释下:在线等,十分感谢

void funlibEdit::InitTypeData(){//读基本类型QFile file("datatype"); //datatype为读取的文件名,这里可以为路径,否则表示为当前路径if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) //设置为Text方式只读,并判断是否打开return; //若打开失败直接返回QTextStream in(&file); //将内容读到文本流中,即in中为datatype中的所有内容while (!in.atEnd()) //循环遍历到结束{QString loctype = in.readLine(); //读一行到locttupeloctype = loctype.simplified(); //这个应该是化简,具体我不清楚,你可以去看下手册simplified的函数功能m_typelist.append(loctype); //在m_typelist这段字符串之后加上loctype这个字符串}file.close(); //关闭打开的datatype文件//读类型映射QFile mapfile("datatypemap");if (!mapfile.open(QIODevice::ReadOnly | QIODevice::Text)) //同上判断return;QTextStream mapin(&mapfile); //同上while (!mapin.atEnd()) //同上{QString mapline = mapin.readLine(); //同上int index = mapline.indexOf(":"); //所以“:”,返回位置QString outtype = mapline.left(index).simplified(); //同上QString intype = mapline.right(mapline.length()-index-1).simplified(); //同上m_typemap[outtype] = intype; //放到数组中,功能同上}mapfile.close(); //同上}

2. QT怎么在字符串后添加

把文件中所有内容一行一行读进来存到一个QString里QFile file("in.txt");if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return;QTextStream in(&file);while (!in.atEnd()) {QString line += in.readLine();}然后调用line的indexOf或者count方法来查找子串

3. 请教Qt如何解析出json的数据

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition – December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。常用的Json库JsonCpp JsonCpp是一个C++用来处理JSON数据的开发包。 网址:http://jsoncpp.sourceforge.net/.cJSON cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。 网址:http://sourceforge.net/projects/cjson/.QJson QJson是一个基于Qt的开发包用来将JSON数据解析成QVariant对象,JSON的数组将被映射为QVariantList实例,而其他对象映射为QVariantMap实例。 网址:http://qjson.sourceforge.net/. 关于Qt中对JSON的生成与解析,Qt5以前的版本,需要去进行单独下载、编译,才能使用。到了Qt5,提供了专门的QJsonDocument类来读取和写入JSON文档。Qt5中JSON的生成与解析QJsonDocument QJsonDocument既可以从一个基于文本表示的UTF-8编码,又可以从Qt自己的二进制格式读取和写入这个文件。 JSON文档可以从它的基于文本的表示使用QJsonDocument::fromJson()转换为QJsonDocument,用.toJSON()将其转换回文字。解析器非常快速和高效,将JSON转换为二进制表示。QJsonObject QJsonObject类用于封装JSON对象。 JSON对象是键值对,其中键是唯一的字符串,其值由QJsonValue代表。一个QJsonObject可以从QVariantMap转换/被转换。QJsonArray QJsonArray类用于封装JSON数组。 一个JSON数组列表值。该列表可以通过从阵列插入和移除QJsonValue的操纵。一个QJsonArray可以从QVariantList转换为/被转换。 QJsonDocument有效解析后的文档可以使用!iSNull()判断。使用isArray()和isObject()来判断是否包含一个数组或对象。文档中包含的数组或对象可以使用array()或object()进行检索,然后读取或操纵。示例QJsonObject(1)生成JsonQJsonObject json;json.insert("name", QString("Qt"));json.insert("version", 5);json.insert("windows", true);QJsonDocument document;document.setObject(json);QByteArray byte_array = document.toJson(QJsonDocument::Compact);QString json_str(byte_array);结果:json_str:{"name": "Qt","version": 5,"windows": true}(2)解析JsonQJsonParseError json_error;QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error); if(json_error.error == QJsonParseError::NoError) { if(parse_doucment.isObject()) { QJsonObject obj = parse_doucment.object(); if(obj.contains("name")) { QJsonValue name_value = obj.take("name"); if(name_value.isString()) { QString name = name_value.toString(); }} if(obj.contains("version")) { QJsonValue version_value = obj.take("version"); if(version_value.isDouble()) {int version = version_value.toVariant().toInt(); }} if(obj.contains("windows")){ QJsonValue version_value = obj.take("windows"); if(version_value.isBool()) {bool flag = version_value.toBool(); } } } } 结果:name:Qtversion:5windows:trueQJsonArray(1)生成JsonQJsonArray json;json.insert(0, QString("Qt"));json.insert(1, QString("version"));json.insert(2, true);QJsonDocument document;document.setArray(json);QByteArray byte_array = document.toJson(QJsonDocument::Compact);QString json_str(byte_array);结果:json_str:["Qt","version",true](2)解析JsonQJsonParseError json_error;QJsonDocument parse_doucment = QJsonDocument::fromJson(byte_array, &json_error); if(json_error.error == QJsonParseError::NoError) { if(parse_doucment.isArray()) { QJsonArray array = parse_doucment.array(); int size = array.size();for(int i=0; i { QJsonValue value = array.at(i); if(value.isString()) {QString name = value.toString(); } else if(value.isBool()) {bool flag = value.toBool(); }} }}结果:数组不同下标对应的值0:Qt1:version2:true 如上,简单介绍一下常用的JSON库以及Qt中对JSON的生成与解析,如需更多资料请参考官方文档,还是那句话,没有比助手更好、更专业的资料了!

4. Qt如何修改配置文件使显示的字符适应屏幕的大小

我的电脑上点右键-属性-高级-性能-设置-自定义-为桌面上图标标签启用阴影,关闭。 \r\n\r\n然后桌面上点右键-属性-外观-效果-在菜单下显示阴影(去掉),试试看。 \r\n\r\n另外,让你的液晶显示器自动调整一下。如果是CRT,就消磁试试

5. QT 隐式调用dll,无法解析外部符号

删除缓存即可,重新编译,记得注释掉DLL的路径,不加路径编译后,把DLL放到对应的DEBUG下,再次运行即可,你是不是每次加页面后会出现这个问题?记得每次加页面重新删除缓存,不然每次都是这个错

6. QT中字符串的处理

QString x = "asdasd\tdsdasd"; int a=x.indexOf("\t"); //return 6QString y = x.left(a);首先是获得到\t的位置,然后获得指定位置的字符串

7. QT 如何在文件中查找是否有该字符或字符串

1、在 Qt 中,默认的编码是 Unicode,书写的代码文件被强制转换为 utf8,但是,在简体中文版的 Windows 操作系统中,默认编码却是 GBK。

8. qt如何对字符串进行md5加密,保存到文件,然后能读取到解密到文件

#include<QCryptographicHash>#include<QSettings>#include<QDebug>//generateMD5-HashQStringtest_string("ateststringforMD5hash");QByteArraymd5_hash;md5_hash=QCryptographicHash::hash(test_string.toUtf8(),QCryptographicHash::Md5);QStringmd5hash_string=md5_hash.toHex();qDebug()<<"MD5-Hash:"<<md5hash_string;//writetomd5_hash.iniQSettingsmd5writeFile(QString("md5_hash.ini"),QSettings::IniFormat);md5writeFile.setValue(QLatin1String("MD5-Hash"),md5_hash);md5writeFile.sync();//readfrommd5_hash.iniQSettingsmd5readFile(QString("md5_hash.ini"),QSettings::IniFormat);md5readFile.sync();if(true==md5readFile.contains("MD5-Hash")){QByteArraymd5_array=md5readFile.value("MD5-Hash").toByteArray();qDebug()<<"MD5-Hashreadfromfile:"<<md5_array.toHex();}

以上代码纯手敲并且Qt上验证通过的,请珍惜使用。

9. 如何在Qt中使用全局变量,出现无法解析的

很多小伙伴在Qt编程时,不会使用全局变量,其实基本有两种方式来定义使用全局变量,第一种是根据c/c++的extern来进行多文件的使用,第二种方法就是把全局变量放在类中,当做类静态变量来使用,一般来说,第一种方式严重破坏了类的封装,所以还是推荐第二种方式.下面给出简单的示例:1.先在一个.h文件中声明一个类://c.h#ifndef C_H#define C_Hclass QPos{public:static int x; //注意关键字staticstatic int y;};#endif //C_H2.在.cpp文件里类中的成员进行定义://c.cpp#include "c.h"int QPos::x = 10; //必须要在对应的.cpp文件中进行初始化,否则会被报错!!int QPos::y = 20;3.然后就可以在其他文件中使用这些全局变量了.//m.cpp#include#include "c.h"m::m(QWidget *parent) : QWidget(parent){ui.setupUi(this);c::x= 50; /c::y= 70;…} – 切记对静态变量必须的初始化必须要在类外进行,同时不能在.h头文件中进行,应该在对应的.cpp中进行,否则会出现无法解析的错误.

10. Qt怎样转换字符串格式

一、转换为标准库中的string格式1、在进行Qt编程时,由于标准库中的cout函数是无法识别QString字符串的,因此如果想使用cout输出QString字符串,就需要将其转换为std::string。2、要想将QString转换为std::string格式,只需要调用QString的成员函数toStdString( ) 即可。3、下面是以上代码的输出结果。可以看到,使用cout完美输出了QString字符串。二、转换到数值格式1、转换到int如果想将QString转换为int,可使用QString的成员函数toInt,并传递两个参数。参数一为bool类型的指针,返回转换结果;参数二为int类型,表示进制。注意,由于这两个参数都有默认值,如果是10进制数字,也可以不用传递参数直接调用。例如,在上面的例子中将字符串“123”转换为10进制的int值123。2、转换到float同样,也可将QString转换为相应的浮点数。例如,如果想转换为float类型,则可调用toFloat成员函数。3、转换到double如果想转换为double类型,则可调用toDouble成员函数。


赞 (0)