首页 > 其他分享 >Qt项目——文本编辑器(功能模块④)

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

时间:2024-08-02 10:25:44浏览次数:21  
标签:文本编辑 sname Qt void tcursor MainWindow 功能模块 列表 QTextListFormat

项目地址: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);
}

标签:文本编辑,sname,Qt,void,tcursor,MainWindow,功能模块,列表,QTextListFormat
From: https://blog.csdn.net/m0_63596031/article/details/140810344

相关文章

  • VSC环境配置(QT)
    VisualStudioCode1.QT安装系统:win10安装准备:官网下载qt-online-installer-windows-x64.exe在线安装程序QT账户申请个人免费版选择版本:勾选Archive并筛选选择对应组件若是自己下载MinGW,需要使用posix版本,实测5.3、7.3和8.1posix版本均可使用,为了保持一致性......
  • Log4cplus导入QT5(VSCode)
    下载GitHub地址:https://github.com/log4cplus/log4cplus版本选择log4cplus-2.0.2编译环境搭建完成后即可CMake编译生成预编译库,可参考该项目README.md进行功能选择导入在实际工程CMakeLists.txt中导入头文件(库include目录),并链接预编译好的.dll文件到项目中运行及调试la......
  • 【Qt】QTextEdit
    QTextEdit是Qt中用于编辑和显示文本内容的类。其提供了丰富的用户界面控件,可以用于创建和包含格式化文本、图片和链接的文本编辑器常用属性 属性说明markdown输入框内持有的内容。支持markdown格式,能自动的对markdown文本进行渲染成htmlhtml输入框持有的内容。可以支持大......
  • MQTT协议与中间件
    发布订阅模式:消费者(客户端)订阅服务器(作为代理Broker)上的主题,当有生产者(客户端)在主题中发布消息时,消费者可以收到。MQTT:基于发布订阅模式的轻量级通讯协议,可以以极少的代码和有限带宽,为连接远程设备提供实时可靠的消息服务。广泛应用于物联网,小型设备。MQTT传输的消息分为两......
  • Qt QTtoolButton 鼠标移动到按钮上时,弹出菜单后,按钮的hover状态无法恢复的问题
    需求:QTtoolButton 鼠标移到按钮上时,弹窗菜单,并且点击菜单或者其他地方,菜单关闭后,按钮的hover状态需要恢复原状。1.创建按钮和菜单,并安装事件过滤器m_Menu=newQMenu();m_Menu->addAction(ui->action22);m_Menu->installEventFilter(this);m_ToolButton=newQToolButto......
  • x-cmd pkg | nvim - 命令行文本编辑器,Vim 的一个现代化分支
    目录简介快速入门功能特点Neovim插件推荐相关竞品进一步阅读简介Neovim(简称nvim)是用C语言开发的文本编辑器,是Vim的一个现代化分支,更专注于提升可扩展性和提供更现代的用户体验。它是基于Vim源代码的一个衍生版本,不是一个从头开始重写Vim或将其转换为IDE......
  • QT之ui控件随窗口布局的大小而自适应大小
    QT之ui窗口自适应布局新建个工程说明,注意此处勾上Generateform根据开发电脑的系统选择套件点开widget.ui,如图鼠标随意托几个常用控件展示,如图三个控件,如图,水平布局sizePolicy策略:图中,控件的sizePolicy策略将决定上面这三个控件组在自适应成的控件组的分配策略。Fi......
  • 在 pyqt6 QTextEdit 中显示数据库查询
    我想实现以下非常小的项目,即用户应该输入产品名称,Python应该在数据库中搜索并在pyqt6桌面应用程序中显示查询结果,为此我已经实现了以下基本GUI形式:这里用户输入产品,然后单击按钮,结果将显示在空白处,即:QTextEdit(),最有趣的部分是这个功能:defreturn_product_......
  • qtui更改后报错:-1: error: [Makefile.Debug:7745: ui_widget.h] Error 1,如何解决?
    qtui更改后报错:-1:error:[Makefile.Debug:7745:ui_widget.h]Error1,如何解决?在使用Qt开发时,遇到-1:error:[Makefile.Debug:7745:ui_widget.h]Error1这样的错误通常是因为ui_widget.h文件未能正确生成。这个文件是由Qt的uic(用户界面编译器)工具生成的......
  • QT开发积累——qt中的double和float精度问题
    目录引出qt中的double和float精度问题qt中的三元表达式char和qchar的区别总结日积月累,开发集锦方法参数加const和不加const的区别方法加static和不加static的区别Qt遍历list提高效率显示函数的调用使用`&`与不使用`&`qt方法的参数中使用`&`与不使用`&`除法的一个坑......