不同的Qt :: CheckStateRole用于不同的视图?

时间:2011-12-17 23:25:42

标签: qt qt4

目前我有一个简单的设置,我在其中维护一个与ListModel中每个项目对应的bool列表:

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

然而,现在我想做的是有两个这样的列表bool,比如IsHot和IsLarge。然后我希望有一个ListView显示每个字符串,其中一个bool(“Hot”视图)的复选框,以及一个单独的ListView,显示每个字符串,其中包含另一个bool的复选框(“Large”bool)。关于如何解决这个问题的任何提示?

1 个答案:

答案 0 :(得分:1)

将模型设为表格,将数据返回两个不同的列,这些列中的单元格将是可检查的。

在列表视图中,调用QListView::setModelColumn设置列表视图显示的列。

如果要同步列表之间的滚动,那么您最好使用QTableView,以便行匹配。


编辑以添加有关返回文本和检查状态的更多详细信息。

要从模型返回文本和复选框的状态,您可以从模型上的[data]函数返回不同角色的不同数据。

来自manual for Qt::ItemDataRole

  

Qt::DisplayRole要以文本形式呈现的关键数据。 (QString)   Qt::CheckStateRole此角色用于获取项目的已检查状态。 (Qt::CheckState

模型中的两列都会返回DisplayRole的相同数据(名称),但CheckStateRole

的数据不同