QTextTable Class
QTextTable 类表示QTextDocument 中的表格 ... 更多...
头文件: | #include <QTextTable> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
继承: | QTextFrame |
- 所有成员(包括继承成员)的列表
- QTextTable 是富文本处理 API 的一部分。
注意:该类中的所有函数都是可重入的。
公共函数
void | appendColumns(int count) |
void | appendRows(int count) |
QTextTableCell | cellAt(int row, int column) const |
QTextTableCell | cellAt(const QTextCursor &cursor) const |
QTextTableCell | cellAt(int position) const |
int | columns() const |
QTextTableFormat | format() const |
void | insertColumns(int index, int columns) |
void | insertRows(int index, int rows) |
void | mergeCells(int row, int column, int numRows, int numCols) |
void | mergeCells(const QTextCursor &cursor) |
void | removeColumns(int index, int columns) |
void | removeRows(int index, int rows) |
void | resize(int rows, int columns) |
QTextCursor | rowEnd(const QTextCursor &cursor) const |
QTextCursor | rowStart(const QTextCursor &cursor) const |
int | rows() const |
void | setFormat(const QTextTableFormat &format) |
void | splitCell(int row, int column, int numRows, int numCols) |
详细说明
表格是一组按行和列排序的单元格。每个表格至少包含一行和一列。每个单元格包含一个块,并由一个框架包围。
通常使用QTextCursor::insertTable() 函数创建表格并插入到文档中。例如,我们可以使用以下代码行在编辑器的当前光标位置插入一个三行两列的表格:
QTextCursor cursor(editor->textCursor()); cursor.movePosition(QTextCursor::Start); QTextTable *table = cursor.insertTable(rows, columns, tableFormat);
表格格式可以在创建表格时定义,也可以在之后使用setFormat() 更改。
使用QTextCursor::currentTable() 查找光标当前正在编辑的表格。这样就可以在表格插入文档后更改其格式或尺寸。
表格的尺寸可以通过resize() 或insertRows(),insertColumns(),removeRows() 或removeColumns() 进行更改。使用cellAt() 可以检索表格单元格。
在表格中移动光标,并使用rowStart() 和rowEnd() 函数获取每一行的起始和结束光标,即可找到表格行的起始和结束位置。
可以使用mergeCells() 和splitCell() 函数合并和拆分 QTextTable 中的行和列。不过,只有跨多行或多列的单元格才能被拆分。(合并或拆分不会增加或减少行或列的数量)。
请注意,如果将多列和多行合并为一个单元格,则无法将合并后的单元格拆分为跨多行或多列的新单元格。要想拆分跨多行多列的单元格,需要多次迭代。
![]() | 假设我们有一个包含姓名和地址的 2x3 表格。要合并第一行的两列,我们调用mergeCells()row = 0、column = 0、numRows = 1 和numColumns = 2。table->mergeCells(0, 0, 1, 2); |
![]() | 这样就得到了下表。要将表格的第一行拆分为两个单元格,我们调用splitCell() 函数,其中numRows 和numCols = 1。table->splitCell(0, 0, 1, 1); |
![]() | 这样就得到了原始表格。 |
另请参见 QTextTableFormat 。
成员函数文档
void QTextTable::appendColumns(int count)
在表格右侧添加count 列。
另请参阅 insertColumns()、insertRows()、resize()、removeRows()、removeColumns() 和appendRows()。
void QTextTable::appendRows(int count)
在表格底部添加count 行。
另请参阅 insertColumns()、insertRows()、resize()、removeRows()、removeColumns() 和appendColumns()。
QTextTableCell QTextTable::cellAt(int row, int column) const
返回表格中row 和column 处的表格单元格。
QTextTableCell QTextTable::cellAt(const QTextCursor &cursor) const
这是一个重载函数。
返回包含给定cursor 的表格单元格。
QTextTableCell QTextTable::cellAt(int position) const
这是一个重载函数。
返回文档中position 处包含字符的表格单元格。
int QTextTable::columns() const
返回表格中的列数。
另请参阅 rows()。
QTextTableFormat QTextTable::format() const
返回表格的格式。
另请参见 setFormat()。
void QTextTable::insertColumns(int index, int columns)
在指定index 的列之前插入若干columns 。
另请参阅 insertRows(),resize(),removeRows(),removeColumns(),appendRows() 和appendColumns() 。
void QTextTable::insertRows(int index, int rows)
在指定index 的记录前插入若干rows 。
另请参阅 resize(),insertColumns(),removeRows(),removeColumns(),appendRows() 和appendColumns() 。
void QTextTable::mergeCells(int row, int column, int numRows, int numCols)
将指定row 和column 的单元格与相邻单元格合并为一个单元格。新单元格将跨越numRows 行和numCols 列。如果numRows 或numCols 小于单元格所跨的当前行数或列数,则此方法不会执行任何操作。
另请参见 splitCell()。
void QTextTable::mergeCells(const QTextCursor &cursor)
这是一个重载函数。
合并由cursor 所选的单元格。
另请参见 splitCell().
void QTextTable::removeColumns(int index, int columns)
从指定index 的列开始,删除若干columns 。
另请参阅 insertRows(),insertColumns(),removeRows(),resize(),appendRows() 和appendColumns() 。
void QTextTable::removeRows(int index, int rows)
从指定的index 行开始,删除若干rows 。
另请参阅 insertRows(),insertColumns(),resize(),removeColumns(),appendRows() 和appendColumns() 。
void QTextTable::resize(int rows, int columns)
调整表格大小,以包含所需数量的rows 和columns 。
另请参阅 insertRows()、insertColumns()、removeRows() 和removeColumns()。
QTextCursor QTextTable::rowEnd(const QTextCursor &cursor) const
返回一个游标,指向包含给定cursor 的行的末尾。
另请参阅 rowStart() 。
QTextCursor QTextTable::rowStart(const QTextCursor &cursor) const
返回一个游标,指向包含给定cursor 的行的起始位置。
另请参阅 rowEnd() 。
int QTextTable::rows() const
返回表格中的行数。
另请参阅 columns()。
void QTextTable::setFormat(const QTextTableFormat &format)
设置表格的format 。
另请参阅 format() 。
void QTextTable::splitCell(int row, int column, int numRows, int numCols)
将row 和column 上指定的单元格拆分成一个由多个单元格组成的数组,单元格的尺寸由numRows 和numCols 指定。
注意: 只能分割跨多行或多列的单元格,如使用mergeCells() 合并的行。
另请参阅 mergeCells()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.