qt集成管理后台前端vue框架进行C++和html混合编程-连载【7】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)

时间:2025-05-10 07:46:56
/** @file @author Stefan Frings */ #include "" #include <QtWidgets/QApplication> #include <QWebEngineView> #include <QCoreApplication> #include <QDir> #include "src\" #include "httpserver\" #include "src\" #include <QtSql\> #include <QtSql> #include <QSqlRecord> #include <QMessageBox> #include <QtDebug> #include <QtWidgets\> #include <QtSql\> #include "src\models\" #include "src\controller\" #include "src\db\" using namespace stefanfrings; /** Search the configuration file */ QString searchConfigFile() { QString binDir = QCoreApplication::applicationDirPath(); QString appName = QCoreApplication::applicationName(); QString fileName(appName + ".ini"); QStringList searchList; searchList.append(binDir); searchList.append(binDir + "/etc"); searchList.append(binDir + "/../etc"); searchList.append(binDir + "/../../etc"); // for development without shadow build searchList.append(binDir + "/../" + appName + "/etc"); // for development with shadow build searchList.append(binDir + "/../../" + appName + "/etc"); // for development with shadow build searchList.append(binDir + "/../../../" + appName + "/etc"); // for development with shadow build searchList.append(binDir + "/../../../../" + appName + "/etc"); // for development with shadow build searchList.append(binDir + "/../../../../../" + appName + "/etc"); // for development with shadow build searchList.append(QDir::rootPath() + "etc/opt"); searchList.append(QDir::rootPath() + "etc"); foreach(QString dir, searchList) { QFile file(dir + "/" + fileName); if (file.exists()) { // found fileName = QDir(file.fileName()).canonicalPath(); qDebug("Using config file %s", qPrintable(fileName)); return fileName; } } // not found foreach(QString dir, searchList) { qWarning("%s/%s not found", qPrintable(dir), qPrintable(fileName)); } qFatal("Cannot find config file %s", qPrintable(fileName)); } /** Entry point of the program. */ int main(int argc, char* argv[]) { QApplication app(argc, argv); app.setApplicationName("BitPos"); app.setOrganizationName("BitPos"); // Find the configuration file QString configFileName = searchConfigFile(); DbHelper::NewIntance(configFileName); // // Configure logging into a file 该功能有bug,暂时不开放。 //QSettings* logSettings = new QSettings(configFileName, QSettings::IniFormat, &app); //logSettings->beginGroup("logging"); //FileLogger* logger = new FileLogger(logSettings, 10000, &app); //logger->installMsgHandler(); // Configure template loader and cache QSettings* templateSettings = new QSettings(configFileName, QSettings::IniFormat, &app); templateSettings->beginGroup("templates"); templateCache = new TemplateCache(templateSettings, &app); // Configure session store QSettings* sessionSettings = new QSettings(configFileName, QSettings::IniFormat, &app); sessionSettings->beginGroup("sessions"); sessionStore = new HttpSessionStore(sessionSettings, &app); // Configure static file controller QSettings* fileSettings = new QSettings(configFileName, QSettings::IniFormat, &app); fileSettings->beginGroup("docroot"); staticFileController = new StaticFileController(fileSettings, &app); // Configure and start the TCP listener QSettings* listenerSettings = new QSettings(configFileName, QSettings::IniFormat, &app); listenerSettings->beginGroup("listener"); new HttpListener(listenerSettings, new RequestMapper(&app), &app); qInfo("Application has started"); BitPos pos; pos.show(); int r= app.exec(); pos.ClearCache(); qInfo("Application has stopped"); return r; }