对于QTreeView,哪种模型最适合这种情况?

时间:2016-02-24 11:42:46

标签: c++ qt data-modeling qtreeview qlistwidget

我想在QTreeView中显示以下数据:

  
      
  1. 男性:

         

    标记

         

    史蒂夫

         

    詹姆斯

  2.   
  3. 女性:

         

         

    乔伊斯

         

    艾米丽

  4.   
  5. 女青少年:

         

    丽贝卡

         

    亚历

  6.   
  7. 男性青少年:

         

    萨姆

         

    伊恩

  8.   

我使用的是Qt库版本4.8。

我想知道,哪个QAbstractItemModel适合它?

在我看来,我应该使用QDirModel - 这就是我想要的QTreeView的样子。但它很愚蠢:我不会像目录一样显示字符串。

这很令人惊讶,但是虽然QTreeView提供了我需要的功能,但是没有适合我的数据的模型。

说清楚:我需要像QListWidget这样的东西。它们应该是可扩展的,以便用户可以看到某些类型的人名。

抱歉这个愚蠢的例子。我怎么能在Qt中做到这一点?

1 个答案:

答案 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' ,您可以显示或隐藏用于展开和折叠顶级项目的控件。