目录
代码示例:使用QTableWidget
Table Widget
使⽤ QTableWidget 表⽰⼀个表格控件. ⼀个表格中包含若⼲⾏, 每⼀⾏⼜包含若⼲列.
表格中的每个单元格, 是⼀个 QTableWidgetItem 对象.
QTableWidget 核⼼⽅法
| 方法 | 说明 |
|---|---|
| item(int row, int column) | 根据行数数列获取指定的 QTableWidgetItem* |
| setItem(int row, int column, QTableWidget*) | 根据行数数列设置表格中的元素 |
| currentItem() | 返回被选中的元素 QTableWidgetItem* |
| currentRow() | 返回被选中元素是第几行 |
| currentColumn() | 返回被选中元素是第几列 |
| row(QTableWidgetItem*) | 获取指定 item 是第几行 |
| column(QTableWidgetItem*) | 获取指定 item 是第几列 |
| rowCount() | 获取行数 |
| columnCount() | 获取列数 |
| insertRow(int row) | 在第 row 行处插入新行 |
| insertColumn(int column) | 在第 column 列插入新列 |
| removeRow(int row) | 删除第 row 行 |
| removeColumn(int column) | 删除第 column 列 |
| setHorizontalHeaderItem(int column, QTableWidget*) | 设置指定列的表头 |
| setVerticalHeaderItem(int row, QTableWidget*) | 设置指定行的表头 |
QTableWidgetItem 核⼼信号
| 信号 | 说明 |
|---|---|
| cellClicked(int row, int column) | 点击单元格时触发 |
| cellDoubleClicked(int row, int column) | 双击单元格时触发 |
| cellEntered(int row, int column) | 鼠标进入单元格时触发 |
| currentCellChanged(int row, int column, int previousRow, int previousColumn) | 选中不同单元格时触发 |
QTableWidgetItem 核⼼⽅法
| 方法 | 说明 |
|---|---|
| row() | 获取当前是第几行 |
| column() | 获取当前是第几列 |
| setText(const QString&) | 设置文本 |
| setTextAlignment(int) | 设置文本对齐 |
| setIcon(const QIcon&) | 设置图标 |
| setSelected(bool) | 设置被选中 |
| setSizeHints(const QSize&) | 设置尺寸 |
| setFont(const QFont&) | 设置字体 |
代码示例:使用QTableWidget
1)在界面上创建QTableWidget和四个按钮,一个输入框
注意:QTableWidget是QTableView的子类,功能比QTableView
更丰富,咱们使用QTableWidget即可.


可以通过QtDesigner手动添加(双击控件or右键编辑)

2) 编写 widget.cpp 构造函数, 构造表格中的初始数据.
3) 编写按钮的 slot 函数
4) 执⾏程序, 即可完成表格的基本操作
默认情况下, 单元格中的内容直接就是可编辑的.如果不想让⽤⼾编辑, 可以设置 ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
如果当前表格中的数据是固定的
完全就可以通过图形化的方式来进行编辑
但是实际开发中,很多时候数据是从文件/网络来加载的.此时通过图形化编辑不合适
了.