1.項目架構
1.UI界面
1.新建文本文檔
2.打開文件
3.另存為文件
2.mainwindow.h?
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void newActionSlot();void openActionSlot();void saveActionSlot();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
3.main.cpp?
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
3.mainwindow.cpp?
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->newAction,&QAction::triggered,this,&MainWindow::newActionSlot);connect(ui->openAction,&QAction::triggered,this,&MainWindow::openActionSlot);connect(ui->saveAction,&QAction::triggered,this,&MainWindow::saveActionSlot);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文檔.txt");
}void MainWindow::openActionSlot()
{QString fileName = QFileDialog::getOpenFileName(this, "open",QCoreApplication::applicationFilePath(),"*.cpp");if (fileName.isEmpty()){QMessageBox::warning(this,"警告","請選擇一個文件");}else{
// qDebug()<<fileName;QFile file(fileName);//創建文件對象file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}}void MainWindow::saveActionSlot()
{QString fileName = QFileDialog::getSaveFileName(this,"save",QCoreApplication::applicationFilePath());if (fileName.isEmpty()){QMessageBox::warning(this,"警告","請選擇一個文件");}else{QFile file(fileName);//創建文件對象file.open(QIODevice::WriteOnly);QByteArray ba;ba.append(ui->textEdit->toPlainText());file.write(ba);file.close();}
}
2. 程序講解
1. 初始化界面
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->newAction, &QAction::triggered, this, &MainWindow::newActionSlot);connect(ui->openAction, &QAction::triggered, this, &MainWindow::openActionSlot);connect(ui->saveAction, &QAction::triggered, this, &MainWindow::saveActionSlot);
}
-
界面設置:構造函數中初始化UI組件。
-
信號槽連接:將菜單項的動作(新建、打開、保存)與對應的槽函數連接起來。
2. 新建文件
void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文檔.txt");
}
-
清空文本:調用
textEdit->clear()
清空文本編輯器的內容。 -
設置窗口標題:將窗口標題設置為“新建文本文檔.txt”。
3. 打開文件
void MainWindow::openActionSlot()
{QString fileName = QFileDialog::getOpenFileName(this, "open",QCoreApplication::applicationFilePath(), "*.cpp");if (fileName.isEmpty()){QMessageBox::warning(this, "警告", "請選擇一個文件");}else{QFile file(fileName);file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}
}
-
打開文件對話框:使用
QFileDialog::getOpenFileName
打開文件選擇對話框。 -
檢查文件名:如果用戶沒有選擇文件,顯示警告消息。
-
讀取文件內容:打開文件,讀取所有內容,并將其顯示在文本編輯器中。
4. 保存文件
void MainWindow::saveActionSlot()
{QString fileName = QFileDialog::getSaveFileName(this, "save",QCoreApplication::applicationFilePath());if (fileName.isEmpty()){QMessageBox::warning(this, "警告", "請選擇一個文件");}else{QFile file(fileName);file.open(QIODevice::WriteOnly);QByteArray ba;ba.append(ui->textEdit->toPlainText());file.write(ba);file.close();}
}
-
打開保存對話框:使用
QFileDialog::getSaveFileName
打開文件保存對話框。 -
檢查文件名:如果用戶沒有選擇文件,顯示警告消息。
-
寫入文件內容:打開文件,將文本編輯器中的內容寫入文件。