irpas技术客

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

大大的周 4676

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()<<"更新数据库失败"; }

附上代码执行结果

删除一行数据 /************************************************* 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()<<"更新数据库失败"; } } }

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


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #QTableView #数据库