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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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();
}