Files
Renderive/YSGraphic_Core/base/Global.h
T
2026-06-16 13:33:27 +08:00

94 lines
3.0 KiB
C++

#pragma once
#include "../GlobalTypes.h"
#include "Core/Base/global_include.h"
#include <QThread>
#include <qrgb.h>
namespace YSG {
class LIB_DECL TimerThread : public QThread {
Q_OBJECT
public:
QList<Plot*> mPlots;
TimerThread();
void run() override;
};
class LIB_DECL Global : public QObject, public Psc::Singleton<Global> {
public:
int mTimerId{};
QMap<QString, TimerThread*> mTimerThreadMap;
int mInterval = 10;
void startAllTimeThread();
void timerEvent(QTimerEvent *event) override;
QVector<QRgb> mColorMap = getTurboColorGradient();
};
}
#define QLOG_POS QString(__func__) + QString(" ") + __FILE__ + QString(":") + QString::number(__LINE__)
template<typename, typename = void>
struct has_qdebug_stream : std::false_type {};
template<typename T>
struct has_qdebug_stream<T,
std::void_t<
decltype(
std::declval<QDebug&>() << std::declval<T>()
)
>
> : std::true_type {};
template <typename T>
QString to_qstring(const T& value)
{
using C = std::decay_t<T>;
if constexpr (has_qdebug_stream<C>::value)
{
QString s;
QDebug dbg(&s);
dbg << value;
return s;
}
else
{
static_assert(sizeof(C) == 0,
"Psc: to_qstring type error");
}
return "";
}
// // 通用模板
// template <typename T>
// QString to_qstring(const T& value) {
// static_assert(std::is_arithmetic<T>::value, "T must be an arithmetic type");
// return QString::number(value);
// }
//
// inline QString to_qstring(const char* value) {
// return value;
// }
//
// inline QString to_qstring(const QString& value) {
// return value;
// }
// 特化模板:处理 bool 类型
template <>
inline QString to_qstring(const bool& value) {
return value ? QStringLiteral("true") : QStringLiteral("false");
}
#define VAR_QSTR(P) ("[" + to_qstring(#P) + "]:" + to_qstring(P) + to_qstring(", "))
#define VAR_QSTR_1(P1) VAR_QSTR(P1)
#define VAR_QSTR_2(P1, P2) VAR_QSTR_1(P1) + VAR_QSTR(P2)
#define VAR_QSTR_3(P1, P2, P3) VAR_QSTR_2(P1, P2) + VAR_QSTR(P3)
#define VAR_QSTR_4(P1, P2, P3, P4) VAR_QSTR_3(P1, P2, P3) + VAR_QSTR(P4)
#define VAR_QSTR_5(P1, P2, P3, P4, P5) VAR_QSTR_4(P1, P2, P3, P4) + VAR_QSTR(P5)
#define VAR_QSTR_6(P1, P2, P3, P4, P5, P6) VAR_QSTR_5(P1, P2, P3, P4, P5) + VAR_QSTR(P6)
#define VAR_QSTR_7(P1, P2, P3, P4, P5, P6, P7) VAR_QSTR_6(P1, P2, P3, P4, P5, P6) + VAR_QSTR(P7)
#define VAR_QSTR_8(P1, P2, P3, P4, P5, P6, P7, P8) VAR_QSTR_7(P1, P2, P3, P4, P5, P6, P7) + VAR_QSTR(P8)
#define VAR_QSTR_9(P1, P2, P3, P4, P5, P6, P7, P8, P9) VAR_QSTR_8(P1, P2, P3, P4, P5, P6, P7, P8) + VAR_QSTR(P9)
#define VAR_QSTR_10(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) VAR_QSTR_9(P1, P2, P3, P4, P5, P6, P7, P8, P9) + VAR_QSTR(P10)