main.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include <QApplication>
  2. #include <QFontDatabase>
  3. #include <QDebug>
  4. #include <QDialog>
  5. #include <QDateTime>
  6. #include "widget.h"
  7. #include "spdlog/spdlog.h"
  8. #ifdef Q_OS_WIN
  9. #include <windows.h>
  10. #include <dbghelp.h>
  11. #endif
  12. void addFont();
  13. #ifdef Q_OS_WIN
  14. // 异常处理函数
  15. LONG __stdcall ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
  16. {
  17. // 生成带时间戳的Dump文件名
  18. QString dumpFileName = QString("crash_%1.dmp")
  19. .arg(QDateTime::currentDateTime().toString(QStringLiteral("yyyyMMdd_hhmmss")));
  20. // QString dumpFileName = QString("crash_%1.dmp").arg(QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss"));
  21. HANDLE hDumpFile = CreateFileW( (LPCWSTR)dumpFileName.utf16(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr);
  22. if (hDumpFile != INVALID_HANDLE_VALUE) {
  23. // 定义Dump信息
  24. MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
  25. dumpInfo.ExceptionPointers = pException;
  26. dumpInfo.ThreadId = GetCurrentThreadId();
  27. dumpInfo.ClientPointers = TRUE;
  28. // 写入Dump文件
  29. MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, nullptr, nullptr);
  30. CloseHandle(hDumpFile);
  31. }
  32. // 这里可以添加错误提示、保存日志等操作
  33. // ...
  34. return EXCEPTION_EXECUTE_HANDLER;
  35. }
  36. #endif
  37. int main(int argc, char *argv[])
  38. {
  39. QApplication app(argc, argv);
  40. #ifdef Q_OS_WIN
  41. SetUnhandledExceptionFilter(ApplicationCrashHandler);
  42. #endif
  43. addFont();
  44. /* 设置日志输出等级 */
  45. spdlog::set_level(spdlog::level::debug);
  46. Widget w;
  47. w.show();
  48. SPDLOG_INFO("show1 start success");
  49. return app.exec();
  50. }
  51. /* 加载字体 */
  52. void addFont()
  53. {
  54. /* 加载字体 */
  55. QString fontPath = QApplication::applicationDirPath() + "/font/SiYuanBlack_ttf/";
  56. int id1 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_Bold.ttf)");
  57. int id2 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_M.ttf)");
  58. int id3 = QFontDatabase::addApplicationFont(fontPath + "/SiYuanBlack_R.ttf)");
  59. /***************************************************
  60. * 字体使用方式
  61. * id1 ("思源黑体-粗")
  62. * id2 ("思源黑体M")
  63. * id3 ("思源黑体R")
  64. ****************************************************/
  65. // SPDLOG_LOGGER_DEBUG(m_logger,"id1 = {}",QFontDatabase::applicationFontFamilies(id1));
  66. // SPDLOG_DEBUG("id1 = {}", QFontDatabase::applicationFontFamilies(id1));
  67. // SPDLOG_DEBUG("id2 = {}", QFontDatabase::applicationFontFamilies(id2));
  68. // SPDLOG_DEBUG("id3 = {}", QFontDatabase::applicationFontFamilies(id3));
  69. QFont font_main;
  70. font_main.setFamily("思源黑体R");
  71. font_main.setPixelSize(14);
  72. QApplication::setFont(font_main);
  73. }