. / Qt , .
Qt-namespace-aware: Qt .
backported ( ) compat,
void test() {
...
qDebug() << compat::qEnvironmentVariableIntValue("RUNMODE");
compat::QTimer::singleShot(1000, object, []{ ... });
}
, / compat ++ 17 . , / .
Backporting
, backport qEnvironmentVariableIntValue Qt 5.5:
namespace compat {
#if QT_VERSION >= QT_VERSION_CHECK(5,5,0)
#if __cplusplus >= 201703L
using QT_PREPEND_NAMESPACE(qEnvironmentVariableIntValue);
#else
int inline qEnvironmentVariableIntValue(const char *varName, bool *ok = {}) {
return QT_PREPEND_NAMESPACE(qEnvironmentVariableIntValue)(varName, ok);
}
#endif
#else
int qEnvironmentVariableIntValue(const char *varName, bool *ok = {});
#endif
}
namespace compat {
#if QT_VERSION < QT_VERSION_CHECK(5,5,0)
using QT_PREPEND_NAMESPACE(qgetenv);
int qEnvironmentVariableIntValue(const char *varName, bool *ok) {
return qgetenv(varName).toInt(ok, 0);
}
#endif
}
, Qt 5.4 QTimer::singleShot(int, QObject*, Functor), :
namespace compat {
#if QT_VERSION >= QT_VERSION_CHECK(5,4,0)
using QT_PREPEND_NAMESPACE(QTimer);
#else
using Q_QTimer = QT_PREPEND_NAMESPACE(QTimer);
class QTimer : public Q_QTimer {
Q_OBJECT
public:
#if __cplusplus >= 201703L
using Q_QTimer::Q_QTimer;
#else
QTimer(QObject *parent = {}) : Q_QTimer(parent) {}
#endif
template <class Functor> static void singleShot(int, QObject *, Functor &&);
};
template <class Functor>
void QTimer::singleShot(int msec, QObject *context, Functor &&fun) {
...
}
#endif
}