上一篇文章《Qt的MVC模型/视图编程(一)》介绍了MVC模型/视图编程的基础知识;这一篇将讲解MVC模型/视图编程的基础例子,以更好的理解标准模式的使用;
在上一篇文章中知道一个模式可以对应多个视图;对应的程序如下所示:
m_tableView.setModel(&m_model);
m_listView.setModel(&m_model);
m_treeView.setModel(&m_model);
把模型设置到视图中时,接下来就可以把数据设置到模型中,模型中的数据就自然会把数据显示到视图中;在设置数据中还可以设置数据对应的角色;对应的程序如下所示:
QStandardItem* root = m_model.invisibleRootItem();
QStandardItem* itemA = new QStandardItem();
QStandardItem* itemB = new QStandardItem();
QStandardItem* itemC = new QStandardItem();
QStandardItem* itemChild = new QStandardItem();
/*****************设置数据*****************************/
itemA->setData("A", Qt::DisplayRole);
itemA->setData("Tip A", Qt::ToolTipRole);
itemB->setData("B", Qt::DisplayRole);
itemB->setData("Tip B", Qt::ToolTipRole);
itemC->setData("C", Qt::DisplayRole);
itemC->setData("Tip C", Qt::ToolTipRole);
itemChild->setData("Child", Qt::DisplayRole);
itemChild->setData("Tip Child", Qt::ToolTipRole);
itemC->setChild(0, 0, itemChild);
root->setChild(0, 0, itemA);
root->setChild(0, 1, itemB);
root->setChild(1, 0, itemC);
把数据设置到模型中,为了从模型中获取数据时就必须用索引来获取;获取的代码如下所示:
/*****************模型数据的索引*****************************/
QModelIndex index = m_model.index(0,0);
qDebug() <<"index(0,0)" << index.data().toString();
QModelIndex indexC = m_model.index(1,0);
QModelIndex indexChild = m_model.index(0,0,indexC);//获取itemC的子项
qDebug() <<"indexChild(0,0)" << indexChild.data().toString();
完整的例子程序在下面的链接中: