鱼C论坛

 找回密码
 立即注册
查看: 1740|回复: 0

[学习笔记] 零基础文本编辑器开发#2

[复制链接]
发表于 2020-8-28 00:35:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 王逗比666 于 2020-8-28 00:36 编辑

事先声明:本文无任何干货,如有错别字请见谅!

说到底这个文本编辑器除去一堆Bug不不说说到底能拿的出手的就是搞了个工具栏然后搞了点缩进,其实最开始我是没有这个想法的,直到我昨天在漫无目的的百度的时候找到了这个:https://blog.csdn.net/xiao123456bin/article/details/89474039?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param看到之后的那个感觉简直是一朝得道,所以二话不说立马收藏纳为己用,实际上在最开始开发的时候我还在用ui界面做,当时的思路是创建一个浮动窗口然后在上面放几个按钮专门用来搞缩进(把浮动窗口横过来,加几个图标,有word内味了),可惜当时我用不明白信号和槽,并且一个ui->TextEdit让我有点心有余而力不足(不得不说经过一天的学习差别好大),转为纯代码开发后为了减少代码量(实际上代码量都是我后面复制粘贴来的)改为用工具栏(所以才会这么丑),做完之后我开始思考这个即使有朝一日能彻底开发完成但是包括我在内没有人会去真正使用的文本编辑器存在的意义:像是notepad++,editplus这种加了插件都能做html、java编辑器的编辑器我肯定是没有能力也没有精力去做的,所以我对比的目标实际上只是windows自带的notepad而已,那么这么说下来我需要的功能只有打开新建保存另存为字体什么的了,然而现实确实我把新建给删掉了,然后多了个缩进的工具栏,这是因为我觉得即使要做一个简洁的编辑器,多个缩进的功能并不会太过影响其精简性,现在我暂且不需要新建这个功能,因为当你打开一个编辑器进程的时候就相当于在新建了,而且这个功能如果以后要做,其实和保存这个功能技术性差别不大,那么按照这个思路,我觉得我可以增加一些实用的编辑功能,做到介于notepad和写字板之间(这个人在想peach),然后我就又在百度上发现了这个(百度上瘾):https://blog.csdn.net/Carry_Qt/article/details/88866530

按照上面的内容,我打算暂且做一下上划线下划线和删除线,放在第一个工具栏(toolBar)上,不过和前两个不同的是我不打算把这个放在菜单栏的选项上,那么先不扯皮了,开始写代码:
//先将工具栏的选项设置好,便于阅读性放在color和font选项的定义的后边

    //设置下划线、上划线、删除线
    QAction* Overline = toolBar->addAction("Overline");
    QAction* Underline = toolBar->addAction("Underline");
    QAction* StrikeOut = toolBar->addAction("StrikeOut");
之后试一下效果:
download.png
尚可,个人认为既然都是有关文字的设置就不加分割线了(懒就直说)
那么接下来就算痛苦并快乐的信号和槽的知识了,然后添加上那篇帖子的内容,结果就是这个了(只写了一个):
connect(Overline, &QAction::triggered, [=] () {
        bool flag;
        QFont font;
        font.setOverline(flag);
    });
值得一提的是属性setOverline()的参数是一个布尔值,可惜的是我在测试的时候无论怎么点击都没有反应,最后在字体设置里面才看出来原来这些字体没有设置上划线的选项,那么没办法,我们试一下下划线:
connect(Underline, &QAction::triggered, [=] () {
        bool flag;
        QFont font;
        font.setUnderline(flag);
    });
可惜的是在照葫芦画瓢之后仍然没有反应,无奈之下只好百度,然后我就百度到了:http://cn.voidcc.com/question/p-tfevvohe-st.html
那我们讲将代码改为:
connect(Underline, &QAction::triggered, [=] () {
        bool flag;
        edit->setFontUnderline(flag);
    });

                               
登录/注册后可看大图

果然有了效果,看来这种基本的东西还是需要了解(此时我想起了某人的一句话):
O2447_491HIWC9_WH_2E572.png
啊这
那事到如今就不得不把另外两个之前想好的选项给删除了(毕竟百度不到方法了),那么最后加的代码就是:
//设置下划线、上划线、删除线
    QAction* Underline = toolBar->addAction("Underline");
(setFontUnderline()的参数也是一个布尔类型)

那这次小改动也不算是无功而返了(从此可以看到我这是帖子和代码同步写的),这次“更新”让我想到了一样似乎被忘掉的东西:
connect(version, &QAction::triggered, [=] () {
        //都没开发好哪里来的版本号
        ;
    });
emmmmm,我觉的我可以操作一下......
等下
??????

                               
登录/注册后可看大图
connect(version, &QAction::triggered, [=] () {
        //难有版本号
        ;
    });
跑路,告辞!
(本来是十点钟开始写的,结果谢谢代码谢谢帖子查查资料就到十二点半了,那文中的“昨天”就拜托大家会下意哈)

@4A7CF6KNVPDQGS)[%WV288.png
J)}RIO)_}TL@QWDW)E{J3ZA.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-14 19:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表