#ifndef APPEVENT_H #define APPEVENT_H #include #include #include "qdebug.h" class OpTime { public: OpTime(const QString &_name) : name(_name) { elapsedTimer.restart(); } ~OpTime() { qDebug() << name << elapsedTimer.elapsed(); } private: QString name; QElapsedTimer elapsedTimer; }; class AppEvent : public QObject { Q_OBJECT explicit AppEvent(QObject *parent = nullptr); ~AppEvent(); public: static AppEvent *instance(); // 静态方法返回单例实例 static qint64 time(); // 教室判断是否登录 bool isLogin(); void setJwtToken(const QString &token); QString jwtToken() const; bool isRefreshToken() const; void setRefreshTime(qint64 time) const; // 考试配置 void setExam(const QString &examRoom, const QString &examNumber); QString examRoom() const; QString examNumber() const; // 配置 bool setConfigValue(const QString &key, const QVariant &value); QVariant configValue(const QString &key); bool configLoadJson(const QJsonObject &object); bool configLoad(); bool configSave(); QJsonObject config() const; // 自己得配置不导出到客户端的 QStringList configFilter() const; ; // 更新数据 void loginUser(qint64 id); void loginOutUser(qint64 id); //更新考试信息 void examsTestUpdate(); void webSocketUpdata(); void examQuestionChenge() { emit examQuestionChengeSignal(); } signals: void loginUserSignal(qint64 id); void loginOutUserSignal(qint64 id); void examsTestUpdateSignal(); void webSocketUpdataSignal(); void examQuestionChengeSignal(); private: class AppEventPrivate *d; }; #endif // APPEVENT_H