深度
本文主要分析Windows平臺,Mac、Linux暫不涉及
本文只分析到Win32 API/Windows Com組件/STL庫函數(shù)層次,再下層代碼不做探究
本文QT版本5.15.2
類關(guān)系圖
QTemporaryFile繼承QFile
QFile、QSaveFile繼承QFileDevice
QFileDevice繼承QIODevice
QIODevice、QFileSystemWatcher繼承QObject
QLockFile、QFileInfo、QDir、QFileSelector無任何繼承關(guān)系
QObject中有一指向QObjectData指針d_ptr。d_ptr是保護成員變量,這意味著每個子類可以修改d_ptr內(nèi)容。在QObject中d_ptr指向QObjectPrivate,
QIODevice中d_ptr指向QIODevicePrivate
QFileDevice中d_ptr指向QFileDevicePrivate
QFile中d_ptr指向QFilePrivate
QTemporaryFile中d_ptr指向QTemporaryFilePrivate
QFileInfo、QDir、QLockFile不繼承QObject,因此沒有指向QObjectData指針d_ptr。但是各自同樣聲明了d_ptr變量指向各自的private類
QFileInfo中d_ptr指向QFileInfoPrivate
QDir中d_ptr指向QDirPrivate
QLockFile中d_ptr指向QLockFilePrivate
啟發(fā):
這種Private類書寫方式適合場景是導(dǎo)出接口穩(wěn)定、不想公開內(nèi)部實現(xiàn)細節(jié)、內(nèi)部能夠靈活修改
可以用在付費插件、軟件逆向等使用場景
QFileSelector
作用
實現(xiàn)在不同環(huán)境下自動選擇不同配置文件。
使用示例
#include <QFileSelector>
#include <QFile>
int main(int argc, char* argv[])
{
QFileSelector tmp;
QString filePath = tmp.select("D:/hx1.txt");
QFile file(filePath);
if (file.open(QIODevice::ReadOnly))
{
auto arrData = file.readAll();
}
return 0;
}
主要函數(shù)調(diào)用流程及原理
QFileSelector::select
寫到最后
目前先寫到這,諸位無論是有什么意見或建議都可以寫到評論區(qū),下來一起探討文章來源:http://www.zghlxwxcb.cn/news/detail-467383.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-467383.html
到了這里,關(guān)于Qt文件系統(tǒng)源碼分析—第七篇QFileSelector的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!