使用模式和视图
本节结构:
概述
和现有的模式一起使用视图
·概述
QT提供了两个标准的模式分别是QStandardItemModel和QDirModel。QStandardItemModel是一个多种用途的模式,可用于表示适用于列表、表格和树视图的多种不同数据结构。这种模式保持数据的物件。QDirModel是一个维护目录内容信息的模式。所以,它本身不保持任何物件,而是仅仅简单的代表本地文件系统的文件和目录。
QDirModel提供了一个准备模式,以备试验,而且很容易配置来使用已经存在的数据。使用这个模式,我们可用展示怎么配置模式和制作好的视图,和演示怎样使用索引控制数据。
·和现有的模式一起使用视图
QListView和QTreeView类是最适合与QDirModel一起使用的视图。下面的例子显示的是同一个目录内容在挨着的树视图和列表视图中的效果。视图共享用户的选择操作,所以被选择的条目在两个视图中都高亮。
我们设置一个QDirModel,这样就可用用了,创建一些视图就可以显示目录的内容。该例子展现的是使用模式的最简单方式。在一个main()函数中构造和使用模式:
int
main( int argc, char* argv[] )
{
QApplication app( argc,argv );
QSplitter* splitter = new QSplitter;
QDirModel* model = new QDirModel;
视图的创建和其他widget创建的方式相同。配置视图来显示模式中的条目简单到只需以文件夹模式为参数调用他的setModel()函数。函数调用setRootIndex()告诉视图要显示那个文件夹,参数需要提供一个从文件夹模式获取到的模式索引。
本例中的函数index()是QDirModel中唯一的;我们给它一个文件夹,它返回一个模式索引。模式索引将在“Model Classes”一节中讨论。
这个函数剩余的就是在一个分割器widget中显示视图,然后运行应用程序的事件循环。
splitter->setWindowTitle( “Two views onto the same directory model” );
splitter->show();
return app.exec();
}
在上面的例子中,我们忽略了怎样控制条目的选择。这个课题将在节“Handling Selectings in Item Views”中详细说明。在测试如何控制选择之前,你将发现阅读章节“Model Classes”是非常实用的,它描述了在Model/View框架中使用的概念。