我想在QTreeView中显示以下数据:
男性:
标记
史蒂夫
詹姆斯
女性:
安
乔伊斯
艾米丽
女青少年:
丽贝卡
亚历
- 醇>
男性青少年:
萨姆
伊恩
我使用的是Qt库版本4.8。
我想知道,哪个QAbstractItemModel适合它?
在我看来,我应该使用QDirModel - 这就是我想要的QTreeView的样子。但它很愚蠢:我不会像目录一样显示字符串。
这很令人惊讶,但是虽然QTreeView提供了我需要的功能,但是没有适合我的数据的模型。
说清楚:我需要像QListWidget这样的东西。它们应该是可扩展的,以便用户可以看到某些类型的人名。
抱歉这个愚蠢的例子。我怎么能在Qt中做到这一点?
答案 0 :(得分:2)
对于简单的任务,QTreeWidget(没有任何外部模型)就足够了。
QStandardItemModel
如果您需要更多控制权,请使用QTreeView
+ QStandardItemModel* model = new QStandardItemModel(this);
model->setRowCount(1); // Top level item count.
model->setColumnCount(1);
QTreeView* tree = new QTreeView(this);
tree->setModel(model);
QStandardItem* itemMen = new QStandardItem("Men");
QStandardItem* itemMark = new QStandardItem("Mark");
QStandardItem* itemSteve = new QStandardItem("Steve");
model->setItem(0, 0, itemMen);
itemMen->setRowCount(2);
itemMen->setColumnCount(0);
itemMen->setChild(0, 0, itemMark);
itemMen->setChild(1, 0, itemSteve);
。
QTreeView::setRootIsDecorated()
修改强>
使用class Stock(models.Model):
productstockid = models.AutoField(db_column='ProductStockID', primary_key=True)
productid = models.ForeignKey(Product, models.DO_NOTHING, db_column='ProductID')
quantity = models.IntegerField(db_column='Quantity')
stocklocationid = models.ForeignKey('StockLocation', models.DO_NOTHING, db_column='StockLocationID')
class Meta:
unique_together = ('productid', 'stocklocationid',)
managed = False
db_table = 'stock'
,您可以显示或隐藏用于展开和折叠顶级项目的控件。