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
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Qt极简版文本编辑器(新建打开保存三个功能
发表评论 取消回复