当前位置:   article > 正文

富文本编辑器(添加表格)_富文本 表格

富文本 表格

使用QTextCursor添加表格列表和图片。

QTextTableFromat (表格格式)

构造函数:

 常用的函数:

setAlignment()设置对齐方式
setCellSpacing()设置单元格之间的间距
setCellPadding(0设置单元格填充
setBackground()设置背景颜色
setBorderCollapse()设置边框折叠
setColumns()设置列数

setColumnWidthConstraint()

设置列宽约束
isValid()列表格式是否合规

添加表格使用:cursor.insertTable(x,y,tebleFormat) 

  • x 为行数
  • y 为列数
  • tableFromat 为表的格式

例子:在textEdit中添加一个表格

  1. //添加一个表格
  2. QTextCursor cursor=document->rootFrame()->lastCursorPosition();//获取最后的位置
  3. QTextTableFormat table;
  4. table.setAlignment(Qt::AlignLeft);//左边
  5. table.setCellPadding(10);//设置填充
  6. table.setCellSpacing(1);//设置间隔
  7. //用一个textTable 接收插入的表格
  8. QTextTable *texttable=cursor.insertTable(5,5,table);//插入一个表格

 设置列宽约束:

 设置列宽约束:需要使用容器来存放每列的约束

  1. //添加一个表格
  2. QTextCursor cursor=document->rootFrame()->lastCursorPosition();//获取最后的位置
  3. QTextTableFormat table;
  4. table.setAlignment(Qt::AlignLeft);//左边
  5. table.setCellPadding(10);//设置填充
  6. table.setCellSpacing(1);//设置间隔
  7. QVector<QTextLength> length;//创建一个容器存放列限制
  8. for(int i=0;i<5;i++)
  9. {
  10. length.append(QTextLength(QTextLength::FixedLength,50));
  11. }
  12. table.setColumnWidthConstraints(length);//设置列限制
  13. QTextTable *texttable=cursor.insertTable(5,5,table);//插入一个表格

 QTextTable(文本表格)

常用的函数:

setFromat()

设置表格格式
rows()行数

rowStart(),rowEnd()

开始的游标,结束的游标
resize()调整表的结构
removeRows(),removeColumns()删除行数,列数
mergeCells()合并单元表格
insertRows(),insertColumns()插入行数和列数

appendRows(),appendColumns()

追加行、列
splitCell()拆分单元格
cellAt()返回指定位置的单元格

合并表格:

mergeCells(row,column,numRows,numColumns )行和列都从0开始

  • row        起始行
  • column  起始列
  • numRows  需要合并的行数
  • numColumns 需要合并的列数

 例子1:从0,0开始,合并2行4列

    texttable->mergeCells(0,0,2,4);//00开始合并两行四列

例子2:从1,1开始,合并2行3列

    texttable->mergeCells(1,1,2,3);//11开始合并23

 分割表格:

splitCell(row,column,numRows,numColumns)

  • row        起始行
  • column  起始列
  • numRows  需要分割成的行数
  • numColumns 需要分割成的列数

原始表格为:

合并成3列

  1. texttable->mergeCells(0,0,2,4);
  2. texttable->splitCell(0,0,1,3);//00开始分割1行,分割成3

 还原成原来的完整表格:

  1. texttable->mergeCells(0,0,2,4);
  2. texttable->splitCell(0,0,1,1);//分割成 11

 QTextTableCell(表格单元格)

表格单元格是属于表格的文档结构片段。该表将单元格排序为特定的行和列;单元格还可以跨越多列和多行。单元格通常在使用QTextCursor::insertTable() 插入文档时创建,但也会在调整表格大小时创建和销毁。

构造函数:

常用的函数:

fristCursorPosition()第一个有效的光标位置
lastCursorPosition()最后一个有效的光标位置
row()行号
column()列号

QTextTableCellFromat(表格单元格样式)

文档中表格单元格的表格单元格格式指定表格单元格的可视属性

这些样式都大致相同就不列举了

QTextTableCellFormat Class |Qt GUI 5.15.11

来个例子:

widget.h文件添加以下数据

头文件:

  1. #include<QTextEdit>
  2. #include<QTextTable>
  3. #include<QTextCursor>
  4. #include<QTextDocument>
  5. #include<QTextTableCell>
  6. #include<QDebug>

成员函数和成员变量:

  1. QTextEdit *textedit;//文本框
  2. int row;//行数
  3. int column;//列数
  4. void mergeCells(QTextTable*table,int a,int b,int c,int d);//合并表格
  5. void splitCalls(QTextTable*table,int a=0,int b=0,int c=1,int d=1);//分割表格
  6. void setTextLength(QTextTable *table,QTextTableFormat &p);//添加列限制
  7. void setTableCellformat(QTextTable *table);//添加表格块格式和数据
  8. void showtext(QTextTable *table);//输出全部内容

构造函数的内容:

  1. resize(800,800);
  2. textedit=new QTextEdit(this);
  3. textedit->setFixedSize(500,500);//设置文本框大小
  4. textedit->move(100,100);//移动文本框位置
  5. QTextDocument *document=textedit->document();//获取文本
  6. document->setDefaultFont(QFont("宋体",12));//设置默认字体和字体大小
  7. QTextCursor cursor=textedit->textCursor();//获得文本当前光标位置
  8. QTextTableFormat tablefromat;
  9. tablefromat.setAlignment(Qt::AlignLeft);//放到最左边
  10. tablefromat.setCellPadding(10);//设置填充
  11. tablefromat.setCellSpacing(1);//设置边距
  12. row=5;//初始为5
  13. column=5;//初始为5
  14. QTextTable *table=cursor.insertTable(row,column,tablefromat);//插入一个表格,并用table接收
  15. //setTextLength(table,tablefromat);//添加列限制
  16. setTableCellformat(table);//添加格式和添加数据
  17. //mergeCells(table,0,0,2,4);//合并表格
  18. //splitCalls(table);//分割表格,有默认值,默认恢复原状
  19. //showtext(table);//显示表格中的全部数据

函数的实现:

  1. void Widget::setTextLength(QTextTable *table,QTextTableFormat &p)//添加列限制
  2. {
  3. QVector<QTextLength> textlength;
  4. for(int i=0;i<table->columns();i++)
  5. {
  6. textlength.append(QTextLength(QTextLength::PercentageLength,80));
  7. }
  8. p.setColumnWidthConstraints(textlength);
  9. table->setFormat(p);
  10. }
  11. void Widget::mergeCells(QTextTable* table,int a,int b,int c,int d)//合并表格
  12. {
  13. if(a<0||a>table->rows()-1)
  14. {
  15. return;
  16. }
  17. if(b<0||b>table->rows()-1)
  18. {
  19. return;
  20. }
  21. if(c<0||c>table->rows())
  22. {
  23. return;
  24. }
  25. if(d<0||d>table->rows())
  26. {
  27. return;
  28. }
  29. table->mergeCells(a,b,c,d);//合并表格
  30. }
  31. void Widget::splitCalls(QTextTable* table,int a,int b,int c,int d)//分割表格
  32. {
  33. if(a<0||a>table->rows()-1)
  34. {
  35. return;
  36. }
  37. if(b<0||b>table->columns()-1)
  38. {
  39. return;
  40. }
  41. if(c<0||c>table->rows())
  42. {
  43. return;
  44. }
  45. if(d<0||d>table->columns())
  46. {
  47. return;
  48. }
  49. table->splitCell(a,b,c,d);//分割表格
  50. }
  51. void Widget::setTableCellformat(QTextTable *table)//添加表格块格式和添加数据
  52. {
  53. QTextTableCellFormat cellFormat;//表格块格式
  54. cellFormat.setPadding(1);//填充
  55. cellFormat.setFont(QFont("楷书",10));//设置字体和大小
  56. cellFormat.setBackground(Qt::white);//设置背景
  57. for(int i=0;i<table->rows();i++)
  58. {
  59. for(int j=0;j<table->columns();j++)
  60. {
  61. QTextTableCell cell=table->cellAt(i,j);//获取位置的表格块
  62. cell.setFormat(cellFormat);
  63. QTextCursor cursor=cell.firstCursorPosition();//获取光标位置
  64. cursor.insertText("table");//插入数据
  65. }
  66. }
  67. }
  68. void Widget::showtext(QTextTable *table)//输出全部内容
  69. {
  70. for(int i=0;i<table->rows();i++)
  71. {
  72. for(int j=0;j<table->columns();j++)
  73. {
  74. QTextTableCell cell=table->cellAt(i,j);
  75. QTextCursor cursor=cell.firstCursorPosition();//获取光标初始位置
  76. QTextBlock block=cursor.block();//获取当前的文本块
  77. qDebug()<<block.text();//输出内容
  78. }
  79. }
  80. }

页面效果:

 功能的话在这就不展示了,我这是可以运行的。

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

闽ICP备14008679号