2011-12-17 56 views
0

目前,我有一个简单的设置,我保持对应于我的ListModel每个项目的bool列表:不同的视图不同的Qt :: CheckStateRole?

http://programmingexamples.net/wiki/Qt/ModelView/StringListModelCheckable

不过,现在我想要做的是有两个这样的列表的bool,说IsHot和IsLarge。然后我想有一个显示每个字符串的布尔变量之一(“热”视图)复选框一个ListView,并显示每个字符串与其他布尔(“大”布尔)复选框单独的ListView。有关如何解决这个问题的任何提示?

回答

1

使您的模型成为一个表,将数据返回到两个不同的列中,这些列中的单元格将被检查。

在您的列表视图,请致电QListView::setModelColumn设置列的列表视图显示。

如果你想同步列表之间滚动,你将被更好地使用QTableView中,让行会匹配。


编辑可以在返回文本和检查状态时添加更多细节。

要返回文本,并从模型中的复选框的状态从[数据]功能,在你的模型返回不同角色不同的数据。

manual for Qt::ItemDataRole

Qt::DisplayRole的关键数据以文本的形式来呈现。 (QStringQt::CheckStateRole此角色用于获取一个项目的选中状态。 (Qt::CheckState

在你的模型将返回DisplayRole相同的数据(名称),但不同的数据CheckStateRole

+0

几乎听起来不错,两个柱子......这个问题我想在ListView的文本显示名称列,但该复选框被链接到IsHot列。如果显示的文本来自同一列可检查的项目来了,ListView控件将只显示“真”或“假”与旁边的复选框,这是没有帮助的。明白了吗? – 2011-12-19 15:25:41

+0

您的模型可以返回它喜欢沿着任何文本有一个复选框,见编辑答案。 – 2011-12-20 14:25:54

相关问题