红色部分是可以直接使用的。
QFileSystemModel;
QFileSystemModel的使用:
头文件:
QFileSystemModel* model = nullptr;
cpp文件:
model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());
ui->listView->setModel(model);
ui->treeView->setModel(model);
//需要注意的是,listView , treeView , tableView 这三个组件都能用model。
槽函数和信号:
on_treeView_clicked( const QModelIndex &index ) //index其实是表格项的索引。
model->fileName(index); //返回去除路径的文件夹名称或文件名
model->filePath(index); //返回节点的目录名或带路径的文件名
model->type(index); //返回描述节点类型的文字
QStringListModel;
QStringListModel的使用:
QStringListModel的创建以及将初始化数据放入View控件中:
.h头文件:
QStringListModel * theModel = nullptr;
.cpp文件:
theModel = new QStringListModel;
QStringList strlist;
strlist<<"item1"<<"item2"<<"item3"<<"item4"<<"item5";
theModel->setStringList(strlist);
ui->listView->setModel(theModel);
QStringListModel的数据清除:
theModel->rowCount(); //获取模型数据行数
theModel->removeRows(0,theModel->rowCount()); //清除模型数据
QStringListModel的删除当前项数据:
ui->listView->currentIndex().row(); //当前选中的项的行数
theModel->removeRow(ui->listView->currentIndex().row()); //删除当前项
QStringListModel的添加项:
theModel->insertRow(theModel->rowCount()); //先添加一行
QModelIndex index = theModel->index(theModel->rowCount()-1,0); //设置索引为最后一 行的索引;
theModel->setData(index,"new Item",Qt::DisplayRole); //在索引处设置添加项以及添加项 的文本
ui->listView->setCurrentIndex(index); //将其显示在表格里
QStringListModel的插入项:
theModel->insertRow(ui->listView->currentIndex().row()); //先添加一行
//设置索引为最后一 行的索引;
QModelIndex index = theModel->index(ui->listView->currentIndex().row()-1,0);
theModel->setData(index,"insert Item",Qt::DisplayRole); //在索引处设置添加项以及添加项 的文本
ui->listView->setCurrentIndex(index); //将其显示在表格里
QStandItemModel:
QStandardItemModel的使用:
QStandardItemModel的创建以及将初始化数据放入View控件中:
.h头文件
QStandardItemModel * m_model = nullptr;
.cpp源文件:
m_model = new QStandardItemModel;
QStringList header;
header<<"Item1"<<"Item2"<<"Item3"<<"Item4"<<"Item5";
m_model->setHorizontalHeaderLabels(header);
QStandardItemModel添加行操作;
int rowindx = m_model->rowCount(); //获取现在表格有几行
rowIndex++;
QString item1 = "newItem";
QStandardItem * Item_item1 = new QStandardItem(item1);
m_model->setItem(rowindex,0,Item_item1);
QStandardItemModel删除行操作:
rowindex--;
m_model->setRowCount(rowindex);
QStandardItemModel插入行操作:
QModelIndex index = ui->tableview->currentIndex();
m_model->insertRow(index.row()); //插入一行
m_model->setData(index,"new",Qt::DisplayRole);
自定义代理
新建一个类: