【问题标题】:debug data method qabstracttablemodel调试数据方法 qabstracttablemodel
【发布时间】:2012-06-06 13:23:21
【问题描述】:

我将 QAbstractTableModel 子类化以在表格视图中显示高分列表。我的数据不显示。我发现没有调用data方法。 headerData , rowCount , columnCount 被调用并且似乎工作正常。我的问题是如何调试这个问题,有谁知道在qt源代码的哪里插入断点来调试这个错误?

【问题讨论】:

  • 你是发出dataChanged(....),还是rowsInserted(....)等来通知视图模型不同?
  • 还要仔细检查您实际上是否正确地覆盖了数据函数(函数constness 之类的东西很容易被忽视,并可能导致您尝试覆盖虚函数失败)
  • 我没有发出任何信号。我的数据根本没有改变。我构建了所有模型,并将其传递给设置模型的表格视图。我应该进行一些初始化以查看数据吗?
  • 这是我的数据函数 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  • 您是否实现了以下功能:index()parent()rowCount()columnCount()data()

标签: c++ qt


【解决方案1】:

我发现了问题。这是我构建模型的方式。我在做

ScoreTableModel pstm(0,pscores);,其中 pscores 是 QList * scoreTableView->setModel(&pstm);

当前使用的版本是: m_pScoreTableModel = new ScoreTableModel(0, pscores); scoreTableView->setModel(m_pScoreTableModel); 其中 m_pScoreTableModel 是 ScoreTableModel*

有人知道我为什么会有这种奇怪的行为吗?会不会是因为这个QList *其实就是要显示的表格的内容?

【讨论】:

  • 这很简单。第一种方法在堆栈上创建模型。一旦您退出该范围,模型就会被销毁。你拥有模型,视图拥有模型。如果你销毁模型,视图将没有任何显示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多