|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 王逗比666 于 2020-8-27 19:30 编辑
先前声明:本文无任何干货,如有错别字请见谅
学习连带制作耗时三天(有相当一部分时间是在和别人吹水),做出来的也只是一个雏形(还有一堆Bug),主要是在闲聊的时候那位老哥说了一句:
然后我就跑路了,不然就这么一个东西今天都不一定能做出来
里面目前能体验到最大的一个问题就是打开文件的时候那个打开窗口会弹出两次,第二次才能真正打开文件,由于技术原因。。。。算了以后如果能做到我尽量改(这个问题使得如果你将其作为txt文件的打开方式你都无法成功打开,虽然应该没有人会这么做)
然后这东西就长这样(???为什么我这边看这个图片这么小)
不仅取了个大言不惭臭不要脸的名字而且长得还很丑。。。功能很简单,到时候如果有人原意试的话可以试试(右边那个工具栏是居中这种简单的设置),至于为什么要用英文,不是我要炫耀自己英文好而是这个神奇的qt先是一有中文就报错然后又是识别不正确中文(不过中文文本我试了下,应该可以正常写如读取的,应该。。。吧),看上面的工具栏也能知道这个编辑器支持换字体和颜色(至于效果大家可以试试),后续打算加一下下划线之类的功能。然后我将它打包后发现这么小一个东西加了那些必备的文件之后就有40M
(???为什么这两张图我这边看还是这么小)
那么就不说废话了,我用的环境是qt5.15.0 MVSC 2019 32-bit(如果写错了大家会下意哈),接下来是源码://main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.setWindowTitle("Edit-db");
w.show();
//更改字体大小
QFont font = w.font();
font.setPointSize(10);
w.setFont(font);
//更换字体
font.setFamily("Consolas");
return a.exec();
}
//mainwindow.cpp
#include "mainwindow.h"
#include <QTextEdit>
#include <QMenuBar>
#include <QToolBar>
#include <QFontDialog>
#include <QColorDialog>
#include <QDialog>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <QTextBlock>
#include <QFile>
#include <QIODevice>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar* bar = menuBar();
setMenuBar(bar);
//菜单栏选项
QMenu* fileMenu = bar->addMenu("File");
QMenu* editMenu = bar->addMenu("Edit");
QMenu* versionMenu = bar->addMenu("Version");
//子选项
QAction* Open = fileMenu->addAction("Open");
QAction* Save = fileMenu->addAction("Save");
QAction* SaveAs = fileMenu->addAction("Save as");
QAction* Exit = fileMenu->addAction("Exit");
QAction* color = editMenu->addAction("color");
QAction* font = editMenu->addAction("font");
QAction* version = versionMenu->addAction("version");
//工具烂
QToolBar* toolBar = new QToolBar(this);
QToolBar* toolBar2 = new QToolBar(this);
addToolBar(Qt::RightToolBarArea, toolBar2);
addToolBar(toolBar);
//用于更改颜色和字体
toolBar->addAction(color);
toolBar->addAction(font);
//toolBar2改变缩进
QAction* AlignLeft = toolBar2->addAction("AlignLeft");
QAction* AlignRight = toolBar2->addAction("AlignRight");
QAction* AlignCenter = toolBar2->addAction("AlignCenter");
QAction* AlignJustify = toolBar2->addAction("AlignJustify");
QAction* AlignTop = toolBar2->addAction("AlignTop");
QAction* AlignBottom = toolBar2->addAction("AlignBottom");
QAction* AlignVCenter = toolBar2->addAction("AlignVCenter");
setFixedSize(772, 642);
QTextEdit* edit = new QTextEdit(this);
setCentralWidget(edit);
edit->resize(642, 542);
connect(color, &QAction::triggered, [=] () {
edit->setTextColor(QColorDialog::getColor(QColor(0, 0, 0)));
});
connect(font, &QAction::triggered, [=] () {
bool flag;
edit->setFont(QFontDialog::getFont(&flag,QFont("Consolas", 12)));
});
connect(Open, &QAction::triggered, [=] () {
QFileDialog::getOpenFileName(this, " ", "C:\", "(*.txt)");
});
connect(AlignLeft, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignLeft);
});
connect(AlignCenter, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignCenter);
});
connect(AlignRight, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignRight);
});
connect(AlignJustify, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignJustify);
});
connect(AlignTop, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignTop);
});
connect(AlignBottom, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignBottom);
});
connect(AlignVCenter, &QAction::triggered, [=] () {
edit->setAlignment(Qt::AlignVCenter);
});
connect(version, &QAction::triggered, [=] () {
//都没开发好哪里来的版本号
;
});
connect(Open, &QAction::triggered, [=] () {
QString path = QFileDialog::getOpenFileName(this, "Open", "C:\", "(*.txt)");
QFile file(path);
//QFile(aFileName);
//QString lineStr;
//lineStr = QFile::readAll(path);
//edit->setPlainText(QString(file.readAll()));
//QTextStream aStream(&file); //用文本流读取文件
//edit->setPlainText(aStream.readAll());
//file.close();//关闭文件
if(!(edit->document()->isEmpty()))
{
if(QMessageBox::Save == QMessageBox::question(this, " ", "Save?", QMessageBox::Save | QMessageBox::Cancel))
{
QString fileName=QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());
if(fileName.isEmpty())
{
return;
}
QFile *file=new QFile;
file->setFileName(fileName);
bool ok=file->open(QIODevice::WriteOnly);
if(ok)
{
QTextStream out(file);
out<<edit->toPlainText();
file->close();
delete file;
}
else
{
QMessageBox::information(this,"Error Messaage","File Save Error"+file->errorString());
return;
}
edit->clear();
}
else
{
edit->clear();
}
if(file.open(QIODevice::ReadOnly))
{
QTextStream read(&file);
while(!read.atEnd() )
{
edit->append(read.readLine());
}
}
file.close();
}
else
{
if(file.open(QIODevice::ReadOnly))
{
QTextStream read(&file);
while(!read.atEnd() )
{
edit->append(read.readLine());
}
}
file.close();
}
});
connect(Save, &QAction::triggered, [=] () {
QString fileName=QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());
if(fileName.isEmpty())
{
return;
}
QFile *file=new QFile;
file->setFileName(fileName);
bool ok=file->open(QIODevice::WriteOnly);
if(ok)
{
QTextStream out(file);
out<<edit->toPlainText();
file->close();
delete file;
}
else
{
QMessageBox::information(this,"Error Messaage","File Save Error"+file->errorString());
return;
}
});
connect(SaveAs, &QAction::triggered, [=] () {
QString fileName=QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath());
if(fileName.isEmpty())
{
return;
}
QFile *file=new QFile;
file->setFileName(fileName);
bool ok=file->open(QIODevice::WriteOnly);
if(ok)
{
QTextStream out(file);
out<<edit->toPlainText();
file->close();
delete file;
}
else
{
QMessageBox::information(this,"Error Messaage","File Save Error"+file->errorString());
return;
}
});
connect(Exit, &QAction::triggered, [=] () {
if(!(edit->document()->isEmpty()))
{
edit->clear();
}
});
//键盘按钮关联:
Save->setShortcuts(QKeySequence::Save);
Open->setShortcuts(QKeySequence::Open);
}
MainWindow::~MainWindow()
{
}
值得一提的是昨晚有个傻子傻乎乎的以为用纯代码开发这东西容错率会高一点就把之前写好的代码推倒重来(当然有用的全部拿来复制粘贴了),所以说这东西和ui界面一点关系都没有,有qt环境的创建个工程复制粘贴就好了(可能吧),然后那些奇奇怪怪的注释是我在技术水平不足的情况下跑去百度查一些一知半解的函数或者复制粘贴别人的代码留下的(然后那个时候我看到我的浏览器下面的一篇文章是说好程序员和坏程序员的,人家说的程序员大部分时间在思考和实验,坏程序员大部分时间在盲目测试),最后不仅留下了废弃代码还留下了一堆bug(至于为什么没删就是为了之后改的时候如果能改掉那处的那个Bug找代码的时候醒目一点),别说了,我会努力的
emmm啰里啰唆扯了一堆实际上还是因为自己有些激动,毕竟这也算是自己做出来的第一个能“看”的东西了(为了这东西我这两天坐在电脑前敲代码的时间不小于十个小时(虽然我可能是个“坏”程序员,但是如果真有人这么说我也算是认可我是个程序员了)),最后感谢一下出镜的那个老哥,他是谁我就不指名道姓了,那么不说了,我跑路了
|
评分
-
查看全部评分
|