Qt QTableView之QSqlTableModel数据库显示及插入删除操作

QTableView的使用

  • 初始化QTableView控件
    //设置tableview行表头 文字居中
    horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);
    //设置tableview列表头 文字居中
    verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
    //设置列的默认大小
    verticalHeader()->setDefaultSectionSize(50);
    //设置列表头是否显示
    verticalHeader()->setVisible(false);//true->显示 , false->不显示
    //设置最后一行自动调整
    horizontalHeader()->setStretchLastSection(true);
    //自动调整大小
    //resizeColumnToContents(int);//第几列
    //setSectionResizeMode(QHeaderView::Stretch);等宽
    //设置是否有网格线
    setShowGrid(true);
    setGridStyle(Qt::SolidLine);//设置网格线类型Qt::DashLine ->虚线
    horizontalHeader()->setHighlightSections(false); //解决表头塌陷问题:点击表格时不对表格行光亮
  • 使用tableview控件的设置
    //单一和多选选择
    setSelectionMode(QAbstractItemView::SingleSelection);
    setSelectionMode(QAbstractItemView::ExtendedSelection);
    //选择整行
    table->setSelectionBehavior(QAbstractItemView::SelectRows);
    //去掉水平滚动条
    table->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    //内容不可编辑
    table->setEditTriggers(QAbstractItemView::NoEditTriggers);

附上QTableView控件初始化函数接口

/*************************************************
Function: tableviewInit// 函数名称
Description: QTableview 初始化函数// 函数功能、性能等的描述
Input: QTableView *table ->控件名// 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
Return: 无// 函数返回值的说明
*************************************************/
void Widget::tableviewInit(QTableView *table)
{
    table->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);
    table->verticalHeader()->setDefaultAlignment(Qt::AlignCenter);
    table->verticalHeader()->setDefaultSectionSize(50);
    table->verticalHeader()->setVisible(false);
    table->setSelectionMode(QAbstractItemView::SingleSelection);
    table->setSelectionBehavior(QAbstractItemView::SelectRows);
    table->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    table->setEditTriggers(QAbstractItemView::NoEditTriggers);
    //table->resizeColumnToContents(2);
    //table->resizeColumnToContents(3);
    //table->resizeColumnToContents(4);
    //table->setColumnWidth(6,152);
    table->horizontalHeader()->setStretchLastSection(true);
    //table->verticalHeader()->setMinimumWidth(30);
    table->setShowGrid(true);
    table->setGridStyle(Qt::SolidLine);
}

SQL 映射到QTableView 控件上

附上SQL映射Qtableview函数接口

/*************************************************
Function: sqlModeInit// 函数名称
Description: sql 映射到QTableview 函数// 函数功能、性能等的描述
Input:QSqlDatabase db  ->数据库名
	  QTableView *table ->映射到QTableView控件名// 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
Return: 无// 函数返回值的说明
*************************************************/
void Widget::sqlModeInit(QSqlDatabase db, QTableView *table)
{
	//创建一个QSqlTableModel模型
    sqlTableModel = new QSqlTableModel(this,db);
    //设置模型表名
    sqlTableModel->setTable("usertable");
    sqlTableModel->setEditStrategy(QSqlTableModel::OnFieldChange);
   //设置表头名称
    sqlTableModel->setHeaderData(0, Qt::Orientation::Horizontal, tr("序号"));
    sqlTableModel->setHeaderData(1,Qt::Orientation::Horizontal, tr("用户ID"));
    sqlTableModel->setHeaderData(2, Qt::Orientation::Horizontal, tr("身份"));
    sqlTableModel->setHeaderData(3,Qt::Orientation::Horizontal, tr("用户名"));
    sqlTableModel->setHeaderData(4, Qt::Orientation::Horizontal, tr("密码"));
    sqlTableModel->select();
    //显示到Qtableview控件上
    table->setModel(sqlTableModel);
}

插入数据

/*************************************************
Function: insertSqlData()// 函数名称
Description: 插入数据// 函数功能、性能等的描述
Input:// 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
Return: 无// 函数返回值的说明
*************************************************/
void Widget::insertSqlData()
{
    int row = sqlTableModel->rowCount();
    sqlTableModel->insertRow(sqlTableModel->rowCount());
    sqlTableModel->setData(sqlTableModel->index(row,1),"2");
    sqlTableModel->setData(sqlTableModel->index(row,2), "user");
    sqlTableModel->setData(sqlTableModel->index(row,3), "xiaoming");
    sqlTableModel->setData(sqlTableModel->index(row,4), "123456");
    if(!sqlTableModel->submitAll()){
        qDebug()<<"更新数据库失败";
 }

附上代码执行结果
Qt QTableView之QSqlTableModel数据库显示及插入删除操作_第1张图片

删除一行数据

/*************************************************
Function: delSqlData()// 函数名称
Description: 插入数据// 函数功能、性能等的描述
Input:// 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
Return: 无// 函数返回值的说明
*************************************************/
void Widget::delSqlData()
{
    //判断是否选中tableview的一行数据
     if(ui->tableView->currentIndex().row()!=-1){
          //删除选中的行
           sqlTableModel->removeRow(ui->tableView->currentIndex().row());
           if(!sqlTableModel->submitAll()){
               qDebug()<<"更新数据库失败";
           }
     }
}

数据库的创建上一篇有写到。。。。。。。

你可能感兴趣的:(Qt,qt,big,data,数据库,sqlite)