#include "mainwin.h" #include #include #include #include #include #include #ifdef _MSC_VER //MSVC编译器 #define _WINSOCKAPI_ #include #include #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif LONG WINAPI handleException(_EXCEPTION_POINTERS *excep) { QString errCode = QString::number(excep->ExceptionRecord->ExceptionCode, 16); QString errAddr = QString::number((uint)excep->ExceptionRecord->ExceptionAddress, 16); HANDLE hDumpFile = CreateFile(L"c:/ledset-crash.dmp", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hDumpFile == INVALID_HANDLE_VALUE) return EXCEPTION_CONTINUE_SEARCH; //未处理异常, 让 windows 弹出错误框并结束 (Qt会卡死一段时间) MINIDUMP_EXCEPTION_INFORMATION dumpInfo{GetCurrentThreadId(), excep, TRUE}; MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);//写入Dump文件内容 CloseHandle(hDumpFile); QMessageBox::critical(nullptr, "程序出错", "程序出错! (code: "+errCode+". addr: "+errAddr+")
请将C盘下的 ledok-crash.dmp 文件发送到 gangphon@qq.com 邮箱, 研发人员会尽快处理."); return EXCEPTION_EXECUTE_HANDLER; //已处理异常, 让 windows 正常结束 // EXCEPTION_CONTINUE_EXECUTION 已修复错误, 让 windows 从异常发生处继续执行 } #endif void test(); int main(int argc, char *argv[]) { QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); QApplication a(argc, argv); a.setStyle(QStyleFactory::create("Fusion")); a.setWindowIcon(QIcon(":/128.ico")); a.setStyleSheet(R"rrr( QLineEdit {border: 1px solid #777; border-radius: 2px; padding: 2px;} QAbstractScrollArea {border: 1px solid #777;} QTableView {gridline-color:#777;} QMessageBox {background: #333;} QGroupBox {border: 1px solid #777; border-radius: 3px; margin-top: 0.5em; padding-top: 0.4em;} QGroupBox::title {color: #fff; subcontrol-origin: margin; left: 0.5em;} QRadioButton::indicator {border-image: url(:/imgs/radio-un.png); width: 1em; height: 1em;} QRadioButton::indicator:checked {border-image: url(:/imgs/radio-check.png);} QCheckBox::indicator {border-image: url(:/imgs/checkbox-un.png); width: 1em; height: 1em;} QCheckBox::indicator:checked {border-image: url(:/imgs/checkbox-check.png);} QPushButton[ss="min"]{padding: 0; width: 30px; height: 25px; } QPushButton[ss="close"]{padding: 0; width: 30px; height: 25px; } QPushButton[ss="blue"] {background: #069;} )rrr"); /* */ QFont font; font.setFamilies(QStringList{"Arial","Microsoft YaHei UI"}); font.setPixelSize(14); a.setFont(font); QPalette plt = a.palette(); plt.setBrush(QPalette::Window, QColor(0x333333)); plt.setBrush(QPalette::WindowText, QColor(0xffffff)); plt.setBrush(QPalette::Base, QColor(0x222222)); plt.setBrush(QPalette::AlternateBase, QColor(0x333333)); plt.setBrush(QPalette::Text, QColor(0xffffff)); plt.setBrush(QPalette::PlaceholderText, QColor(0xaaaaaa)); plt.setBrush(QPalette::Button, QColor(0x555555)); plt.setBrush(QPalette::ButtonText, QColor(0xffffff)); plt.setBrush(QPalette::ToolTipBase, QColor(0x444466)); plt.setBrush(QPalette::ToolTipText, QColor(0xeeeeee)); plt.setBrush(QPalette::Light, QColor(0x444444)); plt.setBrush(QPalette::Midlight, QColor(0x666666)); plt.setBrush(QPalette::Mid, QColor(0x888888)); plt.setBrush(QPalette::Dark, QColor(0xaaaaaa)); plt.setBrush(QPalette::BrightText, QColor(0,0,0)); plt.setBrush(QPalette::Shadow, QColor(0xaaaaaa)); a.setPalette(plt); QTranslator translator; if(translator.load(QLocale::system(), "app", "_", ":/i18n")) a.installTranslator(&translator); QTranslator qtTrans; if(qtTrans.load(QLocale::system(), "qt", "_", ":/i18n")) a.installTranslator(&qtTrans); MainWin w; w.show(); #ifdef _MSC_VER SetUnhandledExceptionFilter(handleException); #endif //test(); return a.exec(); } void test() { }