QTableView
是 Qt 框架中用于显示表格数据的控件。它能够与模型(通常是 QAbstractItemModel
的子类)结合使用,以提供灵活的数据管理和视图显示。以下是 QTableView
的一些基本概念、用法和示例。
基本概念
模型/视图架构:在 Qt 中,
QTableView
使用模型/视图设计模式,分离了数据存储(模型)和数据展示(视图)。这使得你可以更灵活地处理数据,例如通过替换模型而不必改变视图代码。常用模型:
QStandardItemModel
: 用于简单的数据表。QSqlTableModel
: 从数据库中加载表格数据。
常用方法
设置模型:
void setModel(QAbstractItemModel *model);
获取当前选中的项:
QModelIndexList selectedIndexes = tableView->selectionModel()->selectedIndexes();
清空选择:
tableView->clearSelection();
调整列宽度:
tableView->resizeColumnToContents(columnIndex);
示例代码
下面是一个简单的示例,演示如何创建一个 QTableView
并填充一些数据:
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建 QTableView 和 QStandardItemModel
QTableView tableView;
QStandardItemModel model(5, 3); // 创建一个5行3列的表格
// 设置表头标签
model.setHorizontalHeaderLabels(QStringList() << "Name" << "Age" << "Occupation");
// 填充数据
for (int row = 0; row < model.rowCount(); ++row) {
model.setItem(row, 0, new QStandardItem(QString("Person %1").arg(row + 1)));
model.setItem(row, 1, new QStandardItem(QString::number(20 + row)));
model.setItem(row, 2, new QStandardItem((row % 2 == 0) ? "Engineer" : "Artist"));
}
// 将模型设置到视图上
tableView.setModel(&model);
// 显示表格窗口
tableView.resize(400, 300);
tableView.show();
return app.exec();
}
常用属性与信号
选择模式: 可以通过
setSelectionMode()
方法设置选择模式,比如单选、多选等。排序功能: 默认情况下,用户可以通过点击列标题进行排序。
信号槽机制: 可以连接信号以处理用户操作,如行或列被点击时:
connect(tableView.selectionModel(), &QItemSelectionModel::selectionChanged,
this, &YourClass::onSelectionChanged);
总结
QTableView
是 Qt 中强大的表格显示控件,通过结合不同的模型,可以轻松展示和管理复杂的数据结构。在实际开发中,你可以根据需求选择合适的模型,并利用信号与槽机制来处理用户交互。
内容由零声教学AI助手提供,问题来源于学员提问