【问题标题】:Why does Qt ColumnView widget crash in this situation?为什么在这种情况下 Qt ColumnView 小部件会崩溃?
【发布时间】:2015-07-18 05:52:09
【问题描述】:

我正在 Qt 中测试一个使用 QColumnView 小部件的应用程序。小部件有两列,当单击第一列(父级)中的项目时,它的项目(子级)显示在第二列中。

我遇到的问题是这样的:

如果任何父母的孩子多于父母,如果选择了任何“多余”的孩子,应用程序就会崩溃。

换句话说,如果有五个父母并且每个父母有五个(或更少)孩子,那么一切都很好。但是,如果任何父级有六个或更多子级,则如果选择了索引大于前五个的任何子级,则应用程序将崩溃。

我希望以上内容很清楚。

谢谢。

【问题讨论】:

  • 请提供最小代码示例
  • @pnezis 感谢您的评论。事实证明我需要以下内容: if(!hasIndex(row, column, parent)) return QModelIndex();在我的“QAbstractItemModel::index()”函数中。我不认为视图小部件会使用无效的行、列组合调用“索引”,因为它可以使用“QAbstractItemModel::rowCount()”和 QAbstractItemModel::columnCount()”来获取模型的结构。

标签: qt user-interface crash widget


【解决方案1】:

事实证明我需要以下内容:

if(!hasIndex(row, column, parent))  
    return QModelIndex();

在我的“QAbstractItemModel::index()”函数中。我不认为视图小部件会使用超出界限的行/列组合调用“index()”,因为它可以使用“QAbstractItemModel::rowCount()”和 QAbstractItemModel::columnCount()”来获取模型的结构.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多