qt -- QStandardItemModel的使用

目录

QStandardItemModel:

QTableView:

QItemSelectionModel:

关系:

创建数据模型:

选择模型:

在TableView中设置数据模型和选择模型:

 插入行:

删除行:

单元格格式设置:


QStandardItemModel以项为数据的基础标准数据模型类,通常与QTableView组合成Model/View结构。

QStandardItemModel:

基于项数据的标准数据模型,可以处理二维数据。维护一个二维的项数据数组,每个项是一个QStandardItem类的变量,用于存储项的数据、体格式、对齐方式等。

QTableView:

二维数据表视图组件,有多个行和多个列,每个基本显示单元是一个单元格,通过setModel()函数设置一个QStandardItemModel类的数据模型之后,一个单元格显示QStandardItemModel数据模型中的一个项。

QItemSelectionModel:

一个用于跟踪视图组件的单元格选择状态的类,当在QTableView选择某个单元格,或多个单元格时,通过 QItemSelectionModel可以获得选中的单元格的模型索引,为单元格的选择操作提供方便。

关系:

QTableView是界面视图组件,其关联的数据模型是QStandardItemModel,关联的选择模型是QItemSelectionModel,QStandardItemModel的数据管理的基本单元是QStandardItem。 

创建数据模型:

QStandardItemModel model = new QStandardItemModel();

选择模型:

QItemSelectionModel itemSelectionModel = new QItemSelectionModel(model );

在TableView中设置数据模型和选择模型:

ui->tableview->setModel(model) ; //设置数据模型
ui->tableview->setselectionModel(itemSelectionModel ); / /设置选择模型

 插入行:

使用QStandardItemModel::insertRow()函数插入一行

函数原型:

void insertRow(int row, const QList<QstandardItem *> &items)

参数:

row是一个行号,表示在此行号之前插入一行,若row 等于或大于总行数,则在最后添加一行。

QList<QStandardItem *>&items是一个QStandardItem类型的列表类,需要为插入的一行的每个项数据创建一个QStandardItem类型的项,然后传递给insertRow()函数。
 

删除行:

//删除行
QModelIndex curIndex = itemSelectionModel ->currentIndex();//获取模型索引

if (curIndex.row() == model ->rowCount() - 1)//最后一行
{
    model->removeRow(curIndex.row()) ; //删除最后一行
}
else
{
    model->removeRow(curIndex.row()) ;//删除一行,并重新设置当前选择行

    itemSelectionModel->setCurrentIndex(curIndex, QItemSelectionModel::Select) ;
}

单元格格式设置:

//设置文字居左对齐
if(!itemSelectionModel->hasSelection())
{
    return;
}
//获取选择的单元格的模型索引列表,可以是多选
QModelIndexList selectedIndex = itemSelectionModel->selectedIndexes();

for(int i = 0; i < selectedIndex.count(); i++)
{
    QModelIndex aIndex = selectedIndex.at(i);//获取一个模型索引
    QStandardItem* aItem = model->itemFromIndex(aIndex);  //获取项数据
    aItem->setTextAlignment(Qt::AlignLeft);//设置文字对齐方式
}



QFont font = aItem->font() ;
font.setBold(checked) ; //设置字体是否粗体  checked: true  false
aItem->setFont (font) 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值