QTableView 控件是 Qt 框架提供的一个用于显示表格数据的部件。它提供了一个灵活的接口,可以轻松地显示和编辑二维表格数据。以下是 QTableView 控件的一些关键特点和用法:
1.显示数据: QTableView 可以显示由 QAbstractItemModel 提供的数据模型中的数据。您可以使用内置的模型类(如 QStandardItemModel)或自定义的数据模型类。
2.自定义外观: 您可以通过设置不同的视图委托(QStyledItemDelegate)来自定义表格单元格的外观和编辑器,以实现对单元格内容的自定义渲染和编辑。
3.选择和编辑: QTableView 允许用户选择单元格、行或列,并支持对选定数据进行编辑。您可以通过设置适当的编辑触发条件(如双击、按下 Enter 键等)来配置编辑方式。
4.排序和过滤: 您可以通过调用 QTableView 的排序和过滤功能来对表格数据进行排序和过滤,以便用户更轻松地查找和管理数据。
5.自适应大小: QTableView 支持自适应大小,可以根据内容的大小自动调整单元格、行和列的大小,以确保内容适合显示区域。
6.上下文菜单: 您可以为 QTableView 添加上下文菜单,以提供对数据的额外操作(如复制、粘贴、删除等)。
7.信号与槽: QTableView 支持信号与槽机制,您可以连接特定的信号(如单元格编辑完成、行选中等)到自定义的槽函数,以实现特定的功能。
#include <QSqlQueryModel>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QTableView>
#include <QLabel>
#include <QLineEdit>
#include <QDebug>
//写到你的窗体构造函数内
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("DB.db");
if (!db.open())
{
qDebug() << "Error: Failed to connect database." << db.lastError();
return;
}
QString tableName ="yourTableName";
QTableView *tableView = new QTableView();
QSqlQuery query("SELECT * FROM " + tableName, db);
QSqlRecord record = query.record();
QSqlQueryModel *model = new QSqlQueryModel(tableView);
model->setQuery(query);
tableView->setModel(model);
//给tabelview绑定单击信号槽
connect(tableView, &QTableView::clicked, this, &MainWindow::on_table_clicked);
void MainWindow::on_table_clicked(const QModelIndex &index)
{
QTableView *tableView = qobject_cast<QTableView *>(sender());
if (!tableView)
return;
QAbstractItemModel *model = tableView->model();
if (!model)
return;
int row = index.row();
int column_count = model->columnCount();
for (int i = 0; i < column_count; ++i)
{
qDebug()<<model->data(model->index(row, i)).toString();
}
}