Skip to content

Commit 8f7f0dc

Browse files
committed
新增文件保存功能
1 parent 88c2c4c commit 8f7f0dc

File tree

10 files changed

+126
-38
lines changed

10 files changed

+126
-38
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,6 @@ Thumbs.db
7373
*.exe
7474
.VS
7575
build
76-
test.*
76+
test*
7777
.vscode
7878
.VSCodeCounter

OneMarkdown_zh_CN.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,5 +1611,15 @@ p, li { white-space: pre-wrap; }
16111611
<source>新建窗口</source>
16121612
<translation type="unfinished"></translation>
16131613
</message>
1614+
<message>
1615+
<location filename="src/menu.cpp" line="84"/>
1616+
<source>Error</source>
1617+
<translation type="unfinished"></translation>
1618+
</message>
1619+
<message>
1620+
<location filename="src/menu.cpp" line="84"/>
1621+
<source>File to open file!</source>
1622+
<translation type="unfinished"></translation>
1623+
</message>
16141624
</context>
16151625
</TS>

data/icon/ProMakr.png

3.87 KB
Loading

include/global.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
#define GLOBAL_H
33
#include <string>
44
const int TAB_WIDTH = 4;
5-
5+
extern bool IS_FILE_SAVED;
66
// QString CURRENT_FILE="NULL";
77
#endif // GLOBAL_H

readme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# 一个优秀的Markdown编辑器
2+
23
<div align="center">
34
<img src="./data/icon/ProMakr.png">
45
</div>
@@ -15,9 +16,14 @@
1516
</a>
1617
</div>
1718

19+
<div align="center" style="font-size:66px">
20+
<span style="color:#BB2E2E">更快、</span><span style="color:#BB2E2E">更强、</span><span style="color:#BB2E2E">更开源</span>
21+
</div>
22+
1823
## 致谢
1924

2025
[Markdown转HTML](https://github.com/progsource/maddy)
26+
2127
<!--
2228
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890
2329

src/OneMarkdown.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,17 @@ void OneMarkdown::textEdit_textChanged()
4949
{
5050
// disconnect 可以使得编辑textedit内容的时候不陷入死循环
5151
disconnect(ui->textEdit, &QTextEdit::textChanged, this, &OneMarkdown::textEdit_textChanged);
52+
53+
if(IS_FILE_SAVED){
54+
IS_FILE_SAVED = false;
55+
}
5256
QString text = ui->textEdit->toPlainText();
5357
std::string str = text.toStdString();
5458
std::stringstream markdownInput(str);
5559
std::string htmlOutput = parser->Parse(markdownInput);
5660
QString html = QString::fromStdString(htmlOutput);
5761
ui->webEngineView->page()->runJavaScript(QString("add('%1')").arg(html));
62+
5863
connect(ui->textEdit, &QTextEdit::textChanged, this, &OneMarkdown::textEdit_textChanged);
5964
countWords();
6065
qDebug() << "HTML output" << html << endl;
@@ -211,12 +216,19 @@ void OneMarkdown::on_btn_outline_clicked()
211216

212217
void OneMarkdown::on_btn_outline_toggled(bool checked)
213218
{
214-
if(!checked) return;
219+
if (!checked)
220+
return;
215221
qDebug() << "btn_outline_toggled" << endl;
216222
}
217223

218224
void OneMarkdown::on_btn_file_list_toggled(bool checked)
219225
{
220-
if(!checked) return;
226+
if (!checked)
227+
return;
221228
qDebug() << "btn_file_list_toggled" << endl;
222229
}
230+
231+
232+
233+
234+

src/OneMarkdown.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <QTimer>
1919
#include "common.h"
2020
#include <QPropertyAnimation>
21+
#include <QMessageBox>
2122
#pragma execution_character_set("utf-8")
2223
QT_BEGIN_NAMESPACE
2324

@@ -63,12 +64,18 @@ private slots:
6364

6465
void on_btn_file_list_toggled(bool checked);
6566

67+
void on_action_new_window_triggered();
68+
69+
void on_action_open_recent_file_triggered();
70+
71+
void on_action_save_file_triggered();
72+
6673
private:
6774
int WORD_NUM = 0;
6875
int CHAR_NUM = 0;
6976
int LINE_NUM = 0;
7077
bool isSideClosed = false;
71-
QList<int> SidePos={10000,40000};
78+
QList<int> SidePos = {10000, 40000};
7279
int size = 0;
7380
int counter = 0;
7481
int start = 0;

src/OneMarkdown.ui

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ QToolButton:hover {
663663
<addaction name="action_open_file_quick"/>
664664
<addaction name="action_open_recent_file"/>
665665
<addaction name="separator"/>
666-
<addaction name="action_6"/>
666+
<addaction name="action_save_file"/>
667667
<addaction name="action_9"/>
668668
<addaction name="action_10"/>
669669
<addaction name="separator"/>
@@ -1008,7 +1008,7 @@ QToolButton:hover {
10081008
<string>打开最近文件</string>
10091009
</property>
10101010
</action>
1011-
<action name="action_6">
1011+
<action name="action_save_file">
10121012
<property name="text">
10131013
<string>保存</string>
10141014
</property>

src/main.cpp

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,27 @@ int main(int argc, char *argv[])
1010
QApplication a(argc, argv);
1111
a.setFont(QFont("Microsoft Yahei", 9));
1212
{
13-
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
14-
#if _MSC_VER
15-
QTextCodec *codec = QTextCodec::codecForName("GBK");
16-
#else
17-
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
18-
#endif
19-
QTextCodec::setCodecForLocale(codec);
20-
QTextCodec::setCodecForCStrings(codec);
21-
QTextCodec::setCodecForTr(codec);
22-
#else
23-
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
24-
QTextCodec::setCodecForLocale(codec);
25-
#endif
13+
#if (QT_VERSION <= QT_VERSION_CHECK(5, 0, 0))
14+
#if _MSC_VER
15+
QTextCodec *codec = QTextCodec::codecForName("GBK");
16+
#else
17+
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
18+
#endif
19+
QTextCodec::setCodecForLocale(codec);
20+
QTextCodec::setCodecForCStrings(codec);
21+
QTextCodec::setCodecForTr(codec);
22+
#else
23+
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
24+
QTextCodec::setCodecForLocale(codec);
25+
#endif
2626
}
2727
QTranslator translator;
2828
const QStringList uiLanguages = QLocale::system().uiLanguages();
29-
for (const QString &locale : uiLanguages) {
29+
for (const QString &locale : uiLanguages)
30+
{
3031
const QString baseName = "OneMarkdown_" + QLocale(locale).name();
31-
if (translator.load(":/i18n/" + baseName)) {
32+
if (translator.load(":/i18n/" + baseName))
33+
{
3234
a.installTranslator(&translator);
3335
break;
3436
}

src/menu.cpp

Lines changed: 67 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
2-
#include "OneMarkdown.h"
1+
#include "OneMarkdown.h"
32
#include "./ui_OneMarkdown.h"
4-
3+
#include "global.h"
4+
bool IS_FILE_SAVED = false;
55
void OneMarkdown::on_action_new_file_triggered()
66
{
7-
87
}
98

10-
119
void OneMarkdown::on_action_open_file_triggered()
1210
{
13-
//选择文件对话框/
14-
disconnect(ui->textEdit,&QTextEdit::textChanged,this,&OneMarkdown::textEdit_textChanged);
15-
QFileDialog* f = new QFileDialog(this);
11+
// 选择文件对话框/
12+
disconnect(ui->textEdit, &QTextEdit::textChanged, this, &OneMarkdown::textEdit_textChanged);
13+
QFileDialog *f = new QFileDialog(this);
1614
f->setWindowTitle("选择数据文件*.md");
1715
f->setNameFilter("*.md");
1816
f->setViewMode(QFileDialog::Detail);
1917

2018
QString filePath;
21-
if(f->exec() == QDialog::Accepted)
19+
if (f->exec() == QDialog::Accepted)
2220
filePath = f->selectedFiles()[0];
2321

2422
// ui->lineEdit->setText(filePath);
@@ -30,22 +28,75 @@ void OneMarkdown::on_action_open_file_triggered()
3028
// ui->textEdit->append(QString("创建时间:%1").arg(info.created().toString("yyyy-MM-dd hh:mm:ss")));
3129
// ui->textEdit->append(QString("修改时间:%1").arg(info.lastModified().toString("yyyy-MM-dd hh:mm:ss")));
3230

33-
///文件内容//
34-
//首先设置要使用的编码格式
35-
QTextCodec * qc = QTextCodec::codecForName("utf-8");
31+
/// 文件内容//
32+
// 首先设置要使用的编码格式
33+
QTextCodec *qc = QTextCodec::codecForName("utf-8");
3634
QFile file(filePath);
37-
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
35+
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
3836
{
3937
ui->textEdit->append("文件打开失败");
4038
return;
4139
}
4240
ui->textEdit->clear();
4341
QTextStream readStream(&file);
4442

45-
while(!readStream.atEnd())
43+
while (!readStream.atEnd())
4644
{
4745
ui->textEdit->append(readStream.readLine());
4846
}
49-
connect(ui->textEdit,&QTextEdit::textChanged,this,&OneMarkdown::textEdit_textChanged);
47+
connect(ui->textEdit, &QTextEdit::textChanged, this, &OneMarkdown::textEdit_textChanged);
5048
textEdit_textChanged();
51-
}
49+
}
50+
void OneMarkdown::on_action_save_file_triggered()
51+
{
52+
if (!IS_FILE_SAVED) // r如果标记为1,证明有文件加载,不然没有不需要保存
53+
{
54+
QString dirPath; // 创建文件夹路径
55+
QString filePath; // 存储保存路径
56+
QString saveName = "保存实验图"; // 保存图片名字
57+
QDateTime time = QDateTime::currentDateTime(); // 获取系统现在的时间
58+
QString str = time.toString("yyyyMMdd_hhmmss"); // 设置显示格式
59+
// filePath = QFileDialog::getExistingDirectory(this, ""); // 获取文件夹路径
60+
filePath = QFileDialog::getSaveFileName(this, "保存");
61+
if (filePath.isEmpty())
62+
{
63+
QMessageBox::information(this, "信息", "保存失败");
64+
}
65+
else
66+
{
67+
// 内容保存到路径文件
68+
QFile file(filePath);
69+
70+
// 以文本方式打开
71+
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
72+
{
73+
QTextStream out(&file); // IO设备对象的地址对其进行初始化
74+
75+
out << ui->textEdit->toPlainText() << endl; // 输出
76+
77+
QMessageBox::information(this, "文件保存成功", QString("文件保存在%2").arg(filePath));
78+
79+
file.close();
80+
IS_FILE_SAVED = true;
81+
}
82+
else
83+
{
84+
QMessageBox::warning(this, tr("Error"), tr("File to open file!"));
85+
}
86+
// QDir *temp = new QDir; // 声明文件对象
87+
// QMessageBox::information(this, "文件保存成功", QString("文件保存在%2").arg(filePath));
88+
}
89+
}
90+
else
91+
{
92+
QMessageBox::information(this, "错误", "保存失败");
93+
}
94+
}
95+
96+
void OneMarkdown::on_action_new_window_triggered()
97+
{
98+
}
99+
100+
void OneMarkdown::on_action_open_recent_file_triggered()
101+
{
102+
}

0 commit comments

Comments
 (0)