diff options
author | Giuseppe D'Angelo <dangelog@gmail.com> | 2012-03-13 05:30:17 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-21 11:43:38 +0100 |
commit | cb32450c47e6bd6169c9f514a2e950729f82756f (patch) | |
tree | 6b6b411335bba2d6e00196d7899f22d26cbec711 /src/corelib/kernel/qobject.h | |
parent | 865949520252d7c0e5a78f4bb2c195f090f1f601 (diff) |
QRegularExpression: add QObject::findChildren overload
This actually involved tiding up QObject sources a little bit
to clearly separate QString / QRegExp overloads of findChildren.
The corresponding qFindChildren overload for MSVC 6 compatibiltiy
was *not* added.
Change-Id: I84826b3df9275a9bda03608a5b66756890eda6f8
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qobject.h')
-rw-r--r-- | src/corelib/kernel/qobject.h | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 9f09617071..37057bea50 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -73,13 +73,20 @@ class QWidget; #ifndef QT_NO_REGEXP class QRegExp; #endif +#ifndef QT_NO_REGEXP +class QRegularExpression; +#endif #ifndef QT_NO_USERDATA class QObjectUserData; #endif typedef QList<QObject*> QObjectList; -Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QString &name, const QRegExp *re, +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QString &name, + const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegExp &re, + const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); +Q_CORE_EXPORT void qt_qFindChildren_helper(const QObject *parent, const QRegularExpression &re, const QMetaObject &mo, QList<void *> *list, Qt::FindChildOptions options); Q_CORE_EXPORT QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo, Qt::FindChildOptions options); @@ -163,7 +170,7 @@ public: QList<void *> *voidList; } u; u.typedList = &list; - qt_qFindChildren_helper(this, aName, 0, reinterpret_cast<T>(0)->staticMetaObject, u.voidList, options); + qt_qFindChildren_helper(this, aName, reinterpret_cast<T>(0)->staticMetaObject, u.voidList, options); return list; } @@ -177,7 +184,22 @@ public: QList<void *> *voidList; } u; u.typedList = &list; - qt_qFindChildren_helper(this, QString(), &re, reinterpret_cast<T>(0)->staticMetaObject, u.voidList, options); + qt_qFindChildren_helper(this, re, reinterpret_cast<T>(0)->staticMetaObject, u.voidList, options); + return list; + } +#endif + +#ifndef QT_NO_REGEXP + template<typename T> + inline QList<T> findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const + { + QList<T> list; + union { + QList<T> *typedList; + QList<void *> *voidList; + } u; + u.typedList = &list; + qt_qFindChildren_helper(this, re, reinterpret_cast<T>(0)->staticMetaObject, u.voidList, options); return list; } #endif |