You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/FlowApp/main.cpp

65 lines
2.7 KiB
C++

#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "MainWindowGenerator.h"
#include "GlobalDataFactory.h"
#include "ComponentFactory.h"
#include "CommandLineHandler.h"
#include "SignalProcessor.h"
#include "FlowAPPSettings.h"
#include "WorkBenchHandler.h"
#include "SystemChecker.h"
#ifdef Q_OS_WIN
#include <Windows.h>
#endif // Q_WIN
/**
* @brief
* @param argc
* @param argv
* @return int
* @author YanZhiHui(chanyuantiandao@126.com)
* @date 2024-04-19
*/
int main(int argc, char *argv[])
{
#ifdef Q_OS_WIN
//这个是Windows平台用来获取屏幕宽度的代码必须在QApplication实例化之前使用
//因为在qApplication实例初始化之前QGuiApplication::screens();无法使用。
//qreal cx = GetSystemMetrics(SM_CXSCREEN);
//qreal scale = cx / 1920;
//qputenv("QT_SCALE_FACTOR", QString::number(scale).toLatin1());
#endif // Q_WIN
//控制图片缩放质量
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
// 初始化应用框架
AppFrame::FITKApplication app(argc, argv);
#ifdef Q_OS_LINUX
qputenv("PYTHONHOME", app.applicationDirPath().toUtf8() + "/../Python37");
QStringList pythonPaths;
pythonPaths << app.applicationDirPath() + "/../Python37/bin";
pythonPaths << app.applicationDirPath() + "/../Python37/lib";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7/site-packages";
pythonPaths << app.applicationDirPath() + "/../Python37/lib/python3.7/lib-dynload";
qputenv("PYTHONPATH", pythonPaths.join(":").toUtf8());
#endif
app.checkSystem(new SystemChecker);
// 注册程序的主要组件和设置
app.regMainWindowGenerator(new MainWindowGenerator); // 注册主窗口生成器
app.regGlobalDataFactory(new GlobalDataFactory); // 注册全局数据工厂
app.regComponentsFactory(new ComponentFactory); // 注册组件工厂
app.regAppSettings(new FlowAPPSettings); // 注册应用结构设置
app.regCommandLineHandler(new CommandLineHandler); // 注册命令行处理
app.addGolbalSignalProcesser(new SignalProcessor); // 信号处理器
app.regWorkBenchHandler(new FlowAppWorkBenchHandler); //workbench处理
/*
app.regAppSettings(new StructuralSettings); // 注册应用结构设置
// 注册全局信号处理器
app.addGolbalSignalProcesser(new ThreadTaskProcessHandler);
//注册自定义事件处理
app.addEventFilter(new MouseKeyEventFilter);*/
// 运行应用程序的消息循环
return app.exec();
}