Qt修炼手册5_文件输入输出
生活随笔
收集整理的這篇文章主要介紹了
Qt修炼手册5_文件输入输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Qt使用QFile類輸入和輸出文件。 QFile通過I/0設備讀寫二進制文作、 文本文件和資源文內容。Qt還提供QTextStream和QDataStream類, 它們能通過數據流有效讀寫數據。 換言之, 這兩個類不直接將數掘記錄到文件, 而是通過更為簡単的管道等界面讀寫數據 。
1.QIODevice類的枚舉類型
QFile類繼承自QFileDevice類。QFileDivice類提供可以在打開的文件中讀寫數據的界面。還可以提供文件的當前位置、文件大小,擁有刷新功能。
2.Simple文件的View示例
該示例使用QFile類讀取文本文件,然后將其輸出到QPlainTextEdit類控件。QPlainTextEdit控件提供文本瀏覽(Vierwer)和編輯(Edit)功能,還可以處理超大文件的文檔(Document),有利于編輯器應用程序的開發。
QPlainTextEdit和QTextEdit相似,但提供可編輯文本數據的高級功能。
main.h 主文件:
#include "mynote.h" #include <QtWidgets/QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);mynote w;w.show();return a.exec(); } mynote.h文件:
#ifndef MYNOTE_H #define MYNOTE_H#include <QtWidgets/QMainWindow> #include "ui_mynote.h" #include <qaction.h> #include <qlabel.h> #include <qmenu.h> #include <qmenubar.h> #include <QHBoxLayout> #include <qplaintextedit.h>class mynote : public QMainWindow {Q_OBJECTpublic:mynote(QWidget *parent = 0);~mynote();private:Ui::mynoteClass ui; private:void createActions();void createMenus();void loadFile(const QString &fileName);QMenu* fileMenu;QAction* openAct;QHBoxLayout* hLayout;QPlainTextEdit* textEdit;QString fileName; private slots:void open(); };#endif // MYNOTE_H mynote.cpp文件:
#include <qfiledialog.h>//QFileDialog在其中有定義 #include <qmessagebox.h> #include <qtextstream.h> #include "mynote.h"mynote::mynote(QWidget *parent): QMainWindow(parent) {ui.setupUi(this);///setFixedSize(600, 500);textEdit = new QPlainTextEdit;setCentralWidget(textEdit);createActions();createMenus(); }mynote::~mynote() { }void mynote::createActions() {openAct = new QAction(tr("&Open..."), this); //創建菜單欄中的子項openAct->setShortcuts(QKeySequence::Open); //封裝成快捷鍵connect(openAct, SIGNAL(triggered()),this, SLOT(open())); }void mynote::createMenus() {fileMenu = menuBar()->addMenu(tr("&File")); //創建菜單欄fileMenu->addAction(openAct); //將子項加入到菜單欄中 }//槽函數 負責打開文件 void mynote::open() {QString fileName = QFileDialog::getOpenFileName(this);if (!fileName.isEmpty())loadFile(fileName); }void mynote::loadFile(const QString &fileName) {QFile file(fileName);if (!file.open(QFile::ReadOnly | QFile::Text)) //打開文件的方式{QMessageBox::warning(this,tr("Application"),tr("Can't read file %1:\n%2").arg(fileName).arg(file.errorString()));return;}QTextStream in(&file); //以文件流的形式打開textEdit->setPlainText(in.readAll()); //讀取文件所有文本 }解釋說明:
- 在應用程序菜單中,函數createAction()用于處理事件;函數createMenu()用于將【File】菜單選項添加到菜單欄。若用戶在菜單上點擊【File】,函數connection()會發生信號-槽事件。
- Qaction類中的openAct實例中,若用戶點擊菜單上的【打開】,就會調用信號-槽事件的中open()函數。setShortcuts()函數可以在被定義的項目使用和打開對應的快捷鍵。
- 利用QTextStream類,通過流處理從QFile讀取的文件數據,并將從最后一行讀取到的文件文本輸出到QPlainTextEdit類的索引。
- QFileDialog類提供了能選擇文件的GUI。利用此類可以通過文件過濾器選擇特定文件的擴展名,還可以檢測最近打開的文件目錄以及設置默認目錄。
總結
以上是生活随笔為你收集整理的Qt修炼手册5_文件输入输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王建宙:中国移动还未与苹果就iPhone
- 下一篇: 程序员减压方法100%有效