QStandardItemModel用于实现基于项的数据模型,QAbstractItemModel的子类,用于提供数据给Qt的视图类(QTreeView、QListView、QTableView等)进行显示和编辑,可以根据需要设置和获取项的文本、图标、状态和其他属性。它还提供了一些方便的方法来操作和查询数据,如插入、删除、排序、过滤等。
与数据库联合使用
QString sql= "select*from booksystem.user";
QSqlQuery q;
if(!q.exec(sql)){ throw QSqlError("用户查询失败:", q.lastError().text()); }
int row = 0;
while(q.next())
{
QString id = q.value(0).toString();
QString name = q.value(1).toString();
QString account = q.value(2).toString();
QString password = q.value(3).toString();
QString identity = q.value(4).toString();
QStandardItem* item1 = new QStandardItem(id);
QStandardItem* item2 = new QStandardItem(name);
model.setItem(row, 0, item1);
model.setItem(row, 1, item2);
row++;
}
q.clear();
//配合数据库使用初始化表格数据
修改表格中单元格的样式
for(int row=0;row<model->rowCount();row++)
{
for(int column=0;clumn<model->columnCount();column++)
{
QModelIndex index=model->index(row,column);
model->setData(index,Qt::AlignCenter,Qt::TextAlignmentRole);//表格元素文本居中
QStandardItem*item=model->itemFromIndex(index);
if(item&&!item->text().isEmpty())
{
item->setEditable(false);
//设置表格元素只读
item->setBackground(QColor(114,160,205));
//设置有数据的表格元素的填充颜色
}
}
}