50 QStringListModel

在这个案例中,借助QStringListModel类的对象,表示计算机内存中的字符串表,将其关联于QListView视图。只要模型中的数据发生变化,视图就会立即同步所发生的改变。用户在视图中对数据所做的修改,也会自动反映到模型中。视图与模型在任何时候,都会自动保持一致。

50.1 创建项目

通过QtCreator,在C:\Users\Minwei\Projects\Qt路径下,创建名为StringList的项目。

50.2 设计界面

C:\Users\Minwei\Projects\Qt\StringList\stringlistdialog.ui:

50.3 实现功能

C:\Users\Minwei\Projects\Qt\StringList\stringlistdialog.h:

C:\Users\Minwei\Projects\Qt\StringList\stringlistdialog.cpp:

50.4 测试验证

运行效果如图所示:

50.5 案例对比

将这个案例与先前的List案例做一个对比。在MV结构中,QStringListModel模型和QListView视图是分离且同步的。将数据加入QStringListModel,QListView即可显示,通过QListView修改数据,QStringListModel也会因之而变。List案例里的QListWidget并没有模型与之关联,数据都是以QListWidgetltem对象的形式直接存放在QListWidget内部的。数据和显示是一体的。这就是视图组件和项集组件的主要区别。