diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2017-09-01 18:27:15 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2018-01-08 09:41:53 +0000 |
commit | 69496d4e22fb6a8805fbcfa798d9aca53621a2ac (patch) | |
tree | 788bb62a9981188fb82ad16ef61b1e9e8fdeb35d /tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro | |
parent | 9c53f4d33a1953bc84e5b5e8bbef14db375bb180 (diff) |
Introduce QAbstractItemModel::checkIndex()
When implementing a custom model there's the habit, in each and every
function that takes a QModelIndex, to carefully checking the index
passed by the caller. This index is checked for "legality" (*): does the
index belong to this model, is the index pointing to an existing row and
column, and so on. These checks are hand-rolled and, as such, slightly
different and possibly incomplete (i.e. wrong) every time.
What's worse, these checks are implemented via "ordinary" code (if
statements). However, passing an illegal index to a QAIM function is a
precondition violation, and as such does not (and must not) be
checked in ordinary conditions, as it triggers undefined behavior. On
the other hand, while debugging a custom model or a custom hierarchy
of (proxy) models, having such checks in place can be a significant
aid.
Enter checkIndex(): a debugging helper for QAbstractItemModel and its
subclasses. checkIndex() centralizes the checks for legality of a
given index. User code is free to assert on it, or have some other
fallback mechanism in case a check fails.
(*) Using "legality" here instead of "validity" in order to avoid
confusion between QModelIndex::isValid() and what checkIndex() really
does.
[ChangeLog][QtCore][QAbstractItemModel] Added
QAbstractItemModel::checkIndex(), a debugging function for
QAbstractItemModel subclasses.
Change-Id: I1eea0586b1ac3ededdbfbf46759145022dc5ad86
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro')
-rw-r--r-- | tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro b/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro index 7480bd45f6..dc7362e442 100644 --- a/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro +++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro @@ -1,6 +1,6 @@ CONFIG += testcase TARGET = tst_qabstractitemmodel -QT = core testlib +QT = core testlib gui mtdir = ../../../other/modeltest INCLUDEPATH += $$PWD/$${mtdir} |