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