mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 创建文本编辑区域
    textEdit = new QTextEdit;
    setCentralWidget(textEdit);


    // 创建菜单栏和菜单项
    QMenu *fileMenu = menuBar()->addMenu(tr("File"));
    fileMenu->addAction(tr("新建"),this,&MainWindow::newDocument);
    fileMenu->addAction(tr("打开..."),this,&MainWindow::openDocument);
    fileMenu->addAction(tr("保存为..."),this,&MainWindow::saveDocument);



}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::newDocument()
{
    textEdit->clear();
}


void MainWindow::saveDocument() {
    QString fileName = QFileDialog::getSaveFileName(this, tr("Save Document"), "", tr("Text Files (*.txt);;All Files (*)"));

        if (fileName.isEmpty())
            return;

        QFile file(fileName);
        if (!file.open(QIODevice::WriteOnly)) {
            QMessageBox::information(this, tr("Unable to open file"), file.errorString());
            return;
        }

        QTextStream out(&file);
        out << textEdit->toPlainText();

        // 确保我们已经写入所有更改
        file.close();
}

void MainWindow::openDocument()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), QString(),
                                                        tr("Text Files(*.txt);;C++ Files(*.cpp *.h)"));
        if (!fileName.isEmpty())
        {
            QFile file(fileName);
            if (!file.open(QIODevice::ReadOnly)) // 应该使用 ReadOnly 模式
            {
                QMessageBox::critical(this, tr("Error"), tr("Could not open file for reading"));
            }
            else
            {
                QTextStream stream(&file);
                textEdit->setPlainText(stream.readAll()); // 读取文件内容并设置到 textEdit
                stream.flush();
                file.close();
            }
        }

}

mainwindow.h


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void newDocument();
    void openDocument();
    void saveDocument();

private:
    Ui::MainWindow *ui;
    QTextEdit *textEdit;
};




#endif // MAINWINDOW_H

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部