QT QtableView与QSqlTableModel

先列出几个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();//读取数据



你可能感兴趣的:(QT QtableView与QSqlTableModel)