一个标准的数据模型,它将数据储存在内存中。
标签条目(item)模型支持WAbstractItemModel的全部特性,因此可以用来表示表格、树和树型表格。
那些数据本身是用WStandardItem 对象的方式来组织的。有一个隐身的根对象(invisibleRootItem()),它储存的是顶级的数据。这个类中的大部分在内部访问或者操作数据的方法都是对这个根条目进行操作的。
如果你想将这个模型用作一个表格的话,那么你可以使用WStandardItemModel(int, int, WObject *)来设置最初的表格大小,再使用item()和setItem()方法来设置数据。你可以通过以下方法来改变表格的规格(geometry):插入行(insertRow())或列(insertColumn()),或者删除行(removeRow())或列(removeColumn())。
如果你想将这个模型用作一个树(或者树型表格)的话,那么你可以使用默认构造函数来创建一棵空的树,再使用invisibleRootItem()上WStandardItem API 的来操作树根。如果你是在构建一棵树的话,那么每个节点上的列数是1。如果你是在构建一个树型表格的话,那么你可以为每个内部节点添加多个数据列。只有第一列中的条目会有子代条目,并且形成一个层次性的树结构。
如果你将这个模型与一个视图类配合使用的话,那么,你可以使用itemFromIndex()和indexFromItem()方法来在模型索引(被视图类使用)与标准条目之间转换。
表格数据的使用示例:
int rows = 5;
int columns = 4;
Wt::WStandardItemModel *model = new Wt::WStandardItemModel(rows, columns, this);
for (int row = 0; row < rows; ++row) {
for (int column = 0; column < columns; ++column) {
Wt::WStandardItem *item = new Wt::WStandardItem();
item->setText("Item " + boost::lexical_cast<std::string>(row)
+ ", " + boost::lexical_cast<std::string>(column));
model->setItem(row, column, item);
}
}
树型数据的使用示例:
int topLevelRows = 5;
int secondLevelRows = 7;
Wt::WStandardItemModel *model = new Wt::WStandardItemModel();
Wt::WStandardItem *root = model->invisibleRootItem();
for (int row = 0; row < topLevelRows; ++row) {
Wt::WStandardItem *topLevel = new Wt::WStandardItem();
topLevel->setText("Item " + boost::lexical_cast<std::string>(row));
for (int row2 = 0; row2 < secondLevelRows; ++row2) {
Wt::WStandardItem *item = new Wt::WStandardItem();
item->setText("Item " + boost::lexical_cast<std::string>(row)
+ ": " + boost::lexical_cast<std::string>(row2));
topLevel->appendRow(item);
}
root->appendRow(topLevel);
}
HxLauncher: Launch Android applications by voice commands