Qt项目——文本编辑器(功能模块④)

news2024/11/23 8:43:52

项目地址:GitHub - Outlier9/CatEditor: Cat文本编辑器--Qt

有帮助的话各位点点 star 啦,感谢!

如果有需要学习该项目的人,觉得看文档较为困难,可以加我联系方式,给github点个star后可免费提供学习视频!!!

(11)字体颜色

文字设置颜色操作,在.ui界面对colorAction转到槽,选triggered信号,然后将功能封装为textcolor

void textColor(); //设置颜色
void MainWindow::on_colorAction_triggered()
{
    textColor();
}

void MainWindow::textColor()
{
    if(activateChildWnd())
    {
        // 弹出颜色选择对话框,并以当前激活子窗口的文本颜色作为初始颜色
        QColor color = QColorDialog::getColor(activateChildWnd()->textColor(),this);
        // 检查用户是否选择了有效的颜色
        if(!color.isValid())
            return;
        QTextCharFormat fmt;
        // 设置文本字符格式的前景色(文本颜色)
        fmt.setForeground(color);
        activateChildWnd()->setFormatOnSelectedWord(fmt);

        // 创建一个16x16像素的像素图,并用所选颜色填充
        QPixmap pix(16,16);
        pix.fill(color);
        // 将填充了颜色的像素图设置为某个动作(按钮)的图标
        ui->colorAction->setIcon(pix);
    }
}

(12)项目符号

给文字设置项目符号操作,在.ui界面对这些控件转到槽,选activated(int)信号

void paraStyle(int nStyle); //设置项目符号
void MainWindow::on_comboBox_activated(int index)
{
   paraStyle(index);
}

void MainWindow::paraStyle(int nStyle)
{
    if(activateChildWnd())
        activateChildWnd()->setParaSyle(nStyle);
}
void setParaSyle(int pstyle); //设置项目符号
void ChileWnd::setParaSyle(int pstyle)
{
    // 获取当前文本光标
    QTextCursor tcursor = textCursor();
    // 声明一个 QTextListFormat::Style 变量,用于存储列表样式
    QTextListFormat::Style sname;
    // 如果 pstyle 不为 0,设置列表样式
    if(pstyle != 0)
    {
        // 根据 pstyle 的值设置不同的列表样式
        switch (pstyle) {
        case 1:
            sname = QTextListFormat::ListDisc; //黑心实心圆
            break;
        case 2:
            sname = QTextListFormat::ListCircle; //空心圆
            break;
        case 3:
            sname = QTextListFormat::ListSquare; //方形
            break;
        case 4:
            sname = QTextListFormat::ListDecimal; //十进制整数
            break;
        case 5:
            sname = QTextListFormat::ListLowerAlpha; //小写字母
            break;
        case 6:
            sname = QTextListFormat::ListUpperAlpha; //大写字母
            break;
        case 7:
            sname = QTextListFormat::ListLowerRoman; //小写罗马字母
            break;
        case 8:
            sname = QTextListFormat::ListUpperRoman; //大写罗马字母
            break;
        default:
            sname = QTextListFormat::ListDisc;
        }

        // 开始编辑块
        tcursor.beginEditBlock();
        // 获取当前段落格式
        QTextBlockFormat tBlockFmt = tcursor.blockFormat();
        // 声明一个 QTextListFormat 变量,用于存储列表格式
        QTextListFormat tListFmt;
        // 如果当前光标所在位置已经有列表
        if(tcursor.currentList())
        {
            // 获取当前列表的格式
            // 使用format方法需要添加头文件QtWidgets
            tListFmt = tcursor.currentList()->format();
        }
        else
        {
            // 如果没有列表,设置新的列表格式
            tListFmt.setIndent(tBlockFmt.indent()+1);
            tBlockFmt.setIndent(0);
            tcursor.setBlockFormat(tBlockFmt);
        }

        // 设置列表样式
        tListFmt.setStyle(sname);
        // 创建列表
        tcursor.createList(tListFmt);
        // 结束编辑块
        tcursor.endEditBlock();
    }
    else
    {
        // 如果 pstyle 为 0,清除列表格式
        QTextBlockFormat tbfmt;
        tbfmt.setObjectIndex(-1);
        tcursor.mergeBlockFormat(tbfmt);
    }
}

(13)文档打印/预览

该功能需要在项目文件里添加模块printsupport

然后将文档打印功能封装,实现该函数时需要添加头文件<QtPrintSupport/QPrinter><QtPrintSupport/QPrintDialog>

文档打印操作,在.ui界面对printAction转到槽,选triggered信号,然后将功能封装为docPrint

void docPrint();//文档打印
void MainWindow::on_printAction_triggered()
{
    docPrint();
}

void MainWindow::docPrint()
{
    QPrinter pter(QPrinter::HighResolution);
    QPrintDialog *ddlg = new QPrintDialog(&pter,this);
    if(activateChildWnd())
        ddlg->setOption(QAbstractPrintDialog::PrintSelection,true);
    ddlg->setWindowTitle("打印文档");

    ChileWnd *chilewnd = activateChildWnd();
    if(ddlg->exec() == QDialog::Accepted)
        chilewnd->print(&pter);
    delete ddlg;
}

文档打印

打印预览

文档打印操作,在.ui界面对printPreviewAction转到槽,选triggered信号,然后将功能封装为docPrintPreview

将打印预览功能封装,实现该函数时需要添加头文件<QtPrintSupport/QPrintPreviewDialog>

void docPrintPreview();//打印预览
void printPreview(QPrinter* printer); //printPreview 槽函数
void MainWindow::on_printPreviewAction_triggered()
{
    docPrintPreview();
}

void MainWindow::docPrintPreview()
{
    // 创建一个 QPrinter 对象
    QPrinter pter;
    // 创建一个 QPrintPreviewDialog 对象,并将 pter 作为参数传递,同时设置父窗口为 this
    QPrintPreviewDialog preview(&pter,this);
    // 连接预览对话框的 paintRequested 信号到 MainWindow 的 printPreview 槽函数
    connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*)));
    // 显示打印预览对话框
    preview.exec();

    //每当预览对话框需要绘制预览时,都会触发 paintRequested 信号,从而调用 printPreview 槽函数
}


void MainWindow::printPreview(QPrinter *printer)
{
    activateChildWnd()->print(printer);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

颠覆虚拟试衣行业标准!阿里发布OutfitAnyone:任意服装+任意人!

文章链接&#xff1a;https://arxiv.org/pdf/2407.16224 git链接:https://humanaigc.github.io/outfit-anyone/ huggingface: https://huggingface.co/spaces/HumanAIGC/OutfitAnyone 亮点直击 顶尖逼真度&#xff1a;OutfitAnyone 方法为虚拟试穿设立了新的行业标准&#xff0…

【Redis 进阶】持久化(RDB AOF)

Redis&#xff08;数据存储在内存中&#xff09;支持 RDB 和 AOF 两种持久化&#xff08;和 MySQL 里的持久性是一回事&#xff0c;把数据存储在硬盘上&#xff0c;重启进程 / 主机后数据仍然存在 —— 持久&#xff1b;把数据存储在内存上&#xff0c;重启进程 / 主机后数据消…

夏日清凉体验:气膜体育馆的运动之乐—轻空间

夏季的酷热常常让人们望而却步&#xff0c;尤其是对于热爱运动的人来说&#xff0c;寻找一个凉爽舒适的运动场所显得尤为重要。气膜体育馆因其独特的建筑特点和环境控制系统&#xff0c;成为了炎炎夏日里篮球、羽毛球等运动项目的理想场地。轻空间将探讨在气膜体育馆内运动的独…

活动报道 | 盘古信息携IMS OS+小快轻准产品集亮相东莞市中小数转试点供需对接会

8月1日&#xff0c;由东莞市工业和信息化局主办&#xff0c;南城街道经济发展局承办&#xff0c;东莞市软件行业协会协办的东莞市中小企业数字化转型城市试点供需对接会&#xff08;城区和水乡新城片区&#xff09;隆重召开。市工业和信息化局副局长江小敏、市工业和信息化局信…

揭秘 CPU 是如何执行计算机指令的

1 CPU 内部逻辑结构 之前的文章《揭秘代码是如何变成机器码的》&#xff0c;其中说到&#xff0c;如果从软件的角度来讲&#xff0c;CPU 就是一个执行各种计算机指令&#xff08;Instruction Code&#xff09;的逻辑机器。 那么这个逻辑机器内部是什么样的&#xff1f;又是如…

寥寥数笔,动画自成!阿里Tora: 首个轨迹引导的DiT创新实现精确运动控制视频生成

论文链接&#xff1a;https://arxiv.org/pdf/2407.21705 项目链接&#xff1a;https://ali-videoai.github.io/tora_video/ 亮点直击 本文引入了Tora&#xff0c;这是第一个轨迹导向的DiT用于视频生成。如下图2所示&#xff0c;Tora无缝整合了广泛的视觉和轨迹指令&#xff0c;…

数据挖掘实战-基于Prophet时间序列模型预测阿里巴巴股票价格趋势(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【系统架构设计师】二十三、通信系统架构设计理论与实践①

目录 一、通信系统网络架构 1.1 局域网网络架构 1.1.1 单核心架构 1.1.2 双核心架构 1.1.3 环型架构 1.1.4 层次型架构 1.2 广域网网络架构 1.2.1 单核心广域网 1.2.2 双核心广域网 1.2.3 环型广域网 1.2.4 半冗余广域网 1.2.5 对等子域广域网 1.2.6 层次子域架构…

文献阅读:基于拓扑结构模型构建ICI收益诊断模型

介绍 Custom scoring based on ecological topology of gut microbiota associated with cancer immunotherapy outcome是来自法国Gustave Roussy Cancer Campus的Laurence Zitvogel实验室最近发表在cell的关于使用肠道微生物拓扑结构预测免疫治疗疗效的文章。 该研究提供基于…

html+css 实现左平移背景按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 文…

【Android Studio】gradle文件、配置、版本下载、国内源(gradle版本以及gradle-plugin版本)

文章目录 AS查看gradle-plugin版本及gradle版本&#xff08;图形&#xff09;查看gradle-plugin版本及gradle版本&#xff08;配置文件&#xff09;配置文件分析解决gradle下载失败、版本错乱等问题。 AS查看gradle-plugin版本及gradle版本&#xff08;图形&#xff09; 查看gr…

金航标萨科微总经理宋仕强介绍金航标热售产品

金航标萨科微slkor总经理宋仕强介绍说&#xff0c;金航标kinghelm热售产品型号有&#xff0c;金航标胶壳(线对板/线对线)连接器KH-VH-2P-ZK、KH-VH-5P-ZK、KH-VH-4P-ZK、KH-A2557-2X07Y&#xff0c;金航标kinghelm&#xff08;www.kinghelm.com.cn&#xff09;的弹簧片/弹片有K…

“田野八式”与人类学的田野研究方法

作 者&#xff1a;赵旭东 来 源&#xff1a;《民族学刊》 &#xff3b;摘要&#xff3d; 笔者根据自己多年来的田野工作经验&#xff0c;将人类学田野研究方法总结为: 心存异趣、扎实描记、留心古旧、知微知彰、知柔知刚、神游冥想、克己宽容以及文字天下八个方面&#xff0c…

3百题英语四级听力考试练习题ACCESS\EXCEL数据库

其实一直都想搞一搞英语听力题相关的数据&#xff0c;但是一直都没有遇到过或者遇到过但是没办法弄下来&#xff0c;今天有幸遇到一个英语四级听力考试练习题&#xff0c;听力MP3文件包含96个&#xff0c;题目包含300题&#xff0c;具体请查看截图&#xff0c;截图包含了所有字…

笔记小结:《利用Python进行数据分析》之读取数据

目录 读取文本格式的数据 基本操作 指定分隔符 指定标题行 层次化索引 使用正则表达式分隔 跳过某些行 缺失值处理 逐块读取文本文件 设置显示的最大行数 只读取几行 逐块读取文件 将数据写出到文本格式 基本操作 使用其它分隔符 使用其它标记符标记空白字符串 禁…

IoTDB 入门教程 企业篇①——IoTDB企业版(TimechoDB)快速上手

文章目录 一、前文二、试用三、解压四、激活五、启动六、连接七、停止八、IoTDB-Workbench 一、前文 IoTDB入门教程——导读 二、试用 通过天谋科技官网&#xff0c;联系天谋科技的商务。请求免费试用TimechoDB企业版&#xff0c;获得试用软件包 三、解压 iotdb-enterprise…

舞蹈症宝贝的专属锻炼秘籍来啦~✨

嘿宝贝们&#xff01;&#x1f44b; 是不是有时候觉得身体里的“小舞蹈家”总想出来蹦跶两下&#xff0c;但又怕锻炼不当反而“跳”出问题&#xff1f;别怕&#xff0c;今天就给你种草一套超萌又超有效的舞蹈症患者锻炼大法&#xff01;&#x1f389; &#x1f31f;【热身小妖精…

《Milvus Cloud向量数据库指南》——音频数据如何选择合适的 Embedding 模型?

音频数据:PANNs与音频搜索的深度探索 在数字化时代,音频数据作为信息传递的重要载体,其处理与分析技术日益受到关注。与图像搜索领域的“以图搜图”相类似,音频搜索技术也逐步成熟,允许用户基于输入的音频片段快速定位到相似或相关的音频内容。这一技术的实现,离不开强大…

苹果已明确允许 iPhone 和 iPad 上使用 PC 模拟器

苹果公司更新了其应用程序审核指南&#xff0c;允许 PC 模拟器提供 游戏下载&#xff0c;此举可能会改善应用程序商店中模拟器的状况。自苹果公司修订《应用程序审核指南》&#xff0c;允许模拟器进入 App Store 以来已经过去了三个月。虽然已经有很多模拟器被引入商店&#xf…

Python接口自动化测试数据提取分析:Jmespath

1、引言 在处理JSON数据时&#xff0c;我们常常需要提取、筛选或者变换数据。手动编写这些操作的代码不仅繁琐&#xff0c;而且容易出错。Python作为一个功能强大的编程语言&#xff0c;拥有丰富的库和工具来处理这些数据。今天&#xff0c;将介绍一个实用的Python库——JMESP…