#include #include #include #include #include #include "widget.h" #include "spdlog/spdlog.h" #ifdef Q_OS_WIN #include #include #endif void addFont(); #ifdef Q_OS_WIN // 异常处理函数 LONG __stdcall ApplicationCrashHandler(EXCEPTION_POINTERS *pException) { // 生成带时间戳的Dump文件名 QString dumpFileName = QString("crash_%1.dmp") .arg(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmss"))); // QString dumpFileName = QString("crash_%1.dmp").arg(QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss")); HANDLE hDumpFile = CreateFileW( (LPCWSTR)dumpFileName.utf16(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); if (hDumpFile != INVALID_HANDLE_VALUE) { // 定义Dump信息 MINIDUMP_EXCEPTION_INFORMATION dumpInfo; dumpInfo.ExceptionPointers = pException; dumpInfo.ThreadId = GetCurrentThreadId(); dumpInfo.ClientPointers = TRUE; // 写入Dump文件 MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, nullptr, nullptr); CloseHandle(hDumpFile); } // 这里可以添加错误提示、保存日志等操作 // ... return EXCEPTION_EXECUTE_HANDLER; } #endif int main(int argc, char *argv[]) { QApplication app(argc, argv); #ifdef Q_OS_WIN SetUnhandledExceptionFilter(ApplicationCrashHandler); #endif addFont(); /* 设置日志输出等级 */ spdlog::set_level(spdlog::level::debug); Widget w; w.show(); SPDLOG_INFO("show1 start success"); return app.exec(); } /* 加载字体 */ void addFont() { /* 加载字体 */ QString fontPath = QApplication::applicationDirPath() + "/font/SiYuanBlack_ttf/"; int id1 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_Bold.ttf)"); int id2 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_M.ttf)"); int id3 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_R.ttf)"); /*************************************************** * 字体使用方式 * id1 ("思源黑体-粗") * id2 ("思源黑体M") * id3 ("思源黑体R") ****************************************************/ // SPDLOG_LOGGER_DEBUG(m_logger,"id1 = {}",QFontDatabase::applicationFontFamilies(id1)); // SPDLOG_DEBUG("id1 = {}", QFontDatabase::applicationFontFamilies(id1)); // SPDLOG_DEBUG("id2 = {}", QFontDatabase::applicationFontFamilies(id2)); // SPDLOG_DEBUG("id3 = {}", QFontDatabase::applicationFontFamilies(id3)); QFont font_main; font_main.setFamily("思源黑体R"); font_main.setPixelSize(14); QApplication::setFont(font_main); }