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

97 lines
7.1 KiB

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 "quiwidget.h"
// 引入自定义的 quiwidget.h 头文件,推测这里面包含了名为 QUIWidget 类的声明以及相关功能的定义,可能是用于构建应用程序界面等相关操作的自定义类。
#include <QApplication>
// 引入 QApplication 头文件QApplication 类是 Qt 应用程序的基础,用于管理应用程序的全局资源、事件循环等,每个 Qt 应用程序都需要创建一个该类的实例来启动。
#include "supermarket.h"
// 引入 supermarket.h 头文件,推测里面声明了 Supermarket 类,可能是与超市库存管理系统具体业务逻辑相关的类定义。
int main(int argc, char *argv[])
// 定义应用程序的主函数,是程序执行的入口点,接受命令行参数 argc参数个数和 argv参数数组
{
#if (QT_VERSION >= QT_VERSION_CHECK(5,6,0))
// 条件编译指令,判断当前 Qt 的版本是否大于等于 5.6.0。如果满足条件,则执行下面的代码。
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// 设置应用程序的属性,启用高 DPI 缩放功能。这使得应用程序在高分辨率屏幕下能够自动进行合适的缩放,以保证界面显示效果良好。
#endif
QApplication a(argc, argv);
// 创建 QApplication 类的实例 a用于启动整个 Qt 应用程序,传入命令行参数,它会初始化应用程序相关的各种资源,如事件循环等机制。
a.setFont(QFont("Microsoft Yahei", 9));
// 为应用程序设置默认字体,这里指定字体为 "Microsoft Yahei"(微软雅黑),字号为 9这样整个应用程序中的文本显示将使用该字体设置保证字体风格统一。
a.setWindowIcon(QIcon(":/main.ico"));
// 为应用程序设置窗口图标,通过加载资源文件中的图标文件(这里使用 Qt 的资源系统,":/main.ico" 表示图标资源的路径),使得应用程序在任务栏等地方显示对应的图标。
QUIWidget::setCode();
// 调用 QUIWidget 类的静态函数 setCode从函数名推测可能是用于设置一些编码相关的操作或者初始化与编码有关的内部状态但具体功能需要看 QUIWidget 类中该函数的实现。
QUIWidget::setTranslator(":/image/qt_zh_CN.qm");
// 调用 QUIWidget 类的静态函数 setTranslator传入一个翻译文件".qm" 文件是 Qt 用于国际化翻译的文件格式)的资源路径,可能是用于加载中文翻译相关的资源,实现界面语言的本地化。
QUIWidget::setTranslator(":/image/widgets.qm");
// 再次调用 setTranslator 函数传入另一个翻译文件的资源路径可能是针对特定的界面组件widgets加载对应的翻译资源进一步完善界面语言本地化功能。
//读取配置文件
QUIConfig::ConfigFile = QString("%1/%2").arg(QUIWidget::appPath()).arg("qui_config.ini");
// 设置配置文件的路径,通过将 QUIWidget 类中获取到的应用程序路径appPath 函数返回)和配置文件名 "qui_config.ini" 拼接起来,确定配置文件的完整路径,方便后续读取配置操作。
QUIConfig::ReadConfig();
// 调用 QUIConfig 类的静态函数 ReadConfig从函数名推测是用于读取之前设置好路径的配置文件内容以获取应用程序运行相关的各种配置参数等信息。
QUIWidget qui;
// 创建一个 QUIWidget 类的实例 qui可能代表应用程序的主窗口或者主要的界面容器后续会对其进行各种属性设置和操作。
Supermarket *creator = new Supermarket;
// 创建一个 Supermarket 类的指针 creator并通过 new 操作符在堆上分配内存创建一个 Supermarket 类的实例,推测这个实例用于实现超市库存管理系统的具体业务逻辑功能。
//设置主窗体
qui.setMainWidget(creator);
// 将之前创建的 Supermarket 类实例(代表具体业务逻辑部分)设置为 QUIWidget 实例 qui 的主部件,使得界面与业务逻辑进行关联,可能是用于显示业务相关的内容在主窗口中。
QObject::connect(&qui, SIGNAL(changeStyle(QString)), creator, SLOT(changeStyle(QString)));
// 使用 Qt 的信号与槽机制,建立一个连接。当 QUIWidget 实例 qui 发出 changeStyle(QString) 信号(信号携带一个 QString 类型的参数)时,对应的 Supermarket 实例 creator 的 changeStyle(QString) 槽函数将会被调用,实现界面样式改变与业务逻辑中相关样式处理的联动。
//设置标题
qui.setTitle("超市库存管理系统");
// 为 QUIWidget 实例 qui 设置窗口标题,使其在界面上显示为 "超市库存管理系统",明确应用程序的功能主题。
//设置标题文本居中
qui.setAlignment(Qt::AlignCenter);
// 设置 QUIWidget 实例 qui 的标题文本对齐方式为居中对齐,使得标题在标题栏中显示更美观、整齐。
//设置窗体可拖动大小
qui.setSizeGripEnabled(true);
// 启用 QUIWidget 实例 qui 的窗口大小调整功能,用户可以通过拖动窗口右下角等位置来改变窗口的大小,增加界面操作的灵活性。
//设置换肤下拉菜单可见
qui.setVisible(QUIWidget::BtnMenu, true);
// 设置 QUIWidget 实例 qui 中名为 BtnMenu 的部件(可能是换肤相关的下拉菜单按钮之类的组件)为可见状态,方便用户操作换肤功能。
//设置标题栏高度
qui.setTitleHeight(27);
// 设置 QUIWidget 实例 qui 的标题栏高度为 27 像素,用于调整界面的整体布局和外观显示效果。
//设置按钮宽度
//qui.setBtnWidth(50);
// 这行代码被注释掉了,从函数名推测原本可能是用于设置界面中按钮的宽度为 50 像素,但目前暂未启用该设置功能。
//设置左上角图标-图形字体
//qui.setIconMain(QChar(0xf099), 11);
// 这行代码被注释掉了,从函数名和参数推测可能是打算使用特定的图形字体字符(这里是十六进制编码为 0xf099 的字符)以及字号 11 来设置窗口左上角的图标,但目前没有实际执行该操作。
//设置左上角图标-图片文件
qui.setPixmap(QUIWidget::Lab_Ico, ":/main.ico");
// 使用指定的图片文件(通过资源路径 ":/main.ico" 加载)来设置 QUIWidget 实例 qui 中名为 Lab_Ico 的部件(可能是用于显示左上角图标的标签之类的组件)的图片内容,从而显示对应的图标。
qui.show();
// 调用 QUIWidget 实例 qui 的 show 函数,显示窗口及其包含的所有部件,将应用程序界面呈现给用户。
QUIConfig::CheckConfig();
// 调用 QUIConfig 类的静态函数 CheckConfig从函数名推测可能是用于检查配置文件中的参数是否合法、完整等情况确保应用程序按照正确的配置运行。
return a.exec();
// 启动应用程序的事件循环,使得应用程序能够响应各种用户交互事件(如鼠标点击、键盘输入等)以及系统事件,一直保持运行状态,直到应用程序被关闭,最后返回事件循环的执行结果。
}