本页内容

QTextTable Class

QTextTable 类表示QTextDocument 中的一个表格。更多内容...

头文件: #include <QTextTable>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
继承自: QTextFrame

注意:该类中的所有函数均为可重入函数。

公共函数

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() 函数来获取每行首尾的光标,从而确定表格行的起始和结束位置。

QTextTable 中的行和列可以使用mergeCells() 和splitCell() 函数进行合并和拆分。但是,只有跨多行或多列的单元格才能被拆分。(合并或拆分不会增加或减少行和列的数量。)

请注意,如果已将多个列和行合并为一个单元格,则无法将该合并单元格拆分为跨越多行或多列的新单元格。若要拆分跨越多行多列的单元格,需要通过多次迭代来实现。

带有独立表头单元格的表格假设我们有一个包含姓名和地址的 2×3 表格。要合并第一行中的两列,我们调用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 ` 处的单元格。

另请参阅 columns() 和rows()。

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()。

© 2026 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.