From 21861e6fd1fcd1e4642f3d4c06ee7181d2c81778 Mon Sep 17 00:00:00 2001 From: Andre Somers Date: Tue, 2 Feb 2016 10:16:24 +0100 Subject: Add setFlag method to QFlags This makes implementing class methods that enable or disable a feature stored in a QFlags<> member easier. [ChangeLog][QtCore][QFlags] Added setFlag method to set or unset a flag Task-number: QTBUG-27100 Change-Id: Ic602abbbf3100df78f21b7918573744d1bbd18c1 Reviewed-by: Olivier Goffart (Woboq GmbH) Reviewed-by: Marc Mutz --- src/corelib/global/qflags.h | 5 +++++ src/corelib/global/qglobal.cpp | 8 ++++++++ 2 files changed, 13 insertions(+) (limited to 'src') diff --git a/src/corelib/global/qflags.h b/src/corelib/global/qflags.h index e181566fdb..b907caa9b6 100644 --- a/src/corelib/global/qflags.h +++ b/src/corelib/global/qflags.h @@ -145,6 +145,11 @@ public: Q_DECL_CONSTEXPR inline bool operator!() const Q_DECL_NOTHROW { return !i; } Q_DECL_CONSTEXPR inline bool testFlag(Enum f) const Q_DECL_NOTHROW { return (i & Int(f)) == Int(f) && (Int(f) != 0 || i == Int(f) ); } + Q_DECL_RELAXED_CONSTEXPR inline QFlags &setFlag(Enum f, bool on = true) Q_DECL_NOTHROW + { + return on ? (*this |= f) : (*this &= ~f); + } + private: #ifdef Q_COMPILER_INITIALIZER_LISTS Q_DECL_CONSTEXPR static inline Int initializer_list_helper(typename std::initializer_list::const_iterator it, diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 1227445f1e..a7ed29d859 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -425,6 +425,14 @@ Q_STATIC_ASSERT_X(QT_POINTER_SIZE == sizeof(void *), "QT_POINTER_SIZE defined in Returns \c true if the \a flag is set, otherwise \c false. */ +/*! + \fn QFlags QFlags::setFlag(Enum flag, bool on) const + \since 5.7 + + Sets the indicated \a flag if \a on is \c true or unsets it if + it if \a on is \c false. Returns a reference to this object. +*/ + /*! \macro Q_DISABLE_COPY(Class) \relates QObject -- cgit v1.2.3