国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本

這篇具有很好參考價值的文章主要介紹了【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????在很多時候我們需要讀寫文本文件進行讀寫,比如寫個 Mp3 音樂播放器需要讀 Mp3 歌詞里的文本,比如修改了一個 txt 文件后保存,就需要對這個文件進行讀寫操作。本文介紹簡單的文本文件讀寫,內(nèi)容精簡,讓大家了解文本讀寫的基本操作。

QFile 讀寫文本

????????QFile 類提供了讀取和寫入文件的接口。在嵌入式里如果需要讀寫文件,最簡單的方法就是 用 Qfile,例如利用QFile來讀寫 Linux 下的字符設(shè)備(可把字符設(shè)備當作一個文本處理,linux 下一切皆文件),雖然只是寫‘0’或‘1’,但也是對文件(文本)的讀寫了。

????????QFile 是一個讀寫文本、二進制文件和資源的 I/O 設(shè)備。QFile 可以自己使用,也可以更方便地與 QTextStream 或 QDataStream 一起使用。

????????文件名通常在構(gòu)造函數(shù)中傳遞,但它可以在任何時候使用 setFileName()設(shè)置。不支持使用其他分隔符(例如'\')。所以在 Windows、Linux 或者 Mac 里文件的路徑都是用'/'。不能看到 Windows 的路徑是'\',我們就可以在寫入的文件路徑里添加這個'\'。不管操作系統(tǒng)是什么,QFile 的文件分隔符都是'/'。

????????可以使用 exists()檢查文件是否存在,并使用 remove()刪除文件。(更高級的文件系統(tǒng)相關(guān)操 作由 QFileInfo 和 QDir 提供)用 open()打開文件,用 close()關(guān)閉文件,用 flush()刷新文件。通常使用 QDataStream 或 QTextStream 讀寫數(shù)據(jù),但也可以調(diào)用 QIODevice 繼承的函數(shù) read()、 readLine()、readAll()、write()。QFile 還繼承 getChar()、putChar()和 ungetChar(),它們一次只處 理一個字符。文件的大小由 size()返回。可以使用 pos()獲取當前文件位置,也可以使用 seek() 移動到新的文件位置。如果已經(jīng)到達文件的末尾,則 atEnd()返回 true。

????????QFile::open()函數(shù)打開文件時需要傳遞 QIODevice::OpenModeFlag 枚舉類型的參數(shù),決定 文件以什么方式打開,QIODevice::OpenModeFlag 類型的主要取值如下:

  • QIODevice::ReadOnly:以只讀方式打開文件,用于載入文件。
  • QIODevice::WriteOnly:以只寫方式打開文件,用于保存文件。
  • QIODevice::ReadWrite:以讀寫方式打開。
  • QIODevice::Append:以添加模式打開,新寫入文件的數(shù)據(jù)添加到文件尾部。
  • QIODevice::Truncate:以截取方式打開文件,文件原有的內(nèi)容全部被刪除。
  • QIODevice::Text:以文本方式打開文件,讀取時“\n”被自動翻譯為換行符,寫入時字符 串結(jié)束符會自動翻譯為系統(tǒng)平臺的編碼,如 Windows 平臺下是“\r\n”。

????????這些取值可以組合,例如 QIODevice::ReadOnly | QIODevice::Text 表示以只讀和文本方式打開文件。

????????使用 QFile 對一個文本文件的操作流程是以下這樣的。

【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本,Linux,Qt,qt,開發(fā)語言,linux,c++

應(yīng)用實例

? ? ? ? 創(chuàng)建項目qfile_test,在頭文件“mainwindow.h”具體代碼如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>
#include <QFile>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    /* 用于讀取文件后顯示 */
    QTextEdit *textEdit;
    /* QFile 類型對象 */
    QFile file;
    /* 布局 */
    QHBoxLayout *hBoxLayout;
    QVBoxLayout *vBoxLayout;
    QWidget *hWidget;
    QWidget *vWidget;
    /* 打開文件按鈕 */
    QPushButton *openPushButton;
    /* 關(guān)閉文件按鈕 */
    QPushButton *clsoePushButton;
private slots:
    /* 打開文本文件 */
    bool openFile();
    /* 關(guān)閉文本文件 */
    void closeFile();
};
#endif // MAINWINDOW_H

????????在源文件“mainwindow.cpp”具體代碼如下。

#include "mainwindow.h"
#include <QFileDialog>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    /* 設(shè)置窗口的位置與大小 */
    this->setGeometry(0, 0, 800, 480);
    /* 布局設(shè)置 */
    textEdit = new QTextEdit();
    vBoxLayout = new QVBoxLayout();
    hBoxLayout = new QHBoxLayout();
    vWidget = new QWidget();
    hWidget = new QWidget();
    openPushButton = new QPushButton();
    closePushButton = new QPushButton();
    /* 設(shè)置兩個按鈕的大小 */
    openPushButton->setMinimumHeight(50);
    openPushButton->setMaximumWidth(120);
    closePushButton->setMinimumHeight(50);
    closePushButton->setMaximumWidth(120);
    /* 設(shè)置兩個按鈕的文本 */
    openPushButton->setText("打開");
    closePushButton->setText("關(guān)閉");
    /* 設(shè)置關(guān)閉按鈕為不可用屬性,需要打開文件才設(shè)置為可用屬性 */
    closePushButton->setEnabled(false);
    /* 水平布局 */
    hBoxLayout->addWidget(openPushButton);
    hBoxLayout->addWidget(closePushButton);
    hWidget->setLayout(hBoxLayout);
    /* 垂直布局 */
    vBoxLayout->addWidget(textEdit);
    vBoxLayout->addWidget(hWidget);
    vWidget->setLayout(vBoxLayout);
    /* 居中 */
    setCentralWidget(vWidget);
    /* 信號槽連接 */
    connect(openPushButton, SIGNAL(clicked()), this, SLOT(openFile()));
    connect(closePushButton, SIGNAL(clicked()), this, SLOT(closeFile()));
}

MainWindow::~MainWindow()
{
}

bool MainWindow::openFile(){
    /* 獲取文件的路徑 */
    QString fileName = QFileDialog::getOpenFileName(this);
    /* 指向文件 */
    file.setFileName(fileName);
    /* 判斷文件是否存在 */
    if(!file.exists())
        return false;
    /* 以讀寫的方式打開 */
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return false;
    /* 讀取文本到 textEdit */
    textEdit->setPlainText(file.readAll());
    /* 設(shè)置打開按鈕不可用,需要關(guān)閉再打開 */
    openPushButton->setEnabled(false);
    /* 設(shè)置關(guān)閉按鈕為可用屬性 */
    closePushButton->setEnabled(true);
    /* 關(guān)閉文件 */
    file.close();
    return true;
}
void MainWindow::closeFile(){
    /* 檢測打開按鈕是否可用,不可用時,說明已經(jīng)打開了文件 */
    if(!openPushButton->isEnabled()){
        /* 獲取 textEdit 的文本內(nèi)容 */
        QString str = textEdit->toPlainText();
        /* 以只讀的方式打開 */
        if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
               return;
        /* 轉(zhuǎn)換為字節(jié)數(shù)組 */
        QByteArray strBytes = str.toUtf8();
        /* 寫入文件 */
        file.write(strBytes, strBytes.length());
        /* 清空 textEdit 的顯示內(nèi)容 */
        textEdit->clear();
        /* 關(guān)閉文件 */
        file.close();
        /* 重新設(shè)置打開和關(guān)閉按鈕的屬性 */
        openPushButton->setEnabled(true);
        closePushButton->setEnabled(false);
    }
}

程序運行效果

? ? ? ? 點擊打開?

【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本,Linux,Qt,qt,開發(fā)語言,linux,c++

?????????調(diào)用系統(tǒng)打開文件的窗口。選擇一個文本文件。

【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本,Linux,Qt,qt,開發(fā)語言,linux,c++

?????????打開后,文本的內(nèi)容如下,可以進行修改,修改后點擊關(guān)閉就會寫入到此文件里。本例僅僅用兩個按鈕和一個文本編輯框完成,內(nèi)容簡潔易懂。但是在實際項目里不是用 QPushButton 來做打開文件和關(guān)閉文件的,一般設(shè)計于在菜單欄里用 QAction 來做。包括添加復(fù)制、粘貼、 另存為、關(guān)閉、等等。可以仿照 Windows 里的記事本,用 Qt 寫一個類似的軟件完全可以。

【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本,Linux,Qt,qt,開發(fā)語言,linux,c++

?文章來源地址http://www.zghlxwxcb.cn/news/detail-525835.html

到了這里,關(guān)于【嵌入式Qt開發(fā)入門】如何使用Qt進行文本讀寫——QFile讀寫文本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【嵌入式Qt開發(fā)入門】初識Qt——Linux下安裝Qt

    【嵌入式Qt開發(fā)入門】初識Qt——Linux下安裝Qt

    ????????Qt 是一個跨平臺的 C++開發(fā)庫。主要用來開發(fā)圖形用戶界面(Graphical User Interface,簡 稱 GUI)程序。 ????????Qt 雖然經(jīng)常被當做一個 GUI 庫,用來開發(fā)圖形界面應(yīng)用程序,但這并不是 Qt 的全部; Qt 除了可以繪制漂亮的界面(包括控件、布局、交互),還包含很多

    2024年02月16日
    瀏覽(94)
  • 【嵌入式Qt開發(fā)入門】在Ubuntu下編寫C++

    【嵌入式Qt開發(fā)入門】在Ubuntu下編寫C++

    ????????在 Ubuntu 上面編寫 C++,本文內(nèi)容主要介紹在 Ubuntu 在終端窗口下使用 vi/vim 編輯一 個 C++源文件。通過編寫最簡單的示例“Hello,World!”。帶領(lǐng)大家學習如何在 Ubuntu 終端下編輯和編譯 C++。這里要求大家會在 Ubuntu 上使用 vi/vim,也就是要求大家有一點 Ubuntu 入門的基

    2024年02月11日
    瀏覽(22)
  • 使用Yocto進行嵌入式Linux開發(fā)3 Toaster

    使用Yocto進行嵌入式Linux開發(fā)3 Toaster

    我們已經(jīng)知道了如何在Poky中使用BitBake構(gòu)建圖像image,那么我們將學習如何使用Toaster完成同樣的操作。 Toaster是一個用于配置和運行構(gòu)建的Web接口。它與BitBake和Poky構(gòu)建系統(tǒng)通信,以管理和收集有關(guān)構(gòu)建、軟件包和鏡像的信息。 使用Toaster的兩種方法: 本地 可以將Toaster作為本

    2024年02月08日
    瀏覽(20)
  • 嵌入式開發(fā)--CubeMX使用入門教程

    嵌入式開發(fā)--CubeMX使用入門教程

    嵌入式開發(fā)–CubeMX使用入門教程 傳統(tǒng)的單片機開發(fā)時,需要針對片上外設(shè)做各種初始化的工作,相當麻煩。 CubeMX是ST公司出品的一款圖形化代碼生成工具,通過圖形化界面,可以非常直觀的配置好各種片上外設(shè),時鐘,中斷,DMA等等各種設(shè)備的參數(shù),然后CubeMX可以直接生成初

    2024年04月12日
    瀏覽(31)
  • 使用Yocto進行嵌入式Linux開發(fā)1 Yocto簡介

    使用Yocto進行嵌入式Linux開發(fā)1 Yocto簡介

    Yocto項目是Linux基金會的一個工作組,它是一個開源協(xié)作項目,幫助開發(fā)人員創(chuàng)建基于Linux的定制系統(tǒng),這些系統(tǒng)專為嵌入式產(chǎn)品而設(shè)計,與產(chǎn)品的硬件架構(gòu)無關(guān)。Yocto項目提供了一個靈活的工具集和開發(fā)環(huán)境,使世界各地的嵌入式設(shè)備開發(fā)人員能夠通過共享技術(shù)、軟件棧、配

    2024年02月09日
    瀏覽(29)
  • 使用VSCode clangd插件進行l(wèi)inux內(nèi)核代碼閱讀和嵌入式開發(fā)

    使用VSCode clangd插件進行l(wèi)inux內(nèi)核代碼閱讀和嵌入式開發(fā)

    在進行 Linux 內(nèi)核代碼閱讀和嵌入式開發(fā)時,選擇合適的開發(fā)工具至關(guān)重要。VSCode 是一個流行的跨平臺編輯器,并且它的擴展生態(tài)系統(tǒng)非常強大。在這篇博客中,我們將介紹如何使用 VSCode Clangd 插件來提高 Linux 內(nèi)核代碼的閱讀和嵌入式開發(fā)效率。 Clangd 是一個基于 Clang 的語言

    2024年02月09日
    瀏覽(30)
  • 使用Yocto進行嵌入式Linux開發(fā)2 第一個基于Poky的系統(tǒng)

    使用Yocto進行嵌入式Linux開發(fā)2 第一個基于Poky的系統(tǒng)

    Ubuntu: Fedora 在我們的開發(fā)主機系統(tǒng)上安裝了所需的軟件包后,我們可以使用 Git 下載當前 LTS 版本的 Poky 源代碼,命令如下: 下載完成后,poky 目錄中的內(nèi)容如下: 在poky目錄中存在oe-init-build-env腳本,用于設(shè)置構(gòu)建環(huán)境。 這里,[build-directory] 是一可選參數(shù),用于指定配置環(huán)境

    2024年02月08日
    瀏覽(56)
  • 嵌入式開發(fā)板qt gdb調(diào)試

    嵌入式開發(fā)板qt gdb調(diào)試

    1) 啟動 gdbserver ssh 或者 telnet 登陸揚創(chuàng)平板 192.168.0.253, 進入命令行執(zhí)行如下: chmod 777 /home/HelloWorld (2) 打 開 QTcreator-Debug-StartDebugging-Attach to Running Debug Server 進行如下設(shè)置,設(shè)置監(jiān)聽端口10000. 點擊上圖中的按鈕,由于按鈕中的函數(shù)設(shè)置了斷點,則跳到斷點,界面如下

    2024年02月04日
    瀏覽(34)
  • 嵌入式Qt 開發(fā)一個音樂播放器

    嵌入式Qt 開發(fā)一個音樂播放器

    上篇文章:RK3568源碼編譯與交叉編譯環(huán)境搭建,進行了OK3568開發(fā)板軟件開發(fā)環(huán)境搭建,通過編譯RK3568的源碼,可以得到Qt開發(fā)的交叉編譯相關(guān)工具。 本篇,就來在搭建好的軟件開發(fā)中,進行Qt軟件的開發(fā)測試。由于Qt是支持跨平臺的,因此本篇的音樂播放器,先在Windows上編寫

    2024年02月02日
    瀏覽(41)
  • 嵌入式QT- QT使用MQTT

    嵌入式QT- QT使用MQTT

    目錄 一、MQTT介紹 二、MQTT概念 ? 2.1 訂閱(Subscribtion) ? 2.2?會話(Session) ? 2.3 主題名(Topic Name) ? ?2.4 主題篩選器(Topic Filter) ? ?2.5 消息訂閱 三、MQTT中的角色 3.1 客戶端 3.2 服務(wù)器 四、X86平臺安裝mosquitto 4.1 下載?mosquitto 服務(wù)器 4.2?下載 mosquitto 客戶端 4.3?mosquitto 命令

    2024年02月13日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包