先列出几个tableview常用的几个函数:
model_common_7E->setEditStrategy(QSqlTableModel::OnFieldChange);//设定何时将tableview的更改更新到数据库?行变化时、域(列)变化时、手动更新
ui->tableView->setModel(model_common_7E);//sql模型与tableView绑定
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);//选择模式:只能选中单个单元格、可以选中矩形区域、是否支持按住CTRL/shift选择等
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//选择后的显示行为:显示选中单元格、显示选中的行、显示选中的列
ui->tableView->resizeColumnsToContents();//重新调整列以自适应内容的宽度
ui->tableView->setSortingEnabled(true);//排序使能
ui->tableView->horizontalHeader()->sortIndicatorOrder();//在水平头显示排序按钮
ui->tableView->hideColumn(0);//隐藏第n列,一般可用于连接数据库后隐藏主键所在的列
ui->tableView->verticalHeader()->setSectionsMovable(true);//使能:鼠标按住行号(行名)可自由拖动行的位置
ui->tableView->horizontalHeader()->setSectionsMovable(true);//使能:鼠标按住列名可自由拖动列的位置
ui->tableView->horizontalHeader()->moveSection(0,2);//用程序把第0列挪动到第2列的位置(注:仅改变视图显示的位置,不改变逻辑位置)
2、通过行号、列名称来获取某单元格的数据
注:model中的一行称为一条record,一列称为一条field
两种方法:
方法(1),使用QSqlRecord类
QSqlRecord record;//获取model某行的所有内容
QSqlTableModel model;
record = model->record(2);//读取第2行的所有数据
QString name = record.value("name").toString();//从第2行中读出列名为name的那一列的数据
方法(2),使用model自己的成员函数
int columun_idx = model->fieldIndex("name");//获取列名为name的列的列号
QModelIndex index = model->index(2,columun_idx);//定位到第2行,第columun_idx列
QString name_str = model->data(index).toString();//读取数据