#include "DebuggerApplication.hpp" #include "Logger.hpp" #include #include #include DebuggerApplication::DebuggerApplication(int &argc, char **argv) : QApplication(argc, argv), mainWindowPtr(nullptr) { int fontId = QFontDatabase::addApplicationFont(":/msyh.ttc"); if (fontId != -1) { QString fontFamily = QFontDatabase::applicationFontFamilies(fontId).at(0); QFont font(fontFamily); font.setPointSize(10); setFont(font); } else { Logger::Tag("DebuggerApplication").w("Failed to load font."); } QFile styleFile(":/style.qss"); if (styleFile.open(QFile::ReadOnly | QFile::Text)) { QString style = QString::fromUtf8(styleFile.readAll()); setStyleSheet(style); styleFile.close(); } else { Logger::Tag("DebuggerApplication").w("Failed to load style."); } initMainWindow(); // 初始化串口读数线程 // QObject::connect(SerialPortObserver::get(), // &SerialPortObserver::signalDataReceived, mainWindowPtr, // &MainWindow::slotDataReceived); } void DebuggerApplication::initMainWindow() { mainWindowPtr = new MainWindow(); mainWindowPtr->setWindowTitle("串口调试助手"); mainWindowPtr->setWindowIcon(QIcon(":/application.png")); const QRect rect = primaryScreen()->availableGeometry(); mainWindowPtr->move((rect.width() - mainWindowPtr->width()) / 2, (rect.height() - mainWindowPtr->height()) / 2); mainWindowPtr->show(); Logger::Tag("DebuggerApplication").d("MainWindow initialized and shown."); } DebuggerApplication::~DebuggerApplication() { // QThread 子对象会随 Application 销毁自动 quit/wait delete mainWindowPtr; mainWindowPtr = nullptr; Logger::Tag("DebuggerApplication") .d("DebuggerApplication is being destroyed, cleaning up resources."); }