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控件初始化函数接口


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->horizontalHeader()->setStretchLastSection(true);

    table->setShowGrid(true);
    table->setGridStyle(Qt::SolidLine);
}

SQL 映射到QTableView 控件上

附上SQL映射Qtableview函数接口


void Widget::sqlModeInit(QSqlDatabase db, QTableView *table)
{

    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();

    table->setModel(sqlTableModel);
}

插入数据


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数据库显示及插入删除操作

删除一行数据


void Widget::delSqlData()
{

     if(ui->tableView->currentIndex().row()!=-1){

           sqlTableModel->removeRow(ui->tableView->currentIndex().row());
           if(!sqlTableModel->submitAll()){
               qDebug()<<"更新数据库失败";
           }
     }
}

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

Original: https://blog.csdn.net/qq_45147279/article/details/119946454
Author: Talent、me
Title: Qt QTableView之QSqlTableModel数据库显示及插入删除操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816075/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球