日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]簡述Qt5 中包含了處理 JSON 的類,均以 QJson 開頭(例如:QJsonDocument、QJsonArray、QJsonObject),在 QtCore 模塊中,不需要額外引入其它模塊。簡

簡述

Qt5 中包含了處理 JSON 的類,均以 QJson 開頭(例如:QJsonDocument、QJsonArray、QJsonObject),在 QtCore 模塊中,不需要額外引入其它模塊。

簡述常用的 JSON 庫JSON 常用類簡單的 JSON 對象簡單的 JSON 數(shù)組復(fù)雜的 JSON更多參考常用的 JSON 庫

json.org?中介紹了 JSON 在各種語言中的應(yīng)用,在 C/C++ 中比較常用的JSON 庫主要有以下幾個:

JsonCpp?
JsonCpp 是一個 C++ 用來處理 JSON 數(shù)據(jù)的開發(fā)包。?
網(wǎng)址:http://jsoncpp.sourceforge.net/

cJSON?
cJSON 是一個超輕巧,攜帶方便,單文件,簡單的可以作為 ANSI-C 標(biāo)準(zhǔn)的 JSON 解析器。?
網(wǎng)址:http://sourceforge.net/projects/cjson/

QJson?
QJson 是一個基于 Qt 的開發(fā)包用來將 JSON 數(shù)據(jù)解析成 QVariant 對象,JSON 的數(shù)組將被映射為QVariantList 實(shí)例,而其他對象映射為 QVariantMap 實(shí)例。?
網(wǎng)址:http://qjson.sourceforge.net/

關(guān)于 Qt 中對 JSON 的生成與解析,Qt5 以前的版本,可以使用 QJson 庫,需要單獨(dú)下載、編譯,才能使用。到了 Qt5,提供了專門的 QJsonDocument 及其相關(guān)類來讀和寫 JSON 文檔。

JSON 常用類

QJsonDocument

QJsonDocument 類用于讀和寫 JSON 文檔。

一個 JSON 文檔可以使用 QJsonDocument::fromJson() 從基于文本的表示轉(zhuǎn)化為 QJsonDocument, toJson() 則可以反向轉(zhuǎn)化為文本。解析器非常快且高效,并將 JSON 轉(zhuǎn)換為 Qt 使用的二進(jìn)制表示。

已解析文檔的有效性,可以使用 !isNull() 進(jìn)行查詢。

如果要查詢一個 JSON 文檔是否包含一個數(shù)組或一個對象,使用 isArray() 和 isObject()。包含在文檔中的數(shù)組或?qū)ο罂梢允褂?array() 或 object() 檢索,然后讀取或操作。

也可以使用 fromBinaryData() 或 fromRawData() 從存儲的二進(jìn)制表示創(chuàng)建來 JSON 文檔。

QJsonArray

QJsonArray 類封裝了一個 JSON 數(shù)組。

JSON 數(shù)組是值的列表。列表可以被操作,通過從數(shù)組中插入和刪除 QJsonValue 。

一個 QJsonArray 可以和一個 QVariantList 相互轉(zhuǎn)換。可以使用 size() 來查詢條目的數(shù)量,通過 insert() 在指定索引處插入值,removeAt() 來刪除指定索引的值。

QJsonObject

QJsonObject 類封裝了一個 JSON 對象。

一個 JSON 對象是一個“key/value 對”列表,key 是獨(dú)一無二的字符串,value 由一個 QJsonValue 表示。

一個 QJsonObject 可以和一個 QVariantMap 相互轉(zhuǎn)換??梢允褂?size() 來查詢“key/value 對”的數(shù)量,通過 insert() 插入“key/value 對”, remove() 刪除指定的 key。

QJsonValue

QJsonValue 類封裝了一個值。

JSON 中的值有 6 種基本數(shù)據(jù)類型:

bool(QJsonValue::Bool)double(QJsonValue::Double)string(QJsonValue::String)array(QJsonValue::Array)object(QJsonValue::Object)null(QJsonValue::Null)

一個值可以由任何上述數(shù)據(jù)類型表示。此外,QJsonValue 有一個特殊的標(biāo)記來表示未定義的值,可以使用 isUndefined() 查詢。

值的類型可以通過 type() 或 isBool()、isString() 等訪問函數(shù)查詢。同樣地,值可以通過 toBool()、toString() 等函數(shù)轉(zhuǎn)化成相應(yīng)的存儲類型。

QJsonParseError

QJsonParseError 類用于在 JSON 解析中報告錯誤。

枚舉 QJsonParseError::ParseError:

該枚舉描述 JSON 文檔在解析過程中所發(fā)生的錯誤類型。

QJsonParseError::NoError0未發(fā)生錯誤QJsonParseError::UnterminatedObject1對象不正確地終止以右花括號結(jié)束QJsonParseError::MissingNameSeparator2分隔不同項(xiàng)的逗號丟失QJsonParseError::UnterminatedArray3數(shù)組不正確地終止以右中括號結(jié)束QJsonParseError::MissingValueSeparator4對象中分割 key/value 的冒號丟失QJsonParseError::IllegalValue5值是非法的QJsonParseError::TerminationByNumber6在解析數(shù)字時,輸入流結(jié)束QJsonParseError::IllegalNumber7數(shù)字格式不正確QJsonParseError::IllegalEscapeSequence8在輸入時,發(fā)生一個非法轉(zhuǎn)義序列QJsonParseError::IllegalUTF8String9在輸入時,發(fā)生一個非法 UTF8 序列QJsonParseError::UnterminatedString10字符串不是以引號結(jié)束QJsonParseError::MissingObject11一個對象是預(yù)期的,但是不能被發(fā)現(xiàn)QJsonParseError::DeepNesting12對解析器來說,JSON 文檔嵌套太深QJsonParseError::DocumentTooLarge13對解析器來說,JSON 文檔太大QJsonParseError::GarbageAtEnd14解析的文檔在末尾處包含額外的亂碼簡單的 JSON 對象

構(gòu)造一個簡單的 JSON 對象:

{
????"Cross?Platform":?true,
????"From":?1991,
????"Name":?"Qt"
}

生成比較簡單,由于是一個對象,只需要用 QJsonObject 即可。

//?構(gòu)建?JSON?對象
QJsonObject?json;
json.insert("Name",?"Qt");
json.insert("From",?1991);
json.insert("Cross?Platform",?true);

//?構(gòu)建?JSON?文檔
QJsonDocument?document;
document.setObject(json);
QByteArray?byteArray?=?document.toJson(QJsonDocument::Compact);
QString?strJson(byteArray);

qDebug()?<<?strJson;

解析如下:

QJsonParseError?jsonError;
QJsonDocument?doucment?=?QJsonDocument::fromJson(byteArray,?&jsonError);??//?轉(zhuǎn)化為?JSON?文檔
if?(!doucment.isNull()?&&?(jsonError.error?==?QJsonParseError::NoError))?{??//?解析未發(fā)生錯誤
????if?(doucment.isObject())?{?//?JSON?文檔為對象
????????QJsonObject?object?=?doucment.object();??//?轉(zhuǎn)化為對象
????????if?(object.contains("Name"))?{??//?包含指定的?key
????????????QJsonValue?value?=?object.value("Name");??//?獲取指定?key?對應(yīng)的?value
????????????if?(value.isString())?{??//?判斷?value?是否為字符串
????????????????QString?strName?=?value.toString();??//?將?value?轉(zhuǎn)化為字符串
????????????????qDebug()?<<?"Name?:?"?<<?strName;
????????????}
????????}
????????if?(object.contains("From"))?{
????????????QJsonValue?value?=?object.value("From");
????????????if?(value.isDouble())?{
????????????????int?nFrom?=?value.toVariant().toInt();
????????????????qDebug()?<<?"From?:?"?<<?nFrom;
????????????}
????????}
????????if?(object.contains("Cross?Platform"))?{
????????????QJsonValue?value?=?object.value("Cross?Platform");
????????????if?(value.isBool())?{
????????????????bool?bCrossPlatform?=?value.toBool();
????????????????qDebug()?<<?"CrossPlatform?:?"?<<?bCrossPlatform;
????????????}
????????}
????}
}

注意:在轉(zhuǎn)化為 QJsonDocument 后,首先需要根據(jù) QJsonParseError 的值判定是否轉(zhuǎn)化成功,然后在進(jìn)行相應(yīng)的轉(zhuǎn)化解析。

簡單的 JSON 數(shù)組

構(gòu)造一個簡單的 JSON 對象:

[
????"Qt",
????5.7,
????true
]

生成比較簡單,由于是一個數(shù)組,只需要用 QJsonArray 即可。

//?構(gòu)建?JSON?數(shù)組
QJsonArray?json;
json.append("Qt");
json.append(5.7);
json.append(true);

//?構(gòu)建?JSON?文檔
QJsonDocument?document;
document.setArray(json);
QByteArray?byteArray?=?document.toJson(QJsonDocument::Compact);
QString?strJson(byteArray);

qDebug()?<<?strJson;

需要注意的是,和上面不同的是,這里使用的是 QJsonDocument 的 setArray() 函數(shù),因?yàn)槭菙?shù)組嘛!

解析如下:

QJsonParseError?jsonError;
QJsonDocument?doucment?=?QJsonDocument::fromJson(byteArray,?&jsonError);??//?轉(zhuǎn)化為?JSON?文檔
if?(!doucment.isNull()?&&?(jsonError.error?==?QJsonParseError::NoError))?{?//?解析未發(fā)生錯誤
????if?(doucment.isArray())?{?//?JSON?文檔為數(shù)組
????????QJsonArray?array?=?doucment.array();??//?轉(zhuǎn)化為數(shù)組
????????int?nSize?=?array.size();??//?獲取數(shù)組大小
????????for?(int?i?=?0;?i?<?nSize;?++i)?{??//?遍歷數(shù)組
????????????QJsonValue?value?=?array.at(i);
????????????if?(value.type()?==?QJsonValue::String)?{
????????????????QString?strName?=?value.toString();
????????????????qDebug()?<<?strName;
????????????}
????????????if?(value.type()?==?QJsonValue::Double)?{
????????????????double?dVersion?=?value.toDouble();
????????????????qDebug()?<<?dVersion;
????????????}
????????????if?(value.type()?==?QJsonValue::Bool)?{
????????????????bool?bCrossPlatform??=?value.toBool();
????????????????qDebug()?<<?bCrossPlatform;
????????????}
????????}
????}
}

和 JSON 對象類似,在遍歷數(shù)組時,獲取每個 value,首先需要判斷 value 的類型(和 is***() 函數(shù)類似,這里根據(jù) type() 函數(shù)返回的枚舉值來判斷),然后再進(jìn)行相應(yīng)的轉(zhuǎn)換。

復(fù)雜的 JSON

構(gòu)造一個復(fù)雜的 JSON 對象:

{
????"Company":?"Digia",
????"From":?1991,
????"Name":?"Qt",
????"Page":?{
????????"Developers":?"https://www.qt.io/developers/",
????????"Download":?"https://www.qt.io/download/",
????????"Home":?"https://www.qt.io/"
????},
????"Version":?[
????????4.8,
????????5.2,
????????5.7
????]
}

包含了一個擁有五個“key/value 對”的對象,values 中的兩個(Company、Name)是字符串,一個(From)是數(shù)字,一個(Page)是對象,一個(Version)是數(shù)組。

要生成這樣一個復(fù)雜的 JSON 文檔,需要分別構(gòu)造對象和數(shù)組,然后將它們拼接起來:

//?構(gòu)建?Json?數(shù)組?-?Version
QJsonArray?versionArray;
versionArray.append(4.8);
versionArray.append(5.2);
versionArray.append(5.7);

//?構(gòu)建?Json?對象?-?Page
QJsonObject?pageObject;
pageObject.insert("Home",?"https://www.qt.io/");
pageObject.insert("Download",?"https://www.qt.io/download/");
pageObject.insert("Developers",?"https://www.qt.io/developers/");

//?構(gòu)建?Json?對象
QJsonObject?json;
json.insert("Name",?"Qt");
json.insert("Company",?"Digia");
json.insert("From",?1991);
json.insert("Version",?QJsonValue(versionArray));
json.insert("Page",?QJsonValue(pageObject));

//?構(gòu)建?Json?文檔
QJsonDocument?document;
document.setObject(json);
QByteArray?byteArray?=?document.toJson(QJsonDocument::Compact);
QString?strJson(byteArray);

qDebug()?<<?strJson;

解析部分其實(shí)并沒有看起來這么復(fù)雜,只要一步步搞明白對應(yīng)的類型,然后進(jìn)行相應(yīng)轉(zhuǎn)化即可。

QJsonParseError?jsonError;
QJsonDocument?doucment?=?QJsonDocument::fromJson(byteArray,?&jsonError);??//?轉(zhuǎn)化為?JSON?文檔
if?(!doucment.isNull()?&&?(jsonError.error?==?QJsonParseError::NoError))?{??//?解析未發(fā)生錯誤
????if?(doucment.isObject())?{??//?JSON?文檔為對象
????????QJsonObject?object?=?doucment.object();??//?轉(zhuǎn)化為對象
????????if?(object.contains("Name"))?{
????????????QJsonValue?value?=?object.value("Name");
????????????if?(value.isString())?{
????????????????QString?strName?=?value.toString();
????????????????qDebug()?<<?"Name?:?"?<<?strName;
????????????}
????????}
????????if?(object.contains("Company"))?{
????????????QJsonValue?value?=?object.value("Company");
????????????if?(value.isString())?{
????????????????QString?strCompany?=?value.toString();
????????????????qDebug()?<<?"Company?:?"?<<?strCompany;
????????????}
????????}
????????if?(object.contains("From"))?{
????????????QJsonValue?value?=?object.value("From");
????????????if?(value.isDouble())?{
????????????????int?nFrom?=?value.toVariant().toInt();
????????????????qDebug()?<<?"From?:?"?<<?nFrom;
????????????}
????????}
????????if?(object.contains("Version"))?{
????????????QJsonValue?value?=?object.value("Version");
????????????if?(value.isArray())?{??//?Version?的?value?是數(shù)組
????????????????QJsonArray?array?=?value.toArray();
????????????????int?nSize?=?array.size();
????????????????for?(int?i?=?0;?i?<?nSize;?++i)?{
????????????????????QJsonValue?value?=?array.at(i);
????????????????????if?(value.isDouble())?{
????????????????????????double?dVersion?=?value.toDouble();
????????????????????????qDebug()?<<?"Version?:?"?<<?dVersion;
????????????????????}
????????????????}
????????????}
????????}
????????if?(object.contains("Page"))?{
????????????QJsonValue?value?=?object.value("Page");
????????????if?(value.isObject())?{??//?Page?的?value?是對象
????????????????QJsonObject?obj?=?value.toObject();
????????????????if?(obj.contains("Home"))?{
????????????????????QJsonValue?value?=?obj.value("Home");
????????????????????if?(value.isString())?{
????????????????????????QString?strHome?=?value.toString();
????????????????????????qDebug()?<<?"Home?:?"?<<?strHome;
????????????????????}
????????????????}
????????????????if?(obj.contains("Download"))?{
????????????????????QJsonValue?value?=?obj.value("Download");
????????????????????if?(value.isString())?{
????????????????????????QString?strDownload?=?value.toString();
????????????????????????qDebug()?<<?"Download?:?"?<<?strDownload;
????????????????????}
????????????????}
????????????????if?(obj.contains("Developers"))?{
????????????????????QJsonValue?value?=?obj.value("Developers");
????????????????????if?(value.isString())?{
????????????????????????QString?strDevelopers?=?value.toString();
????????????????????????qDebug()?<<?"Developers?:?"?<<?strDevelopers;
????????????????????}
????????????????}
????????????}
????????}
????}
}

基本的用法就這些,比較簡單,細(xì)節(jié)很關(guān)鍵,建議在處理的過程中啟用嚴(yán)格模式,例如:先通過 QJsonParseError::NoError 判斷轉(zhuǎn)化 JSON 文檔無誤,再進(jìn)行解析。在解析過程中,先判斷 QJsonValue 是否為對應(yīng)的類型如 isObject(),再通過 toObject() 轉(zhuǎn)化。

更多參考JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999json.orgRFC-4627Qt之JSONQt之JSON保存與讀取簡述

Qt5 中包含了處理 JSON 的類,均以 QJson 開頭(例如:QJsonDocument、QJsonArray、QJsonObject),在 QtCore 模塊中,不需要額外引入其它模塊。

簡述常用的 JSON 庫JSON 常用類簡單的 JSON 對象簡單的 JSON 數(shù)組復(fù)雜的 JSON更多參考常用的 JSON 庫

json.org?中介紹了 JSON 在各種語言中的應(yīng)用,在 C/C++ 中比較常用的JSON 庫主要有以下幾個:

JsonCpp?
JsonCpp 是一個 C++ 用來處理 JSON 數(shù)據(jù)的開發(fā)包。?
網(wǎng)址:http://jsoncpp.sourceforge.net/

cJSON?
cJSON 是一個超輕巧,攜帶方便,單文件,簡單的可以作為 ANSI-C 標(biāo)準(zhǔn)的 JSON 解析器。?
網(wǎng)址:http://sourceforge.net/projects/cjson/

QJson?
QJson 是一個基于 Qt 的開發(fā)包用來將 JSON 數(shù)據(jù)解析成 QVariant 對象,JSON 的數(shù)組將被映射為QVariantList 實(shí)例,而其他對象映射為 QVariantMap 實(shí)例。?
網(wǎng)址:http://qjson.sourceforge.net/

關(guān)于 Qt 中對 JSON 的生成與解析,Qt5 以前的版本,可以使用 QJson 庫,需要單獨(dú)下載、編譯,才能使用。到了 Qt5,提供了專門的 QJsonDocument 及其相關(guān)類來讀和寫 JSON 文檔。

JSON 常用類

QJsonDocument

QJsonDocument 類用于讀和寫 JSON 文檔。

一個 JSON 文檔可以使用 QJsonDocument::fromJson() 從基于文本的表示轉(zhuǎn)化為 QJsonDocument, toJson() 則可以反向轉(zhuǎn)化為文本。解析器非常快且高效,并將 JSON 轉(zhuǎn)換為 Qt 使用的二進(jìn)制表示。

已解析文檔的有效性,可以使用 !isNull() 進(jìn)行查詢。

如果要查詢一個 JSON 文檔是否包含一個數(shù)組或一個對象,使用 isArray() 和 isObject()。包含在文檔中的數(shù)組或?qū)ο罂梢允褂?array() 或 object() 檢索,然后讀取或操作。

也可以使用 fromBinaryData() 或 fromRawData() 從存儲的二進(jìn)制表示創(chuàng)建來 JSON 文檔。

QJsonArray

QJsonArray 類封裝了一個 JSON 數(shù)組。

JSON 數(shù)組是值的列表。列表可以被操作,通過從數(shù)組中插入和刪除 QJsonValue 。

一個 QJsonArray 可以和一個 QVariantList 相互轉(zhuǎn)換??梢允褂?size() 來查詢條目的數(shù)量,通過 insert() 在指定索引處插入值,removeAt() 來刪除指定索引的值。

QJsonObject

QJsonObject 類封裝了一個 JSON 對象。

一個 JSON 對象是一個“key/value 對”列表,key 是獨(dú)一無二的字符串,value 由一個 QJsonValue 表示。

一個 QJsonObject 可以和一個 QVariantMap 相互轉(zhuǎn)換。可以使用 size() 來查詢“key/value 對”的數(shù)量,通過 insert() 插入“key/value 對”, remove() 刪除指定的 key。

QJsonValue

QJsonValue 類封裝了一個值。

JSON 中的值有 6 種基本數(shù)據(jù)類型:

bool(QJsonValue::Bool)double(QJsonValue::Double)string(QJsonValue::String)array(QJsonValue::Array)object(QJsonValue::Object)null(QJsonValue::Null)

一個值可以由任何上述數(shù)據(jù)類型表示。此外,QJsonValue 有一個特殊的標(biāo)記來表示未定義的值,可以使用 isUndefined() 查詢。

值的類型可以通過 type() 或 isBool()、isString() 等訪問函數(shù)查詢。同樣地,值可以通過 toBool()、toString() 等函數(shù)轉(zhuǎn)化成相應(yīng)的存儲類型。

QJsonParseError

QJsonParseError 類用于在 JSON 解析中報告錯誤。

枚舉 QJsonParseError::ParseError:

該枚舉描述 JSON 文檔在解析過程中所發(fā)生的錯誤類型。

QJsonParseError::NoError0未發(fā)生錯誤QJsonParseError::UnterminatedObject1對象不正確地終止以右花括號結(jié)束QJsonParseError::MissingNameSeparator2分隔不同項(xiàng)的逗號丟失QJsonParseError::UnterminatedArray3數(shù)組不正確地終止以右中括號結(jié)束QJsonParseError::MissingValueSeparator4對象中分割 key/value 的冒號丟失QJsonParseError::IllegalValue5值是非法的QJsonParseError::TerminationByNumber6在解析數(shù)字時,輸入流結(jié)束QJsonParseError::IllegalNumber7數(shù)字格式不正確QJsonParseError::IllegalEscapeSequence8在輸入時,發(fā)生一個非法轉(zhuǎn)義序列QJsonParseError::IllegalUTF8String9在輸入時,發(fā)生一個非法 UTF8 序列QJsonParseError::UnterminatedString10字符串不是以引號結(jié)束QJsonParseError::MissingObject11一個對象是預(yù)期的,但是不能被發(fā)現(xiàn)QJsonParseError::DeepNesting12對解析器來說,JSON 文檔嵌套太深QJsonParseError::DocumentTooLarge13對解析器來說,JSON 文檔太大QJsonParseError::GarbageAtEnd14解析的文檔在末尾處包含額外的亂碼簡單的 JSON 對象

構(gòu)造一個簡單的 JSON 對象:

{
????"Cross?Platform":?true,
????"From":?1991,
????"Name":?"Qt"
}

生成比較簡單,由于是一個對象,只需要用 QJsonObject 即可。

//?構(gòu)建?JSON?對象
QJsonObject?json;
json.insert("Name",?"Qt");
json.insert("From",?1991);
json.insert("Cross?Platform",?true);

//?構(gòu)建?JSON?文檔
QJsonDocument?document;
document.setObject(json);
QByteArray?byteArray?=?document.toJson(QJsonDocument::Compact);
QString?strJson(byteArray);

qDebug()?<<?strJson;

解析如下:

QJsonParseError?jsonError;
QJsonDocument?doucment?=?QJsonDocument::fromJson(byteArray,?&jsonError);??//?轉(zhuǎn)化為?JSON?文檔
if?(!doucment.isNull()?&&?(jsonError.error?==?QJsonParseError::NoError))?{??//?解析未發(fā)生錯誤
????if?(doucment.isObject())?{?//?JSON?文檔為對象
????????QJsonObject?object?=?doucment.object();??//?轉(zhuǎn)化為對象
????????if?(object.contains("Name"))?{??//?包含指定的?key
????????????QJsonValue?value?=?object.value("Name");??//?獲取指定?key?對應(yīng)的?value
????????????if?(value.isString())?{??//?判斷?value?是否為字符串
????????????????QString?strName?=?value.toString();??//?將?value?轉(zhuǎn)化為字符串
????????????????qDebug()?<<?"Name?:?"?<<?strName;
????????????}
????????}
????????if?(object.contains("From"))?{
????????????QJsonValue?value?=?object.value("From");
????????????if?(value.isDouble())?{
????????????????int?nFrom?=?value.toVariant().toInt();
????????????????qDebug()?<<?"From?:?"?<<?nFrom;
????????????}
????????}
????????if?(object.contains("Cross?Platform"))?{
????????????QJsonValue?value?=?object.value("Cross?Platform");
????????????if?(value.isBool())?{
????????????????bool?bCrossPlatform?=?value.toBool();
????????????????qDebug()?<<?"CrossPlatform?:?"?<<?bCrossPlatform;
????????????}
????????}
????}
}

注意:在轉(zhuǎn)化為 QJsonDocument 后,首先需要根據(jù) QJsonParseError 的值判定是否轉(zhuǎn)化成功,然后在進(jìn)行相應(yīng)的轉(zhuǎn)化解析。

簡單的 JSON 數(shù)組

構(gòu)造一個簡單的 JSON 對象:

[
????"Qt",
????5.7,
????true
]

<p style="font-family:'-apple-system

常量描述
常量描述
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

在嵌入式系統(tǒng)開發(fā)領(lǐng)域,Qt憑借其跨平臺特性、豐富的GUI組件和高效的開發(fā)框架,成為構(gòu)建交互式界面的首選工具之一。對于嵌入式工程師而言,掌握Qt不僅能提升開發(fā)效率,更能為智能設(shè)備、工業(yè)控制、汽車電子等領(lǐng)域的產(chǎn)品帶來更優(yōu)質(zhì)的...

關(guān)鍵字: 嵌入式 QT

在嵌入式系統(tǒng)開發(fā)領(lǐng)域,Qt憑借其跨平臺特性和豐富的功能庫,已成為構(gòu)建高性能圖形用戶界面(GUI)的首選工具之一。對于嵌入式工程師而言,掌握Qt的多種開發(fā)方式不僅能提升開發(fā)效率,還能增強(qiáng)對復(fù)雜嵌入式系統(tǒng)的控制能力。

關(guān)鍵字: 嵌入式系統(tǒng) QT

在嵌入式Linux圖形界面開發(fā)中,Qt框架憑借其跨平臺特性與豐富的組件庫成為首選方案。其核心的信號槽機(jī)制為對象間通信提供了高效解耦方案,但在資源受限的嵌入式場景中,不當(dāng)使用可能導(dǎo)致性能瓶頸。本文從機(jī)制原理出發(fā),結(jié)合典型場...

關(guān)鍵字: QT 嵌入式Linux 信號槽

隨著數(shù)字孿生技術(shù)的發(fā)展 , 三維模型的顯示與控制技術(shù)應(yīng)用需求 日益迫切 , 當(dāng)前在嵌入式環(huán)境下實(shí)現(xiàn)復(fù)雜模型的三維顯示與控制仍存在渲染效率低 、交互控制復(fù)雜 、控制延遲高 、可移植性差等問題 。針對上述問題 ,提出了一種基...

關(guān)鍵字: 0SG QT 三維可視化 模型交互控制 RK3588平臺

序列化是將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為可傳輸或存儲的格式,反序列化是還原為原始數(shù)據(jù)結(jié)構(gòu)。它們用于跨網(wǎng)絡(luò)傳輸、跨語言交互和持久化存儲。Go語言中,gob適合內(nèi)部高效傳輸,json適合跨語言交互和文本存儲。

關(guān)鍵字: 序列化 反序列化 json

Qt是一款由Qt公司(前身為Trolltech)開發(fā)的跨平臺應(yīng)用程序框架。它提供了豐富的功能,包括圖形用戶界面、數(shù)據(jù)庫操作、網(wǎng)絡(luò)通信等,使得開發(fā)者能夠更加便捷地創(chuàng)建高質(zhì)量、可移植性強(qiáng)的應(yīng)用程序。Qt采用C++編寫,同時也...

關(guān)鍵字: QT RTOS

摘 要 :為解決制鞋行業(yè)中噴膠精度不高、靈活性差、生產(chǎn)效率低的問題,設(shè)計(jì)一種基于機(jī)器視覺的鞋模噴膠系統(tǒng)。該系統(tǒng)硬件由工業(yè)攝像頭、工控機(jī)及路由器構(gòu)成,軟件則采用圖像識別庫 OpenCV 與圖形界面應(yīng)用程序開發(fā)框架 Qt 編...

關(guān)鍵字: 機(jī)器視覺 圖像處理 鞋模 噴膠 OpenCV QT

嵌入式系統(tǒng)是指以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

關(guān)鍵字: QT 嵌入式 C++

摘 要:倉儲作為物流與供應(yīng)鏈的核心環(huán)節(jié),對食品安全的控制起著至關(guān)重要的作用。溫濕度是影響糧食倉儲過程安全與品質(zhì)的重要因素。文中使用無線傳感網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)采集,通過Qt平臺設(shè)計(jì)軟件系統(tǒng),并借助數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲與分析處理,實(shí)...

關(guān)鍵字: 成品糧 倉儲 溫濕度監(jiān)測 無線傳感網(wǎng)絡(luò) QT

在此部件上繪制行號,并將其放置在CodeEditor的viewport()的左邊距區(qū)域上,QWidget類也可以幫助我們對其內(nèi)容進(jìn)行滾動。

關(guān)鍵字: QT 代碼編輯器
關(guān)閉