当前位置:   article > 正文

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

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

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

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

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

(11)字体颜色

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

void textColor(); //设置颜色
  1. void MainWindow::on_colorAction_triggered()
  2. {
  3. textColor();
  4. }
  5. void MainWindow::textColor()
  6. {
  7. if(activateChildWnd())
  8. {
  9. // 弹出颜色选择对话框,并以当前激活子窗口的文本颜色作为初始颜色
  10. QColor color = QColorDialog::getColor(activateChildWnd()->textColor(),this);
  11. // 检查用户是否选择了有效的颜色
  12. if(!color.isValid())
  13. return;
  14. QTextCharFormat fmt;
  15. // 设置文本字符格式的前景色(文本颜色)
  16. fmt.setForeground(color);
  17. activateChildWnd()->setFormatOnSelectedWord(fmt);
  18. // 创建一个16x16像素的像素图,并用所选颜色填充
  19. QPixmap pix(16,16);
  20. pix.fill(color);
  21. // 将填充了颜色的像素图设置为某个动作(按钮)的图标
  22. ui->colorAction->setIcon(pix);
  23. }
  24. }

(12)项目符号

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

void paraStyle(int nStyle); //设置项目符号
  1. void MainWindow::on_comboBox_activated(int index)
  2. {
  3. paraStyle(index);
  4. }
  5. void MainWindow::paraStyle(int nStyle)
  6. {
  7. if(activateChildWnd())
  8. activateChildWnd()->setParaSyle(nStyle);
  9. }
void setParaSyle(int pstyle); //设置项目符号
  1. void ChileWnd::setParaSyle(int pstyle)
  2. {
  3. // 获取当前文本光标
  4. QTextCursor tcursor = textCursor();
  5. // 声明一个 QTextListFormat::Style 变量,用于存储列表样式
  6. QTextListFormat::Style sname;
  7. // 如果 pstyle 不为 0,设置列表样式
  8. if(pstyle != 0)
  9. {
  10. // 根据 pstyle 的值设置不同的列表样式
  11. switch (pstyle) {
  12. case 1:
  13. sname = QTextListFormat::ListDisc; //黑心实心圆
  14. break;
  15. case 2:
  16. sname = QTextListFormat::ListCircle; //空心圆
  17. break;
  18. case 3:
  19. sname = QTextListFormat::ListSquare; //方形
  20. break;
  21. case 4:
  22. sname = QTextListFormat::ListDecimal; //十进制整数
  23. break;
  24. case 5:
  25. sname = QTextListFormat::ListLowerAlpha; //小写字母
  26. break;
  27. case 6:
  28. sname = QTextListFormat::ListUpperAlpha; //大写字母
  29. break;
  30. case 7:
  31. sname = QTextListFormat::ListLowerRoman; //小写罗马字母
  32. break;
  33. case 8:
  34. sname = QTextListFormat::ListUpperRoman; //大写罗马字母
  35. break;
  36. default:
  37. sname = QTextListFormat::ListDisc;
  38. }
  39. // 开始编辑块
  40. tcursor.beginEditBlock();
  41. // 获取当前段落格式
  42. QTextBlockFormat tBlockFmt = tcursor.blockFormat();
  43. // 声明一个 QTextListFormat 变量,用于存储列表格式
  44. QTextListFormat tListFmt;
  45. // 如果当前光标所在位置已经有列表
  46. if(tcursor.currentList())
  47. {
  48. // 获取当前列表的格式
  49. // 使用format方法需要添加头文件QtWidgets
  50. tListFmt = tcursor.currentList()->format();
  51. }
  52. else
  53. {
  54. // 如果没有列表,设置新的列表格式
  55. tListFmt.setIndent(tBlockFmt.indent()+1);
  56. tBlockFmt.setIndent(0);
  57. tcursor.setBlockFormat(tBlockFmt);
  58. }
  59. // 设置列表样式
  60. tListFmt.setStyle(sname);
  61. // 创建列表
  62. tcursor.createList(tListFmt);
  63. // 结束编辑块
  64. tcursor.endEditBlock();
  65. }
  66. else
  67. {
  68. // 如果 pstyle 为 0,清除列表格式
  69. QTextBlockFormat tbfmt;
  70. tbfmt.setObjectIndex(-1);
  71. tcursor.mergeBlockFormat(tbfmt);
  72. }
  73. }

(13)文档打印/预览

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

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

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

void docPrint();//文档打印
  1. void MainWindow::on_printAction_triggered()
  2. {
  3. docPrint();
  4. }
  5. void MainWindow::docPrint()
  6. {
  7. QPrinter pter(QPrinter::HighResolution);
  8. QPrintDialog *ddlg = new QPrintDialog(&pter,this);
  9. if(activateChildWnd())
  10. ddlg->setOption(QAbstractPrintDialog::PrintSelection,true);
  11. ddlg->setWindowTitle("打印文档");
  12. ChileWnd *chilewnd = activateChildWnd();
  13. if(ddlg->exec() == QDialog::Accepted)
  14. chilewnd->print(&pter);
  15. delete ddlg;
  16. }

文档打印

打印预览

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

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

  1. void docPrintPreview();//打印预览
  2. void printPreview(QPrinter* printer); //printPreview 槽函数
  1. void MainWindow::on_printPreviewAction_triggered()
  2. {
  3. docPrintPreview();
  4. }
  5. void MainWindow::docPrintPreview()
  6. {
  7. // 创建一个 QPrinter 对象
  8. QPrinter pter;
  9. // 创建一个 QPrintPreviewDialog 对象,并将 pter 作为参数传递,同时设置父窗口为 this
  10. QPrintPreviewDialog preview(&pter,this);
  11. // 连接预览对话框的 paintRequested 信号到 MainWindow 的 printPreview 槽函数
  12. connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter*)));
  13. // 显示打印预览对话框
  14. preview.exec();
  15. //每当预览对话框需要绘制预览时,都会触发 paintRequested 信号,从而调用 printPreview 槽函数
  16. }
  17. void MainWindow::printPreview(QPrinter *printer)
  18. {
  19. activateChildWnd()->print(printer);
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/919507
推荐阅读
相关标签
  

闽ICP备14008679号