QSqlTableModel 只读取 数据表中的 第3、4、5、8列
时间: 2024-05-15 08:13:21 浏览: 9
可以通过继承 QSqlTableModel 并重新实现 columnCount() 和 data() 函数来实现只读取指定列的数据。以下是一个示例:
```
class CustomTableModel : public QSqlTableModel
{
public:
CustomTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase()) : QSqlTableModel(parent, db) {}
int columnCount(const QModelIndex &parent = QModelIndex()) const override
{
// 返回指定列数
return 4;
}
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
{
if (role != Qt::DisplayRole)
return QSqlTableModel::data(index, role);
// 只处理指定的列
if (index.column() == 2 || index.column() == 3 || index.column() == 4 || index.column() == 7)
return QSqlTableModel::data(index, role);
else
return QVariant();
}
};
```
然后在使用数据模型时,可以使用 CustomTableModel 替代 QSqlTableModel。例如:
```
CustomTableModel *model = new CustomTableModel(this, db);
model->setTable("mytable");
model->select();
ui->tableView->setModel(model);
```