最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

qt5之QFile讀寫文件功能詳解

 更新時間:2022年05月09日 15:03:41   作者:PandaMohist  
這篇文章主要為大家詳細介紹了qt5之QFile讀寫文件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了qt5之QFile讀寫文件功能的具體代碼,供大家參考,具體內容如下

1、效果

讀寫文件用到的是QFile類,

這里,我顯示文件內容用到的是 QTextEdit

2、創(chuàng)建打開和關閉按鈕

// 打開文件
? ? btnOpenFile ? ? = new QToolButton;
? ? btnOpenFile->setText(tr("open a file"));
? ? btnOpenFile->setToolTip(tr("open a file"));
? ? connect(btnOpenFile, SIGNAL(clicked(bool)), this, SLOT(btnOpenFileSlot()));
? ? btnOpenFile->setIcon(QIcon(":/res/ico/dev/open"));
? ? btnOpenFile->setFixedSize(80, 48);
? ? btnOpenFile->setIconSize(QSize(80, 48));
?
? ? // 關閉文件
? ? btnCloseFile ? ?= new QToolButton;
? ? btnCloseFile->setText(tr("close file"));
? ? btnCloseFile->setToolTip(tr("close file"));
? ? connect(btnCloseFile, SIGNAL(clicked(bool)), this, SLOT(btnCloseFileSlot()));
? ? btnCloseFile->setIcon(QIcon(":/res/ico/dev/save"));
? ? btnCloseFile->setFixedSize(80, 48);
? ? btnCloseFile->setIconSize(QSize(80, 48));

3、打開文件

?/*
? ? ? ?getOpenFileName函數(shù)說明
? ? ? ?函數(shù)原形: QStringList QFileDialog::getOpenFileNames(
? ? ? ?QWidget * parent = 0,
? ? ? ?const QString & caption = QString(), ? ?// ?打開文件對話框的標題
? ? ? ?const QString & dir = QString(), ? ? ? ? ? ?// ?查找目錄
? ? ? ?const QString & filter = QString(), ? ? // ?設置需要過濾的文件格式
? ? ? ?QString * selectedFilter = 0,
? ? ? ?Options options = 0) [static]
? ? ? ?*/
? ? ? ?//---獲取文件名;
? ? QString qexeFullPath ? ?= QDir::currentPath();
? ? QString fileName ? ? ? ?= QFileDialog :: getOpenFileName(this, tr("選擇一個文件"), qexeFullPath, "*.txt");
?
? ? // 1、若沒有選擇文件
? ? if (true ? ? ? ? ? ? ? ?== fileName.isEmpty())
? ? {
? ? ? ? // 什么也不做
? ? ? ? return;
? ? }
?
? ? // 2、選擇了文件,打開新選擇的文件前,檢查先前的文件
? ? CheckFileClose();
?
? ? // 3、 打開文件,顯示文件內容
? ? GetFileContext(fileName);

CheckFileClose函數(shù):

// 1、若已經(jīng)打開文件,且文件內容發(fā)生變化,此時又打開文件,則提示是否保存先前的文件
? ? bool fileIsOpen ? ? ? ? = fileReadWrite->isOpen();
? ? // 1.1 若打開了, 沒有關閉
? ? if (true ? ? ? ? ? ? ? ?== fileIsOpen)
? ? {
? ? ? ? // 1.1.1 若文件內容發(fā)生變化
? ? ? ? bool isChanged ? ? ?= GetTextEditContentIsChanged();
? ? ? ? if (true ? ? ? ? ? ?== isChanged)
? ? ? ? {
? ? ? ? ? ? int ?okcancel ? = QMessageBox::information(this, tr("mention"), tr("dev tab, textEdit's content has changed, do U wanna save ?"), QMessageBox::Ok | QMessageBox::Cancel);
?
? ? ? ? ? ? // 點擊了是,則需要保存文件
? ? ? ? ? ? if (QMessageBox::Ok == okcancel)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? SaveFile();
? ? ? ? ? ? }
?
? ? ? ? ? ? // 點擊了否,什么也不做
? ? ? ? ? ? else
? ? ? ? ? ? {
?
? ? ? ? ? ? }
? ? ? ? }
?
? ? ? ? // 1.1.2 文件內容沒有變化
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? // 什么也不做
? ? ? ? }
?
? ? ? ? // 1.1.3 關閉文件
? ? ? ? fileReadWrite->close();
?
? ? ? ? // 1.1.4 清空顯示內容
? ? ? ? textEditShowFile->clear();
?
? ? ? ? // 1.1.5 設置為只讀
? ? ? ? textEditShowFile->setReadOnly(true);
?
? ? ? ? // 1.1.6 清空文件內容緩沖區(qū)
? ? ? ? textEditContent = QString("");
?
? ? ? ? // 1.1.6 清除文件名
? ? ? ? lineEditFileName->setText("");
? ? }
? ? // 1.2文件沒有打開
? ? else
? ? {
? ? ? ? // 文件沒有打開,什么也不做
?
? ? }

GetFileContext函數(shù)代碼:

// 之前已經(jīng)保證文件關閉了,現(xiàn)在重新打開文件
?
? ? // 2、 打開文件
? ? fileReadWrite->setFileName(openNewFileName);
? ? bool openFlag ? ? ? ? ? = fileReadWrite->open(QIODevice ::ReadWrite | QIODevice ::Text);
? ? // 若打開失敗
? ? if (false ? ? ? ? ? ? ? == openFlag)
? ? {
? ? ? ? QMessageBox::critical(this, tr("warning"), ?tr("open file err"));
? ? ? ? return;
? ? }
?
? ? // 保存文件名
? ? openFileName ? ? ? ? ? ?= openNewFileName;
?
? ? // 3.1 刪除原有的內容
? ? textEditShowFile->clear();
?
? ? // 3.2 顯示文件內容
? ? QTextStream textStream(fileReadWrite);
? ? while (!textStream.atEnd())
? ? {
? ? ? ? //---QtextEdit按行顯示文件內容
? ? ? ? textEditShowFile->append(textStream.readLine());
? ? }
?
? ? // 5、解除只讀
? ? textEditShowFile->setReadOnly(false);
?
? ? // 6、臨時保存當前打開文件內容
? ? textEditContent = textEditShowFile->toPlainText();
?
? ? // 7、顯示打開的文件名
? ? lineEditFileName->setText(openFileName);

4、關閉按鈕

下面做了關閉文件前的一些檢查

// 1、若已經(jīng)打開文件,且文件內容發(fā)生變化,此時又打開文件,則提示是否保存先前的文件
? ? bool fileIsOpen ? ? ? ? = fileReadWrite->isOpen();
? ? // 1.1 若打開了, 沒有關閉
? ? if (true ? ? ? ? ? ? ? ?== fileIsOpen)
? ? {
? ? ? ? // 1.1.1 若文件內容發(fā)生變化
? ? ? ? bool isChanged ? ? ?= GetTextEditContentIsChanged();
? ? ? ? if (true ? ? ? ? ? ?== isChanged)
? ? ? ? {
? ? ? ? ? ? int ?okcancel ? = QMessageBox::information(this, tr("mention"), tr("dev tab, textEdit's content has changed, do U wanna save ?"), QMessageBox::Ok | QMessageBox::Cancel);
?
? ? ? ? ? ? // 點擊了是,則需要保存文件
? ? ? ? ? ? if (QMessageBox::Ok == okcancel)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? SaveFile();
? ? ? ? ? ? }
?
? ? ? ? ? ? // 點擊了否,什么也不做
? ? ? ? ? ? else
? ? ? ? ? ? {
?
? ? ? ? ? ? }
? ? ? ? }
?
? ? ? ? // 1.1.2 文件內容沒有變化
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? // 什么也不做
? ? ? ? }
?
? ? ? ? // 1.1.3 關閉文件
? ? ? ? fileReadWrite->close();
?
? ? ? ? // 1.1.4 清空顯示內容
? ? ? ? textEditShowFile->clear();
?
? ? ? ? // 1.1.5 設置為只讀
? ? ? ? textEditShowFile->setReadOnly(true);
?
? ? ? ? // 1.1.6 清空文件內容緩沖區(qū)
? ? ? ? textEditContent = QString("");
?
? ? ? ? // 1.1.6 清除文件名
? ? ? ? lineEditFileName->setText("");
? ? }
? ? // 1.2文件沒有打開
? ? else
? ? {
? ? ? ? // 文件沒有打開,什么也不做
?
? ? }

其中,SaveFile函數(shù)代碼如下:

?bool isOpen = fileReadWrite->isOpen();
? ? // 若文件沒有打開
? ? if (false ? == isOpen)
? ? {
? ? ? ? return;
? ? }
?
? ? // 關閉文件
? ? fileReadWrite->close();
?
? ? fileReadWrite->open(QIODevice ::WriteOnly | QIODevice ::Text | QIODevice::Truncate);
? ? QString writeStr ? ?= textEditShowFile->toPlainText();
#ifdef QT_DEBUG
? ? qDebug() << "文件內容 = " << writeStr;
#endif
?
? ? // 文件打開了,現(xiàn)在關閉
? ? QTextStream outFile(fileReadWrite);
? ? outFile << writeStr << endl;
? ? outFile.flush();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言實現(xiàn)飛機售票系統(tǒng)

    C語言實現(xiàn)飛機售票系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)飛機售票系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • c++類成員函數(shù)如何做函數(shù)參數(shù)

    c++類成員函數(shù)如何做函數(shù)參數(shù)

    這篇文章主要介紹了c++類成員函數(shù)如何做函數(shù)參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 從頭學習C語言之二維數(shù)組

    從頭學習C語言之二維數(shù)組

    這篇文章主要為大家詳細介紹了C語言之二維數(shù)組,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言 動態(tài)分配數(shù)組案例詳解

    C語言 動態(tài)分配數(shù)組案例詳解

    這篇文章主要介紹了C語言 動態(tài)分配數(shù)組案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 深入理解strcpy與memcpy的區(qū)別

    深入理解strcpy與memcpy的區(qū)別

    本篇文章是對strcpy與memcpy的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 提高C++程序運行效率的10個簡單方法

    提高C++程序運行效率的10個簡單方法

    這篇文章主要介紹了提高C++程序運行效率的10個簡單方法,包括了循環(huán)、變量、繼承等等應用的技巧,非常具有實用價值,需要的朋友可以參考下
    2014-09-09
  • 深入了解c++數(shù)組與指針

    深入了解c++數(shù)組與指針

    這篇文章主要介紹了c++數(shù)組與指針的相關資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08
  • OpenCV繪制圖形功能

    OpenCV繪制圖形功能

    這篇文章主要為大家詳細介紹了OpenCV繪制圖形功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++修煉之構造函數(shù)與析構函數(shù)

    C++修煉之構造函數(shù)與析構函數(shù)

    本章節(jié)我們將學習類的6個默認成員函數(shù)中的構造函數(shù)與析構函數(shù),并對比C語言階段的內容來學習它們的各自的特性,感興趣的同學可以參考閱讀
    2023-03-03
  • NDK 數(shù)據(jù)結構之隊列與棧等的實現(xiàn)

    NDK 數(shù)據(jù)結構之隊列與棧等的實現(xiàn)

    這篇文章主要介紹了NDK 數(shù)據(jù)結構之隊列與棧等的實現(xiàn)的相關資料,希望通過本文大家能理解掌握這部分內容,需要的朋友可以參考下
    2017-10-10

最新評論

泰顺县| 宜丰县| 吴堡县| 仙居县| 洛扎县| 贡觉县| 丹寨县| 宁夏| 鄂州市| 洛隆县| 巧家县| 类乌齐县| 石首市| 射洪县| 泰来县| 阜城县| 宁晋县| 九台市| 石城县| 宁南县| 阳朔县| 芦山县| 中宁县| 惠水县| 临澧县| 合江县| 唐山市| 彭山县| 瓦房店市| 高邑县| 洛阳市| 弥渡县| 江孜县| 盐城市| 金昌市| 睢宁县| 运城市| 德阳市| 阿坝| 米泉市| 安义县|