Compare commits

..

11 Commits

@ -1,415 +1,164 @@
#############################################################################
# Makefile for building: Demo2
# 这是用于构建名为 "Demo2" 项目的 Makefile 文件,下面说明了它是由 qmake 工具生成的相关信息
# Generated by qmake (3.1) (Qt 5.9.9)
# Project: ..\supermarket\Demo2.pro
# Project: ..\supermarket\Demo2.pro
# Template: app
# Command: D:\qt\5.9.9\mingw53_32\bin\qmake.exe -o Makefile ..\supermarket\Demo2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
# Command: D:\qt\5.9.9\mingw53_32\bin\qmake.exe -o Makefile..\supermarket\Demo2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
#############################################################################
# 定义变量 MAKEFILE其值为 "Makefile",通常代表这个 Makefile 自身的文件名(后续很多地方会基于此引用 Makefile
MAKEFILE = Makefile
# 定义默认的构建目标,这里 "first" 目标依赖于 "debug" 目标,意味着执行 "make first" 命令时会先执行 "debug" 相关构建操作
first: debug
# "install" 目标依赖于 "debug-install",可能用于在调试模式构建后进行安装相关操作
install: debug-install
# "uninstall" 目标依赖于 "debug-uninstall",用于在调试模式构建后执行卸载相关操作
uninstall: debug-uninstall
# 定义变量 QMAKE其值为 Qt 的 qmake 可执行文件的路径qmake 用于生成 Makefile 等构建相关配置
QMAKE = D:\qt\5.9.9\mingw53_32\bin\qmake.exe
# 定义变量 DEL_FILE用于删除文件的命令这里是 Windows 下的 "del" 命令
DEL_FILE = del
# 定义变量 CHK_DIR_EXISTS用于检查目录是否存在的命令这里使用的是 Windows 下的条件判断语句格式
CHK_DIR_EXISTS= if not exist
# 定义变量 MKDIR用于创建目录的命令对应 Windows 下的 "mkdir" 命令
MKDIR = mkdir
# 定义变量 COPY用于复制文件的命令这里使用的是 Windows 下带确认覆盖(/y 参数)的 "copy" 命令
COPY = copy /y
# 定义变量 COPY_FILE同样是用于复制文件的命令也是 "copy /y",功能和上面的 COPY 类似,可能在不同场景使用
COPY_FILE = copy /y
# 定义变量 COPY_DIR用于复制目录的命令使用的是 Windows 下带特定参数(/s 递归、/q 安静模式、/y 确认覆盖、/i 如果目标不存在则创建目录等)的 "xcopy" 命令
COPY_DIR = xcopy /s /q /y /i
# 定义变量 INSTALL_FILE用于安装文件的命令同样是 "copy /y",可能在安装文件到特定位置时使用
INSTALL_FILE = copy /y
# 定义变量 INSTALL_PROGRAM也是用于安装程序相关文件的命令同样为 "copy /y",可能针对可执行程序等的安装
INSTALL_PROGRAM = copy /y
# 定义变量 INSTALL_DIR用于安装目录的命令也是 "xcopy /s /q /y /i",功能类似 COPY_DIR在安装整个目录结构时使用
INSTALL_DIR = xcopy /s /q /y /i
# 定义变量 QINSTALL用于执行 Qt 特定的安装相关操作,调用 qmake 并带上 "-install qinstall" 参数
QINSTALL = D:\qt\5.9.9\mingw53_32\bin\qmake.exe -install qinstall
# 类似 QINSTALL不过这里多了 "-exe" 参数,可能针对可执行文件的 Qt 安装操作有特殊处理
QINSTALL_PROGRAM = D:\qt\5.9.9\mingw53_32\bin\qmake.exe -install qinstall -exe
# 再次定义 DEL_FILE和前面的重复定义可能后续代码修改等原因导致不过这里还是对应 "del" 命令用于删除文件
DEL_FILE = del
# 定义变量 SYMLINK用于创建符号链接的命令通过调用 qmake 并传递一些参数来实现创建链接的功能
SYMLINK = $(QMAKE) -install ln -f -s
# 定义变量 DEL_DIR用于删除目录的命令对应 Windows 下的 "rmdir" 命令
DEL_DIR = rmdir
# 定义变量 MOVE用于移动文件或目录的命令对应 Windows 下的 "move" 命令
MOVE = move
# 定义变量 SUBTARGETS它列出了一些子目标包括 "debug" 和 "release",后续很多构建相关的操作会基于这些子目标细分
SUBTARGETS = \
debug \
release
debug \
release
# "debug" 目标,它是一个伪目标(没有实际对应的文件生成),通过执行 "make -f $(MAKEFILE).Debug" 命令来构建调试版本相关内容
debug: FORCE
$(MAKE) -f $(MAKEFILE).Debug
$(MAKE) -f $(MAKEFILE).Debug
# "debug-make_first" 目标,同样是执行调试版本下的 "make_first" 相关操作(具体看对应的 Makefile.Debug 文件中的定义)
debug-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Debug
$(MAKE) -f $(MAKEFILE).Debug
# "debug-all" 目标,执行调试版本下的所有构建操作(由对应的 Makefile.Debug 文件中定义的 "all" 目标相关规则来执行)
debug-all: FORCE
$(MAKE) -f $(MAKEFILE).Debug all
$(MAKE) -f $(MAKEFILE).Debug all
# "debug-clean" 目标,用于清理调试版本构建产生的临时文件等(由 Makefile.Debug 中定义的 "clean" 目标相关规则执行)
debug-clean: FORCE
$(MAKE) -f $(MAKEFILE).Debug clean
$(MAKE) -f $(MAKEFILE).Debug clean
# "debug-distclean" 目标,进行更彻底的清理,比如删除构建生成的文件以及 Makefile 等相关配置文件(同样依赖 Makefile.Debug 中的定义)
debug-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Debug distclean
$(MAKE) -f $(MAKEFILE).Debug distclean
# "debug-install" 目标,执行调试版本构建后的安装操作(由 Makefile.Debug 中相关安装规则来执行)
debug-install: FORCE
$(MAKE) -f $(MAKEFILE).Debug install
$(MAKE) -f $(MAKEFILE).Debug install
# "debug-uninstall" 目标,执行调试版本构建后的卸载操作(由 Makefile.Debug 中相关卸载规则来执行)
debug-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Debug uninstall
$(MAKE) -f $(MAKEFILE).Debug uninstall
# "release" 目标,和 "debug" 目标类似,不过是用于构建发布版本,通过执行 "make -f $(MAKEFILE).Release" 命令来构建发布版本相关内容
release: FORCE
$(MAKE) -f $(MAKEFILE).Release
$(MAKE) -f $(MAKEFILE).Release
# "release-make_first" 目标,执行发布版本下的 "make_first" 相关操作(具体看对应的 Makefile.Release 文件中的定义)
release-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Release
$(MAKE) -f $(MAKEFILE).Release
# "release-all" 目标,执行发布版本下的所有构建操作(由对应的 Makefile.Release 文件中定义的 "all" 目标相关规则来执行)
release-all: FORCE
$(MAKE) -f $(MAKEFILE).Release all
$(MAKE) -f $(MAKEFILE).Release all
# "release-clean" 目标,用于清理发布版本构建产生的临时文件等(由 Makefile.Release 中定义的 "clean" 目标相关规则执行)
release-clean: FORCE
$(MAKE) -f $(MAKEFILE).Release clean
$(MAKE) -f $(MAKEFILE).Release clean
# "release-distclean" 目标,进行更彻底的清理,比如删除构建生成的文件以及 Makefile 等相关配置文件(同样依赖 Makefile.Release 中的定义)
release-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Release distclean
$(MAKE) -f $(MAKEFILE).Release distclean
# "release-install" 目标,执行发布版本构建后的安装操作(由 Makefile.Release 中相关安装规则来执行)
release-install: FORCE
$(MAKE) -f $(MAKEFILE).Release install
$(MAKE) -f $(MAKEFILE).Release install
# "release-uninstall" 目标,执行发布版本构建后的卸载操作(由 Makefile.Release 中相关卸载规则来执行)
release-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Release uninstall
Makefile: ../supermarket/Demo2.pro D:/qt/5.9.9/mingw53_32/mkspecs/win32-g++/qmake.conf D:/qt/5.9.9/mingw53_32/mkspecs/features/spec_pre.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/qdevice.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/features/device_config.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/sanitize.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/gcc-base.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/g++-base.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/angle.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/qconfig.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_accessibility_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bootstrap_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designercomponents_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_egl_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fb_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_location.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_location_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimedia.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimedia_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_network.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_network_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_nfc.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_nfc_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_opengl.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_opengl_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_openglextensions.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_openglextensions_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_packetprotocol_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_positioning.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_positioning_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_printsupport.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_printsupport_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qml.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qml_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmldebug_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmldevtools_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmltest.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmltest_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quick.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quick_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickparticles_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickwidgets.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickwidgets_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_scxml.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_scxml_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sensors.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sensors_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialbus.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialbus_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialport.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialport_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sql.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sql_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_svg.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_svg_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_testlib.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_testlib_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_theme_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uiplugin.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uitools.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uitools_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_webchannel.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_webchannel_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_websockets.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_websockets_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_widgets.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_widgets_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_winextras.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_winextras_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xml.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xml_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt_functions.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt_config.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/win32-g++/qmake.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/spec_post.prf \
.qmake.stash \
D:/qt/5.9.9/mingw53_32/mkspecs/features/exclusive_builds.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/toolchain.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/default_pre.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/default_pre.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/resolve_config.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/exclusive_builds_post.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/default_post.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/qml_debug.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/precompile_header.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/warn_on.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/resources.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/moc.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/opengl.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/uic.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/qmake_use.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/file_copies.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/windows.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/testcase_targets.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/exceptions.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/yacc.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/features/lex.prf \
../supermarket/Demo2.pro \
D:/qt/5.9.9/mingw53_32/lib/qtmaind.prl \
D:/qt/5.9.9/mingw53_32/lib/Qt5Widgets.prl \
D:/qt/5.9.9/mingw53_32/lib/Qt5Gui.prl \
D:/qt/5.9.9/mingw53_32/lib/Qt5Network.prl \
D:/qt/5.9.9/mingw53_32/lib/Qt5Core.prl
$(QMAKE) -o Makefile ..\supermarket\Demo2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
D:/qt/5.9.9/mingw53_32/mkspecs/features/spec_pre.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/qdevice.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/features/device_config.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/common/sanitize.conf:
D:/qt/5.9.9/mingw53_32/mkspecs/common/gcc-base.conf:
D:/qt/5.9.9/mingw53_32/mkspecs/common/g++-base.conf:
D:/qt/5.9.9/mingw53_32/mkspecs/common/angle.conf:
D:/qt/5.9.9/mingw53_32/mkspecs/qconfig.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_accessibility_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bootstrap_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designercomponents_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_egl_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fb_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_location.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_location_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimedia.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimedia_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_network.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_network_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_nfc.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_nfc_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_opengl.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_opengl_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_openglextensions.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_openglextensions_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_packetprotocol_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_positioning.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_positioning_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_printsupport.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_printsupport_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qml.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qml_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmldebug_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmldevtools_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmltest.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qmltest_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quick.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quick_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickparticles_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickwidgets.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_quickwidgets_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_scxml.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_scxml_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sensors.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sensors_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialbus.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialbus_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialport.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_serialport_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sql.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_sql_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_svg.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_svg_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_testlib.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_testlib_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_theme_support_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uiplugin.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uitools.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_uitools_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_webchannel.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_webchannel_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_websockets.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_websockets_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_widgets.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_widgets_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_winextras.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_winextras_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xml.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xml_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt_functions.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt_config.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/win32-g++/qmake.conf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/spec_post.prf:
.qmake.stash:
D:/qt/5.9.9/mingw53_32/mkspecs/features/exclusive_builds.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/toolchain.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/default_pre.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/default_pre.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/resolve_config.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/exclusive_builds_post.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/default_post.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/qml_debug.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/precompile_header.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/warn_on.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/qt.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/resources.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/moc.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/opengl.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/uic.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/qmake_use.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/file_copies.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/win32/windows.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/testcase_targets.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/exceptions.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/yacc.prf:
D:/qt/5.9.9/mingw53_32/mkspecs/features/lex.prf:
../supermarket/Demo2.pro:
D:/qt/5.9.9/mingw53_32/lib/qtmaind.prl:
D:/qt/5.9.9/mingw53_32/lib/Qt5Widgets.prl:
D:/qt/5.9.9/mingw53_32/lib/Qt5Gui.prl:
D:/qt/5.9.9/mingw53_32/lib/Qt5Network.prl:
D:/qt/5.9.9/mingw53_32/lib/Qt5Core.prl:
qmake: FORCE
@$(QMAKE) -o Makefile ..\supermarket\Demo2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
qmake_all: FORCE
make_first: debug-make_first release-make_first FORCE
all: debug-all release-all FORCE
clean: debug-clean release-clean FORCE
distclean: debug-distclean release-distclean FORCE
-$(DEL_FILE) Makefile
-$(DEL_FILE) .qmake.stash
debug-mocclean:
$(MAKE) -f $(MAKEFILE).Debug mocclean
release-mocclean:
$(MAKE) -f $(MAKEFILE).Release mocclean
mocclean: debug-mocclean release-mocclean
debug-mocables:
$(MAKE) -f $(MAKEFILE).Debug mocables
release-mocables:
$(MAKE) -f $(MAKEFILE).Release mocables
mocables: debug-mocables release-mocables
check: first
benchmark: first
FORCE:
$(MAKE) -f $(MAKEFILE).Release uninstall
$(MAKEFILE).Debug: Makefile
$(MAKEFILE).Release: Makefile
# "Makefile" 目标,它依赖于一系列的文件和配置文件,这些文件大多是和 Qt 的构建配置、模块定义等相关的,
# 最后通过执行特定的 qmake 命令来重新生成 Makefile 文件(用于更新构建配置等情况)
Makefile:../supermarket/Demo2.pro D:/qt/5.9.9/mingw53_32/mkspecs/win32-g++/qmake.conf D:/qt/5.9.9/mingw53_32/mkspecs/features/spec_pre.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/qdevice.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/features/device_config.prf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/sanitize.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/gcc-base.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/g++-base.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/common/angle.conf \
D:/qt/5.9.9/mingw53_32/mkspecs/qconfig.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3danimation_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dcore_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dextras_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dinput_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dlogic_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquick_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickextras_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickinput_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickrender_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_3drender_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_accessibility_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axbase_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axcontainer_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_axserver_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bluetooth_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_bootstrap_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_concurrent_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_core_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_dbus_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designer_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_designercomponents_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_egl_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fb_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gamepad_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_gui_private.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help.pri \
D:/qt/5.9.9/mingw53_32/mkspecs/modules/qt_lib_help_p

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/supermarket.iml" filepath="$PROJECT_DIR$/.idea/supermarket.iml" />
</modules>
</component>
</project>

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

@ -5,8 +5,23 @@ QMAKE_DEFAULT_INCDIRS = \
D:/Software/MinGW-w64/mingw32/lib/gcc/i686-w64-mingw32/7.2.0/include \
D:/Software/MinGW-w64/mingw32/lib/gcc/i686-w64-mingw32/7.2.0/include-fixed \
D:/Software/MinGW-w64/mingw32/i686-w64-mingw32/include
// QMAKE_DEFAULT_INCDIRS变量定义了编译器搜索头文件的路径列表。
// 这些路径包括:
// - i686-w64-mingw32/7.2.0/include/c++: GCC编译器C++标准库头文件路径。
// - i686-w64-mingw32/7.2.0/include/c++/i686-w64-mingw32: 特定于目标架构的C++头文件路径。
// - i686-w64-mingw32/7.2.0/include/c++/backward: 兼容旧版本的C++头文件路径。
// - i686-w64-mingw32/7.2.0/include: GCC编译器其他头文件路径。
// - i686-w64-mingw32/7.2.0/include-fixed: 包含固定名称头文件的路径。
// - i686-w64-mingw32/include: MinGW-w64系统头文件路径。
QMAKE_DEFAULT_LIBDIRS = \
D:/Software/MinGW-w64/mingw32/lib/gcc/i686-w64-mingw32/7.2.0 \
D:/Software/MinGW-w64/mingw32/lib/gcc \
D:/Software/MinGW-w64/mingw32/i686-w64-mingw32/lib \
D:/Software/MinGW-w64/mingw32/lib
// QMAKE_DEFAULT_LIBDIRS变量定义了编译器搜索库文件的路径列表。
// 这些路径包括:
// - lib/gcc/i686-w64-mingw32/7.2.0: GCC编译器特定版本的库文件路径。
// - lib/gcc: GCC编译器通用库文件路径。
// - i686-w64-mingw32/lib: MinGW-w64架构相关的库文件路径。
// - lib: MinGW-w64通用库文件路径。

@ -5,47 +5,66 @@
#-------------------------------------------------
QT += core gui
# 指定项目需要使用的Qt模块这里添加了core核心模块和gui图形用户界面模块
QT += network
# 添加了network模块用于网络功能
CONFIG += c++11
# 配置项目以使用C++11标准
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 如果Qt版本大于4则添加widgets模块这是为了兼容旧版本的Qt
TARGET = Demo2
# 指定项目的输出目标可执行文件名称为Demo2
TEMPLATE = app
# 指定项目的模板类型为应用程序app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# 如果使用被标记为弃用deprecated的Qt特性则编译器会发出警告
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# 如果使用了在Qt 6.0.0之前被弃用的API则代码将无法编译这行被注释掉了,需要时可以取消注释
SOURCES += main.cpp\
quiwidget.cpp \
supermarket.cpp
# 指定项目的源文件这里是main.cpp和其他两个.cpp文件
HEADERS += \
quiwidget.h \
head.h \
supermarket.h
# 指定项目的头文件
FORMS += \
supermarket.ui
# 指定项目的UI文件这里是使用Qt Designer设计的界面文件
RESOURCES += \
main.qrc \
qss.qrc \
demo.qrc \
image.qrc
# 指定项目的资源文件,这些文件包含了图标样式表等资源
DISTFILES += \
Demo2.pro.user \
main.ico \
image/Font Awesome Cheatsheet.png
QT += network
# 指定项目分发时需要包含的额外文件
QT += network
# 再次添加network模块可能是为了强调或重复添加
RC_FILE=icon.rc
# 指定Windows资源文件通常用于版本信息和图标等

@ -1,39 +1,43 @@
; Script generated by the Inno Setup Script Wizard.
; 这是由 Inno Setup 脚本向导生成的脚本,下面提示查看文档获取创建 Inno Setup 脚本文件的详细信息
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "QNeuSupermarket"
#define MyAppVersion "1.2"
#define MyAppPublisher "QNeuSupermarket"
#define MyAppURL "http://60.205.215.163/"
#define MyAppExeName "QNeuSupermarket.exe"
; 以下是定义的一些常量,方便后续在脚本中引用,用于表示应用程序相关的各种属性
#define MyAppName "QNeuSupermarket" ; 定义应用程序的名称
#define MyAppVersion "1.2" ; 定义应用程序的版本号
#define MyAppPublisher "QNeuSupermarket" ; 定义应用程序的发布者
#define MyAppURL "http://60.205.215.163/" ; 定义应用程序相关的网址,比如发布者网址、支持网址、更新网址等都会使用到它
#define MyAppExeName "QNeuSupermarket.exe" ; 定义应用程序可执行文件的名称
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
; 安装程序的基本设置部分
; 注意AppId 的值唯一标识这个应用程序,不要在其他应用程序的安装程序中使用相同的 AppId 值。
; (要生成新的 GUID可以在 IDE 中点击 Tools | Generate GUID
AppId={{228AD296-F54D-45A3-8EED-7C7B741B203F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
LicenseFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\release\license.txt
InfoAfterFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\release\help.txt
OutputDir=C:\Program Files
OutputBaseFilename=QNeuSupermarketSetup
SetupIconFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\main.ico
Compression=lzma
SolidCompression=yes
AppName={#MyAppName} ; 使用前面定义的常量作为应用程序名称
AppVersion={#MyAppVersion} ; 使用前面定义的常量作为应用程序版本号
;AppVerName={#MyAppName} {#MyAppVersion} ; 这行被注释掉了,原本可能用于设置显示版本相关的名称,格式为应用程序名 + 版本号
AppPublisher={#MyAppPublisher} ; 使用前面定义的常量作为应用程序发布者
AppPublisherURL={#MyAppURL} ; 使用前面定义的常量作为应用程序发布者的网址
AppSupportURL={#MyAppURL} ; 使用前面定义的常量作为应用程序支持网址
AppUpdatesURL={#MyAppURL} ; 使用前面定义的常量作为应用程序更新网址
DefaultDirName={pf}\{#MyAppName} ; 设置默认的安装目录,{pf} 通常代表 Program Files 文件夹,后面跟上应用程序名称
DefaultGroupName={#MyAppName} ; 设置在开始菜单中创建的程序组的默认名称,使用应用程序名称
AllowNoIcons=yes ; 允许在安装时不创建图标(比如不在开始菜单或桌面创建快捷方式图标等情况)
LicenseFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\release\license.txt ; 指定许可文件的路径,安装过程中可能会展示许可协议内容
InfoAfterFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\release\help.txt ; 指定安装完成后显示的帮助文件的路径
OutputDir=C:\Program Files ; 输出安装文件的目录,即生成的安装程序最终放置的位置
OutputBaseFilename=QNeuSupermarketSetup ; 输出的安装程序的基础文件名,最终生成的安装文件名可能以此为基础
SetupIconFile=D:\FangCloudV2\Qdoor\Programmers\Demo2\main.ico ; 指定安装程序的图标文件路径
Compression=lzma ; 设置安装文件的压缩方式为 lzma 算法
SolidCompression=yes ; 启用固态压缩,有助于提高压缩效率
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
; 定义安装程序支持的语言,每种语言对应一个 MessagesFile用于加载相应语言的文本消息
Name: "english"; MessagesFile: "compiler:Default.isl" ; 支持英语,对应的消息文件路径
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" ; 支持巴西葡萄牙语,对应相应的消息文件路径
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl" ; 支持加泰罗尼亚语,以此类推……
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
@ -59,12 +63,14 @@ Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1
; 定义安装过程中的可选任务(比如创建桌面图标、快速启动栏图标等)
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked ; 定义创建桌面图标的任务,初始未勾选状态,通过相应文本标识来描述任务相关内容
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 ; 定义创建快速启动栏图标的任务,初始未勾选状态,并且限定在版本低于 0.6.1 时可用(可能是针对旧系统等情况的兼容设置)
[Files]
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\QNeuSupermarket.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\D3Dcompiler_47.dll"; DestDir: "{app}"; Flags: ignoreversion
; 定义要安装到目标系统的文件,包括源文件路径和目标安装目录等信息
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\QNeuSupermarket.exe"; DestDir: "{app}"; Flags: ignoreversion ; 将指定路径的可执行文件安装到 {app} 表示的目录(通常就是安装目录),并且忽略版本检查(即不管目标系统是否已存在同名但不同版本的文件,都会进行安装覆盖等操作)
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\D3Dcompiler_47.dll"; DestDir: "{app}"; Flags: ignoreversion ; 安装相应的动态链接库文件到安装目录,同样忽略版本检查,以下类似……
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\Des3.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\help.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\icon_res.o"; DestDir: "{app}"; Flags: ignoreversion
@ -100,22 +106,23 @@ Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\Qt5Svg.dll"; DestDir: "{
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\Qt5Widgets.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\quiwidget.o"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\supermarket.o"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\bearer\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\bearer\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; 将指定目录下的所有文件(包括子目录中的文件)安装到 {app} 目录,会递归处理子目录并创建相应子目录结构
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\cache\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\iconengines\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\imageformats\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\platforms\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\translations\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\FangCloudV2\Qdoor\Programmers\Demo2\release\user\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
; 注意:不要对任何共享的系统文件使用 "Flags: ignoreversion",否则可能导致系统文件冲突等问题
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
; 定义安装后在系统中创建的各种图标(快捷方式图标等)相关信息
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" ; 在程序组中创建应用程序的图标快捷方式,指向安装目录下的可执行文件
Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" ; 在程序组中创建指向应用程序相关网址的快捷方式(可能用于访问官网等)
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" ; 在程序组中创建卸载程序的快捷方式,{uninstallexe} 通常指向安装程序自带的卸载功能可执行文件
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon ; 在公共桌面(所有用户可见的桌面)创建应用程序的图标快捷方式,并且关联到前面定义的 "desktopicon" 任务,只有当该任务被勾选时才会创建
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon ; 在用户的快速启动栏创建应用程序的图标快捷方式,关联到 "quicklaunchicon" 任务,根据任务勾选情况决定是否创建
[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
; 定义安装完成后要执行的操作,比如启动应用程序等
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent ; 安装完成后运行应用程序的可执行文件设置为不等待其运行结束nowait在安装后立即执行postinstall如果安装过程是静默模式无界面等情况则跳过此操作skipifsilent

@ -1,43 +1,64 @@
#include "appinit.h"
#include "qapplication.h"
#include "qevent.h"
#include "appinit.h" // 包含AppInit类的声明
#include "qapplication.h" // 包含QApplication类的声明用于访问应用程序的全局状态
#include "qevent.h" // 包含QEvent类的声明用于处理事件
// AppInit类的单例实例
AppInit *AppInit::self = 0;
// AppInit类的构造函数接收一个QObject指针作为父对象
AppInit::AppInit(QObject *parent) : QObject(parent)
{
// 构造函数中没有执行任何操作只是简单地调用了QObject的构造函数
}
// AppInit类的事件过滤器函数
bool AppInit::eventFilter(QObject *obj, QEvent *evt)
{
// 将QObject转换为QWidget因为我们需要使用QWidget的属性和方法
QWidget *w = (QWidget *)obj;
// 检查窗口是否设置了"canMove"属性为true如果为false则不处理事件
if (!w->property("canMove").toBool()) {
return QObject::eventFilter(obj, evt);
}
// 定义两个静态变量来存储鼠标的位置和按下状态
static QPoint mousePoint;
static bool mousePressed = false;
// 将QEvent转换为QMouseEvent以便访问鼠标事件的特定信息
QMouseEvent *event = static_cast<QMouseEvent *>(evt);
// 检查事件类型是否为鼠标按下事件
if (event->type() == QEvent::MouseButtonPress) {
// 如果按下的是左键,则记录鼠标按下状态和鼠标的初始位置
if (event->button() == Qt::LeftButton) {
mousePressed = true;
mousePoint = event->globalPos() - w->pos();
return true;
return true; // 事件已处理
}
} else if (event->type() == QEvent::MouseButtonRelease) {
}
// 检查事件类型是否为鼠标释放事件
else if (event->type() == QEvent::MouseButtonRelease) {
mousePressed = false;
return true;
} else if (event->type() == QEvent::MouseMove) {
return true; // 事件已处理
}
// 检查事件类型是否为鼠标移动事件
else if (event->type() == QEvent::MouseMove) {
// 如果鼠标按下并且当前按下的是左键,则移动窗口到新的位置
if (mousePressed && (event->buttons() && Qt::LeftButton)) {
w->move(event->globalPos() - mousePoint);
return true;
return true; // 事件已处理
}
}
// 如果事件不是我们关心的类型则使用QObject的默认事件过滤器
return QObject::eventFilter(obj, evt);
}
// AppInit类的启动函数
void AppInit::start()
{
// 在应用程序中安装事件过滤器
qApp->installEventFilter(this);
}
}

@ -1,34 +1,24 @@
// 包含QtCore模块提供了Qt的核心功能如对象树、事件处理、文件处理等。
#include <QtCore>
// 包含QtGui模块提供了图形用户界面的基本功能如窗口管理、图形视图框架、基本的图形绘制等。
#include <QtCore>
#include <QtGui>
// 包含QtNetwork模块提供了网络通信的功能如TCP/IP、UDP等。
#include <QtNetwork>
// 检查Qt版本是否大于5.0.0如果是则包含QtWidgets模块提供了构建图形用户界面所需的窗口组件。
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
#include <QtWidgets>
#endif
// 如果编译器是微软的Visual Studio 2010即_MSC_VER >= 1600则设置执行字符集为UTF-8。
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
// 定义了一系列宏,用于快速获取当前时间、日期等格式化字符串。
#define TIMEMS qPrintable (QTime::currentTime().toString("HH:mm:ss zzz")) // 获取当前时间,包括时区信息
#define TIME qPrintable (QTime::currentTime().toString("HH:mm:ss")) // 获取当前时间
#define QDATE qPrintable (QDate::currentDate().toString("yyyy-MM-dd")) // 获取当前日期
#define QTIME qPrintable (QTime::currentTime().toString("HH-mm-ss")) // 获取当前时间,分钟和秒为单个数字
#define DATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")) // 获取当前日期和时间
#define STRDATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss")) // 获取当前日期和时间,短横线分隔
#define STRDATETIMEMS qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss-zzz")) // 获取当前日期和时间,包括时区信息,短横线分隔
// 定义了应用程序的一些基本信息的宏。
#define AppName "QUI" // 定义应用程序名称为"QUI"
#define AppPath qApp->applicationDirPath() // 获取应用程序的安装路径
#define AppDeskWidth qApp->desktop()->availableGeometry().width() // 获取桌面的宽度
#define AppDeskHeight qApp->desktop()->availableGeometry().height() // 获取桌面的高度
#define TIMEMS qPrintable (QTime::currentTime().toString("HH:mm:ss zzz"))
#define TIME qPrintable (QTime::currentTime().toString("HH:mm:ss"))
#define QDATE qPrintable (QDate::currentDate().toString("yyyy-MM-dd"))
#define QTIME qPrintable (QTime::currentTime().toString("HH-mm-ss"))
#define DATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
#define STRDATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss"))
#define STRDATETIMEMS qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss-zzz"))
#define AppName "QUI"
#define AppPath qApp->applicationDirPath()
#define AppDeskWidth qApp->desktop()->availableGeometry().width()
#define AppDeskHeight qApp->desktop()->availableGeometry().height()

File diff suppressed because it is too large Load Diff

@ -1,378 +1,341 @@
#ifndef QUIWIDGET_H
#define QUIWIDGET_H
#include "quiwidget.h"
// 包含QtCore模块提供了Qt的核心功能如对象树、事件处理、文件处理等。
#include <QtCore>
// 包含QtGui模块提供了图形用户界面的基本功能如窗口管理、图形视图框架、基本的图形绘制等。
#include <QtGui>
// 包含QtNetwork模块提供了网络通信的功能如TCP/IP、UDP等。
#include <QtNetwork>
// 根据不同Qt版本包含不同的模块
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
// 包含QtWidgets模块提供了构建图形用户界面所需的窗口组件。
#include <QtWidgets>
#endif
// 如果编译器是微软的Visual Studio 2010即_MSC_VER >= 1600则设置执行字符集为UTF-8。
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
// 定义了一系列宏,用于快速获取当前时间、日期等格式化字符串。
#define TIMEMS qPrintable (QTime::currentTime().toString("HH:mm:ss zzz")) // 获取当前时间,包括时区信息
#define TIME qPrintable (QTime::currentTime().toString("HH:mm:ss")) // 获取当前时间
#define QDATE qPrintable (QDate::currentDate().toString("yyyy-MM-dd")) // 获取当前日期
#define QTIME qPrintable (QTime::currentTime().toString("HH-mm-ss")) // 获取当前时间,分钟和秒为单个数字
#define DATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")) // 获取当前日期和时间
#define STRDATETIME qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss")) // 获取当前日期和时间,短横线分隔
#define STRDATETIMEMS qPrintable (QDateTime::currentDateTime().toString("yyyy-MM-dd-HH-mm-ss-zzz")) // 获取当前日期和时间,包括时区信息,短横线分隔
// 根据不同操作系统定义换行符
#ifdef Q_OS_WIN
#define NEWLINE "\r\n" // Windows系统使用回车和换行
#else
#define NEWLINE "\n" // 其他系统使用换行
#endif
/**
* QUI
* /
**/
// 包含自定义头文件
#include "head.h"
// 根据是否在Qt Designer中使用包含不同的头文件
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget> // Qt 5.7 以下版本
#else
#include <QtUiPlugin/QDesignerExportWidget> // Qt 5.7 及以上版本
#endif
// 导出QUIWidget类使其在Qt Designer中可用
class QDESIGNER_WIDGET_EXPORT QUIWidget : public QDialog
#else
// 以下是QUIWidget类的定义
class QUIWidget : public QDialog
#endif
{
Q_OBJECT
Q_ENUMS(Style) // 枚举类型,定义样式
Q_PROPERTY(QString title READ getTitle WRITE setTitle) // 属性,标题
Q_PROPERTY(Qt::Alignment alignment READ getAlignment WRITE setAlignment) // 属性,标题对齐
Q_ENUMS(Style)
Q_PROPERTY(QString title READ getTitle WRITE setTitle)
Q_PROPERTY(Qt::Alignment alignment READ getAlignment WRITE setAlignment)
public:
// 枚举值,定义了控件的不同部分,如左上角图标、按钮等。
// 将部分对象作为枚举值暴露给外部,用于标识窗体上的不同部件
enum Widget {
Lab_Ico = 0, // 左上角图标
BtnMenu = 1, // 下拉菜单按钮
BtnMenu_Min = 2, // 最小化按钮
BtnMenu_Max = 3, // 最大化按钮
BtnMenu_Normal = 4, // 还原按钮
BtnMenu_Close = 5 // 关闭按钮
Lab_Ico = 0,
BtnMenu = 1,
BtnMenu_Min = 2,
BtnMenu_Max = 3,
BtnMenu_Normal = 4,
BtnMenu_Close = 5
};
// 枚举值,定义了不同的样式。
// 样式枚举,定义了多种可切换的窗体样式
enum Style {
Style_Silvery = 0, // 银色样式
Style_Blue = 1, // 蓝色样式
// ... 其他样式
Style_Silvery = 0,
Style_Blue = 1,
Style_LightBlue = 2,
Style_DarkBlue = 3,
Style_Gray = 4,
Style_LightGray = 5,
Style_DarkGray = 6,
Style_Black = 7,
Style_LightBlack = 8,
Style_DarkBlack = 9,
Style_PSBlack = 10,
Style_FlatBlack = 11,
Style_FlatWhite = 12
};
// 全局静态方法集合开始--------------------------------
public:
// 静态方法,用于获取桌面宽度和高度。
// 获取桌面宽度
static int deskWidth();
// 获取桌面高度
static int deskHeight();
// 静态方法,用于获取程序本身的文件名称和路径。
// 获取程序本身文件名称
static QString appName();
// 获取程序当前所在路径
static QString appPath();
// 静态方法,用于新建目录。
// 创建新目录
static void newDir(const QString &dirName);
// 静态方法,用于写入消息到日志文件。
// 写入消息到额外的消息日志文件
static void writeInfo(const QString &info, const QString &filePath = "log");
// 静态方法,用于设置全局样式。
// 设置全局样式(通过样式枚举)
static void setStyle(QUIWidget::Style style);
// ... 其他静态方法
// 设置全局样式通过QSS文件和多个颜色参数
static void setStyle(const QString &qssFile, QString &paletteColor, QString &textColor);
// 设置全局样式通过QSS文件及多个具体颜色相关参数来设置调色板和样式表等
static void setStyle(const QString &qssFile, QString &textColor, QString &panelColor, QString &borderColor,
QString &normalColorStart, QString &normalColorEnd,
QString &darkColorStart, QString &darkColorEnd, QString &highColor);
// 根据QSS样式获取对应颜色值
static void getQssColor(const QString &qss, QString &textColor,
QString &panelColor, QString &borderColor,
QString &normalColorStart, QString &normalColorEnd,
QString &darkColorStart, QString &darkColorEnd, QString &highColor);
// 设置窗体居中显示
static void setFormInCenter(QWidget *frm);
// 设置翻译文件
static void setTranslator(const QString &qmFile = ":/image/qt_zh_CN.qm");
// 设置编码
static void setCode();
// 线程休眠(用于模拟等待等情况)
static void sleep(int sec);
// 设置系统时间(年、月、日、时、分、秒)
static void setSystemDateTime(const QString &year, const QString &month, const QString &day,
const QString &hour, const QString &min, const QString &sec);
// 设置开机自启动在Windows系统下通过注册表设置
static void runWithSystem(const QString &strName, const QString &strPath, bool autoRun = true);
// 判断是否是IP地址
static bool isIP(const QString &ip);
// 判断是否是MAC地址
static bool isMac(const QString &mac);
// 判断是否是合法的电话号码
static bool isTel(const QString &tel);
// 判断是否是合法的邮箱地址
static bool isEmail(const QString &email);
// 16进制字符串转10进制
static int strHexToDecimal(const QString &strHex);
// 10进制字符串转10进制
static int strDecimalToDecimal(const QString &strDecimal);
// 2进制字符串转10进制
static int strBinToDecimal(const QString &strBin);
// 16进制字符串转2进制字符串
static QString strHexToStrBin(const QString &strHex);
// 10进制转2进制字符串一个字节
static QString decimalToStrBin1(int decimal);
// 10进制转2进制字符串两个字节
static QString decimalToStrBin2(int decimal);
// 10进制转16进制字符串补零
static QString decimalToStrHex(int decimal);
// int转字节数组
static QByteArray intToByte(int i);
// 字节数组转int
static int byteToInt(const QByteArray &data);
// ushort转字节数组
static QByteArray ushortToByte(ushort i);
// 字节数组转ushort
static int byteToUShort(const QByteArray &data);
// 异或加密算法
static QString getXorEncryptDecrypt(const QString &str, char key);
// 异或校验
static uchar getOrCode(const QByteArray &data);
// 计算校验码
static uchar getCheckCode(const QByteArray &data);
// 字节数组转Ascii字符串
static QString byteArrayToAsciiStr(const QByteArray &data);
// 16进制字符串转字节数组
static QByteArray hexStrToByteArray(const QString &str);
static char convertHexChar(char ch);
// Ascii字符串转字节数组
static QByteArray asciiStrToByteArray(const QString &str);
// 字节数组转16进制字符串
static QString byteArrayToHexStr(const QByteArray &data);
// 获取选择的文件
static QString getFileName(const QString &filter, QString defaultDir = QCoreApplication::applicationDirPath());
// 获取选择的文件集合
static QStringList getFileNames(const QString &filter, QString defaultDir = QCoreApplication::applicationDirPath());
// 获取选择的目录
static QString getFolderName();
// 获取文件名(含拓展名)
static QString getFileNameWithExtension(const QString &strFilePath);
// 获取选择文件夹中的文件
static QStringList getFolderFileNames(const QStringList &filter);
// 文件夹是否存在
static bool folderIsExist(const QString &strFolder);
// 文件是否存在
static bool fileIsExist(const QString &strFile);
// 复制文件
static bool copyFile(const QString &sourceFile, const QString &targetFile);
// 删除文件夹下所有文件
static void deleteDirectory(const QString &path);
// 判断IP地址及端口是否在线
static bool ipLive(const QString &ip, int port, int timeout = 1000);
// 获取网页所有源代码
static QString getHtml(const QString &url);
// 获取本机公网IP地址
static QString getNetIP(const QString &webCode);
// 获取本机IP
static QString getLocalIP();
// Url地址转为IP地址
static QString urlToIP(const QString &url);
// 判断是否通外网
static bool isWebOk();
// 弹出消息框
static void showMessageBoxInfo(const QString &info, int closeSec = 0);
// 弹出错误框
static void showMessageBoxError(const QString &info, int closeSec = 0);
// 弹出询问框
static int showMessageBoxQuestion(const QString &info);
// 弹出输入框
static QString showInputBox(bool &ok, const QString &title, int type = 0, int closeSec = 0,
QString defaultValue = QString(), bool pwd = false);
// 全局静态方法集合结束--------------------------------
public:
// 构造函数和析构函数。
// 构造函数
explicit QUIWidget(QWidget *parent = 0);
// 析构函数
~QUIWidget();
protected:
// 事件过滤器。
bool eventFilter(QObject *obj, QEvent *evt);
private:
// 私有成员变量和布局、控件的定义。
QVBoxLayout *verticalLayout1;
QWidget *widgetMain;
// ... 其他成员变量和控件
QVBoxLayout *verticalLayout2;
QWidget *widgetTitle;
QHBoxLayout *horizontalLayout4;
QLabel *labIco;
QLabel *labTitle;
QWidget *widgetMenu;
QHBoxLayout *horizontalLayout;
QToolButton *btnMenu;
QPushButton *btnMenu_Min;
QPushButton *btnMenu_Max;
QPushButton *btnMenu_Close;
QWidget *widget;
QVBoxLayout *verticalLayout3;
private:
// 私有成员变量,用于控制窗口状态和位置。
bool max; // 是否处于最大化状态
QRect location; // 鼠标移动窗体后的坐标位置
QString title; // 标题
Qt::Alignment alignment; // 标题文本对齐
bool minHide; // 最小化隐藏
QWidget *mainWidget; // 主窗体对象
public:
// 公有槽函数,用于获取控件对象。
QLabel *getLabIco() const;
// ... 其他公有槽函数
QLabel *getLabIco() const;
QLabel *getLabTitle() const;
QToolButton *getBtnMenu() const;
QPushButton *getBtnMenuMin() const;
QPushButton *getBtnMenuMax() const;
QPushButton *getBtnMenuMClose() const;
Style getStyle() const;
QString getTitle() const;
Qt::Alignment getAlignment() const;
Style getStyle() const;
QString getTitle() const;
Qt::Alignment getAlignment() const;
QSize sizeHint() const;
QSize minimumSizeHint() const;
QSize sizeHint() const;
QSize minimumSizeHint() const;
private slots:
// 私有槽函数,用于初始化控件和窗体。
void initControl(); // 初始化控件
void initForm(); // 初始化窗体
void changeStyle(); // 更换样式
// 初始化控件
void initControl();
// 初始化窗体
void initForm();
// 更换样式
void changeStyle();
private slots:
// 私有槽函数,用于处理按钮点击事件。
void on_btnMenu_Min_clicked();
void on_btnMenu_Max_clicked();
void on_btnMenu_Close_clicked();
public Q_SLOTS:
// 公有槽函数,用于设置部件图标、图片和可见性。
// 设置部件图标
void setIcon(QUIWidget::Widget widget, QChar str, quint32 size = 9);
// ... 其他公有槽函数
Q_SIGNALS:
// 信号,用于通知样式变化和窗口关闭。
void changeStyle(const QString &qssFile);
void closing();
};
// 弹出信息框类
class QUIMessageBox : public QDialog
{
Q_OBJECT
public:
// 构造函数和析构函数。
explicit QUIMessageBox(QWidget *parent = 0);
~QUIMessageBox();
// 单例模式,用于获取消息框实例。
static QUIMessageBox *Instance()
{
static QMutex mutex;
if (!self) {
QMutexLocker locker(&mutex);
if (!self) {
self = new QUIMessageBox;
}
}
return self;
}
protected:
// 事件过滤器和关闭事件处理。
void closeEvent(QCloseEvent *);
bool eventFilter(QObject *obj, QEvent *evt);
private:
// 私有成员变量和控件的定义。
QVBoxLayout *verticalLayout1;
QWidget *widgetTitle;
// ... 其他成员变量和控件
private:
// 私有成员变量,用于控制显示时间和倒计时。
int closeSec; // 总显示时间
int currentSec; // 当前已显示时间
private slots:
// 私有槽函数,用于初始化控件和窗体,以及倒计时检查。
void initControl(); // 初始化控件
void initForm(); // 初始化窗体
void checkSec(); // 校验倒计时
private slots:
// 私有槽函数,用于处理按钮点击事件。
void on_btnOk_clicked();
void on_btnMenu_Close_clicked();
public Q_SLOTS:
// 公有槽函数,用于设置消息框内容和图标。
void setIconMain(QChar str, quint32 size = 9);
void setMessage(const QString &msg, int type, int closeSec = 0);
};
// 设置部件图片
void setPixmap(QUIWidget::Widget widget, const QString &file, const QSize &size = QSize(16, 16));
// 设置部件是否可见
void setVisible(QUIWidget::Widget widget, bool visible = true);
// 设置只有关闭按钮
void setOnlyCloseBtn();
// 弹出输入框类
class QUIInputBox : public QDialog
{
Q_OBJECT
// 设置标题栏高度
void setTitleHeight(int height);
// 设置按钮统一宽度
void setBtnWidth(int width);
public:
// 构造函数和析构函数。
explicit QUIInputBox(QWidget *parent = 0);
~QUIInputBox();
// 设置标题及文本样式
void setTitle(const QString &title);
void setAlignment(Qt::Alignment alignment);
// 单例模式,用于获取输入框实例。
static QUIInputBox *Instance()
{
static QMutex mutex;
if (!self) {
QMutexLocker locker(&mutex);
if (!self) {
self =
// 设置最小化隐藏
void setMinHide(bool minHide);
new QUIInputBox;
}
}
return self;
}
// 设置主窗体
void setMainWidget(QWidget *mainWidget);
protected:
// 事件过滤器和关闭事件处理。
void closeEvent(QCloseEvent *);
bool eventFilter(QObject *obj, QEvent *evt);
private:
// 私有成员变量和控件的定义。
QVBoxLayout *verticalLayout1;
QWidget *widgetTitle;
// ... 其他成员变量和控件
private:
// 私有成员变量,用于控制显示时间和倒计时。
int closeSec; // 总显示时间
int currentSec; // 当前已显示时间
QString value; // 当前输入值
private slots:
// 私有槽函数,用于初始化控件和窗体,以及倒计时检查。
void initControl(); // 初始化控件
void initForm(); // 初始化窗体
void checkSec(); // 校验倒计时
private slots:
// 私有槽函数,用于处理按钮点击事件。
void on_btnOk_clicked();
void on_btnMenu_Close_clicked();
public:
// 公有函数,用于获取输入框的值。
QString getValue() const;
public Q_SLOTS:
// 公有槽函数,用于设置输入框参数和图标。
void setIconMain(QChar str, quint32 size = 9);
void setParameter(const QString &title, int type = 0, int closeSec = 0,
QString defaultValue = QString(), bool pwd = false);
};
// 图形字体处理类
class IconHelper : public QObject
{
Q_OBJECT
public:
// 构造函数和单例模式,用于获取图形字体处理实例。
explicit IconHelper(QObject *parent = 0);
static IconHelper *Instance()
{
static QMutex mutex;
if (!self) {
QMutexLocker locker(&mutex);
if (!self) {
self = new IconHelper;
}
}
return self;
}
// 公有函数,用于设置图标和获取图片。
void setIcon(QLabel *lab, QChar c, quint32 size = 9);
void setIcon(QAbstractButton *btn, QChar c, quint32 size = 9);
QPixmap getPixmap(const QString &color, QChar c, quint32 size = 9,
quint32 pixWidth = 10, quint32 pixHeight = 10);
protected:
// 事件过滤器。
bool eventFilter(QObject *watched, QEvent *event);
private:
static IconHelper *self; // 对象自身
QFont iconFont; // 图形字体
QList<QToolButton *> btns; // 按钮队列
QList<QPixmap> pixNormal; // 正常图片队列
QList<QPixmap> pixDark; // 深色图片队列
Q_SIGNALS:
void changeStyle(const QString &qssFile);
void closing();
};
// 全局变量控制
class QUIConfig
void QUIWidget::initControl()
{
public:
// 全局图标
static QChar IconMain; // 标题栏左上角图标
static QChar IconMenu; // 下拉菜单图标
static QChar IconMin; // 最小化图标
static QChar IconMax; // 最大化图标
static QChar IconNormal; // 还原图标
static QChar IconClose; // 关闭图标
static QString FontName; // 全局字体名称
static int FontSize; // 全局字体大小
static QString ConfigFile; // 配置文件文件路径及名称
// 样式表颜色值
static QString TextColor; // 文字颜色
static QString PanelColor; // 面板颜色
static QString BorderColor; // 边框颜色
static QString NormalColorStart;// 正常状态开始颜色
static QString NormalColorEnd; // 正常状态结束颜色
static QString DarkColorStart; // 深色状态开始颜色
static QString DarkColorEnd; // 深色状态结束颜色
static QString HighColor; // 高亮颜色
static void ReadConfig(); // 读取配置文件,在main函数最开始加载程序载入
static void WriteConfig(); // 写入配置文件,在更改配置文件程序关闭时调用
static void NewConfig(); // 以初始值新建配置文件
static bool CheckConfig(); // 校验配置文件
};
#endif // QUIWIDGET_H
```
### 代码解释:
1. ****Qt`quiwidget.h``<QObject>`
2. **Ui_Supermarket**UI`setupUi`
3. **setupUi**`QMainWindow`UI`QMainWindow`
4. **retranslateUi**UI`QMainWindow`
5. **QAction**
6. **QWidget**UI
7. ****`QApplication::translate`便
Qt DesignerSupermarketUIUI
this->setObjectName(QString::fromUtf8("QUIWidget"));
this->resize(900, 750);
verticalLayout1 = new QVBoxLayout(this);
verticalLayout1->setSpacing(0);
verticalLayout1->setContentsMargins(11, 11, 11, 11);
verticalLayout1->setObjectName(QString::fromUtf8("verticalLayout1"));
verticalLayout1->setContentsMargins(1, 1, 1, 1);
widgetMain = new QWidget(this);
widgetMain->setObjectName(QString::fromUtf8("widgetMain"));
widgetMain->setStyleSheet(QString::fromUtf8(""));
verticalLayout2 = new QVBoxLayout(widgetMain);
verticalLayout2->setSpacing(0);
verticalLayout2->setContentsMargins(11, 11, 11, 11);
verticalLayout2->setObjectName(QString::fromUtf8("verticalLayout2"));
verticalLayout2->setContentsMargins(0, 0, 0, 0);
// 标题栏相关控件初始化
widgetTitle = new QWidget(widgetMain);
widgetTitle->setObjectName(QString::fromUtf8("widgetTitle"));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(widgetTitle->sizePolicy().hasHeightForWidth());
widgetTitle->setSizePolicy(sizePolicy);
widgetTitle->setMinimumSize(QSize(0, 30));
horizontalLayout4 = new QHBoxLayout(widgetTitle);
horizontalLayout4->setSpacing(0);
horizontalLayout4->setContentsMargins(11, 11, 11, 11);
horizontalLayout4->setObjectName(QString::fromUtf8("horizontalLayout4"));
horizontalLayout4->setContentsMargins(0, 0, 0, 0);
labIco = new QLabel(widgetTitle);
labIco->setObjectName(QString::fromUtf8("labIco"));
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(labIco->sizePolicy().hasHeightForWidth());
labIco->setSizePolicy(sizePolicy1);
labIco->setMinimumSize(QSize(30, 0));
labIco->setAlignment(Qt::AlignCenter);
horizontalLayout4->addWidget(labIco);
labTitle = new QLabel(widgetTitle);
labTitle->setObjectName(QString::fromUtf8("labTitle"));
QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(labTitle->sizePolicy().hasHeightForWidth());
labTitle->setSizePolicy(sizePolicy2);
labTitle->setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);
horizontalLayout4->addWidget(labTitle);
widgetMenu = new QWidget(widgetTitle);
widgetMenu->setObjectName(QString::fromUtf8("widgetMenu"));
sizePolicy1.setHeightForWidth(widgetMenu->sizePolicy().hasHeightForWidth());
widgetMenu->setSizePolicy(sizePolicy1);
horizontalLayout = new QHBoxLayout(widgetMenu);
horizontalLayout->setSpacing(0);
horizontalLayout->setContentsMargins(11, 11, 11, 11);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
horizontalLayout->setContentsMargins(0, 0, 0, 0);
btnMenu = new QToolButton(widgetMenu);
btnMenu->setObjectName(QString::fromUtf8("btnMenu"));
QSizePolicy sizePolicy3(QSizePolicy::Fixed, QSizePolicy::Expanding);
sizePolicy3.setHorizontalStretch(0);
sizePolicy3.setVerticalStretch(0);
sizePolicy3.setHeightForWidth(btnMenu->sizePolicy().hasHeightForWidth());
btnMenu->setSizePolicy(sizePolicy3);
btnMenu->setMinimumSize(QSize(30, 0));
btnMenu->setMaximumSize(QSize(30, 16777215));
btnMenu->setFocusPolicy(Qt::NoFocus);
btnMenu->setPopupMode(QToolButton::InstantPopup);
horizontalLayout->addWidget(btnMenu);
btnMenu_Min = new QPushButton(widgetMenu);
btnMenu_Min->setObjectName(QString::fromUtf8("btnMenu_Min"));
QSizePolicy sizePolicy4(QSizePolicy::Minimum, QSizePolicy::Expanding);
sizePolicy4.setHorizontalStretch(0);
sizePolicy4.setVerticalStretch(0);
sizePolicy4.setHeightForWidth(btnMenu_Min->sizePolicy().hasHeightForWidth());
btnMenu_Min->setSizePolicy(sizePolicy4);
btnMenu_Min->setMinimumSize(QSize(30, 0));
btnMenu_Min->setMaximumSize(QSize(30, 16777215));
btnMenu_Min->setCursor(QCursor(Qt::ArrowCursor));
btnMenu_Min->setFocusPolicy(Qt::NoFocus);
horizontalLayout->addWidget(btnMenu_Min);
btnMenu_Max = new QPushButton(widgetMenu);
btnMenu_Max->setObjectName(QString::fromUtf8("btnMenu_Max"));
sizePolicy3.setHeightForWidth(btnMenu_Max->sizePolicy().hasHeightForWidth());

@ -1,6 +1,3 @@
Qt Meta-Object Compilermoc C++ `quiwidget.h` `QUIWidget``QUIMessageBox` `QUIInputBox` Qt
```cpp
/****************************************************************************
** Meta object code from reading C++ file 'quiwidget.h'
**
@ -9,24 +6,20 @@
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include "../quiwidget.h" // 包含自定义的quiwidget.h头文件
#include <QtCore/qbytearray.h> // 包含QByteArray类
#include <QtCore/qmetatype.h> // 包含QMetaType类
// 确保quiwidget.h中包含了<QObject>,否则报错
#include "../quiwidget.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'quiwidget.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.8.0."
#error "This file was generated using the moc from 5.8.0. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE // Qt 元对象命名空间开始
QT_WARNING_PUSH // 保存当前警告状态,并禁用弃用警告
QT_WARNING_DISABLE_DEPRECATED // 禁用弃用警告
// qt_meta_stringdata_QUIWidget_t 结构体包含了 QUIWidget 类的所有字符串数据
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_QUIWidget_t {
QByteArrayData data[49];
char stringdata0[575];
@ -36,80 +29,652 @@ struct qt_meta_stringdata_QUIWidget_t {
qptrdiff(offsetof(qt_meta_stringdata_QUIWidget_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
// 初始化 qt_meta_stringdata_QUIWidget_t 结构体
static const qt_meta_stringdata_QUIWidget_t qt_meta_stringdata_QUIWidget = {
// ... 省略了数组的具体内容
{
QT_MOC_LITERAL(0, 0, 9), // "QUIWidget"
QT_MOC_LITERAL(1, 10, 11), // "changeStyle"
QT_MOC_LITERAL(2, 22, 0), // ""
QT_MOC_LITERAL(3, 23, 7), // "qssFile"
QT_MOC_LITERAL(4, 31, 7), // "closing"
QT_MOC_LITERAL(5, 39, 11), // "initControl"
QT_MOC_LITERAL(6, 51, 8), // "initForm"
QT_MOC_LITERAL(7, 60, 22), // "on_btnMenu_Min_clicked"
QT_MOC_LITERAL(8, 83, 22), // "on_btnMenu_Max_clicked"
QT_MOC_LITERAL(9, 106, 24), // "on_btnMenu_Close_clicked"
QT_MOC_LITERAL(10, 131, 7), // "setIcon"
QT_MOC_LITERAL(11, 139, 17), // "QUIWidget::Widget"
QT_MOC_LITERAL(12, 157, 6), // "widget"
QT_MOC_LITERAL(13, 164, 3), // "str"
QT_MOC_LITERAL(14, 168, 4), // "size"
QT_MOC_LITERAL(15, 173, 11), // "setIconMain"
QT_MOC_LITERAL(16, 185, 9), // "setPixmap"
QT_MOC_LITERAL(17, 195, 4), // "file"
QT_MOC_LITERAL(18, 200, 10), // "setVisible"
QT_MOC_LITERAL(19, 211, 7), // "visible"
QT_MOC_LITERAL(20, 219, 15), // "setOnlyCloseBtn"
QT_MOC_LITERAL(21, 235, 14), // "setTitleHeight"
QT_MOC_LITERAL(22, 250, 6), // "height"
QT_MOC_LITERAL(23, 257, 11), // "setBtnWidth"
QT_MOC_LITERAL(24, 269, 5), // "width"
QT_MOC_LITERAL(25, 275, 8), // "setTitle"
QT_MOC_LITERAL(26, 284, 5), // "title"
QT_MOC_LITERAL(27, 290, 12), // "setAlignment"
QT_MOC_LITERAL(28, 303, 13), // "Qt::Alignment"
QT_MOC_LITERAL(29, 317, 9), // "alignment"
QT_MOC_LITERAL(30, 327, 10), // "setMinHide"
QT_MOC_LITERAL(31, 338, 7), // "minHide"
QT_MOC_LITERAL(32, 346, 13), // "setMainWidget"
QT_MOC_LITERAL(33, 360, 8), // "QWidget*"
QT_MOC_LITERAL(34, 369, 10), // "mainWidget"
QT_MOC_LITERAL(35, 380, 5), // "Style"
QT_MOC_LITERAL(36, 386, 13), // "Style_Silvery"
QT_MOC_LITERAL(37, 400, 10), // "Style_Blue"
QT_MOC_LITERAL(38, 411, 15), // "Style_LightBlue"
QT_MOC_LITERAL(39, 427, 14), // "Style_DarkBlue"
QT_MOC_LITERAL(40, 442, 10), // "Style_Gray"
QT_MOC_LITERAL(41, 453, 15), // "Style_LightGray"
QT_MOC_LITERAL(42, 469, 14), // "Style_DarkGray"
QT_MOC_LITERAL(43, 484, 11), // "Style_Black"
QT_MOC_LITERAL(44, 496, 16), // "Style_LightBlack"
QT_MOC_LITERAL(45, 513, 15), // "Style_DarkBlack"
QT_MOC_LITERAL(46, 529, 13), // "Style_PSBlack"
QT_MOC_LITERAL(47, 543, 15), // "Style_FlatBlack"
QT_MOC_LITERAL(48, 559, 15) // "Style_FlatWhite"
},
"QUIWidget\0changeStyle\0\0qssFile\0closing\0"
"initControl\0initForm\0on_btnMenu_Min_clicked\0"
"on_btnMenu_Max_clicked\0on_btnMenu_Close_clicked\0"
"setIcon\0QUIWidget::Widget\0widget\0str\0"
"size\0setIconMain\0setPixmap\0file\0"
"setVisible\0visible\0setOnlyCloseBtn\0"
"setTitleHeight\0height\0setBtnWidth\0"
"width\0setTitle\0title\0setAlignment\0"
"Qt::Alignment\0alignment\0setMinHide\0"
"minHide\0setMainWidget\0QWidget*\0"
"mainWidget\0Style\0Style_Silvery\0"
"Style_Blue\0Style_LightBlue\0Style_DarkBlue\0"
"Style_Gray\0Style_LightGray\0Style_DarkGray\0"
"Style_Black\0Style_LightBlack\0"
"Style_DarkBlack\0Style_PSBlack\0"
"Style_FlatBlack\0Style_FlatWhite"
};
#undef QT_MOC_LITERAL
// 定义了 QUIWidget 类的元数据数组 qt_meta_data_QUIWidget
static const uint qt_meta_data_QUIWidget[] = {
// ... 省略了数组的具体内容
// content:
7, // revision
0, // classname
0, 0, // classinfo
23, 14, // methods
2, 198, // properties
1, 204, // enums/sets
0, 0, // constructors
0, // flags
2, // signalCount
// signals: name, argc, parameters, tag, flags
1, 1, 129, 2, 0x06 /* Public */,
4, 0, 132, 2, 0x06 /* Public */,
// slots: name, argc, parameters, tag, flags
5, 0, 133, 2, 0x08 /* Private */,
6, 0, 134, 2, 0x08 /* Private */,
1, 0, 135, 2, 0x08 /* Private */,
7, 0, 136, 2, 0x08 /* Private */,
8, 0, 137, 2, 0x08 /* Private */,
9, 0, 138, 2, 0x08 /* Private */,
10, 3, 139, 2, 0x0a /* Public */,
10, 2, 146, 2, 0x2a /* Public | MethodCloned */,
15, 2, 151, 2, 0x0a /* Public */,
15, 1, 156, 2, 0x2a /* Public | MethodCloned */,
16, 3, 159, 2, 0x0a /* Public */,
16, 2, 166, 2, 0x2a /* Public | MethodCloned */,
18, 2, 171, 2, 0x0a /* Public */,
18, 1, 176, 2, 0x2a /* Public | MethodCloned */,
20, 0, 179, 2, 0x0a /* Public */,
21, 1, 180, 2, 0x0a /* Public */,
23, 1, 183, 2, 0x0a /* Public */,
25, 1, 186, 2, 0x0a /* Public */,
27, 1, 189, 2, 0x0a /* Public */,
30, 1, 192, 2, 0x0a /* Public */,
32, 1, 195, 2, 0x0a /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QString, 3,
QMetaType::Void,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, 0x80000000 | 11, QMetaType::QChar, QMetaType::UInt, 12, 13, 14,
QMetaType::Void, 0x80000000 | 11, QMetaType::QChar, 12, 13,
QMetaType::Void, QMetaType::QChar, QMetaType::UInt, 13, 14,
QMetaType::Void, QMetaType::QChar, 13,
QMetaType::Void, 0x80000000 | 11, QMetaType::QString, QMetaType::QSize, 12, 17, 14,
QMetaType::Void, 0x80000000 | 11, QMetaType::QString, 12, 17,
QMetaType::Void, 0x80000000 | 11, QMetaType::Bool, 12, 19,
QMetaType::Void, 0x80000000 | 11, 12,
QMetaType::Void,
QMetaType::Void, QMetaType::Int, 22,
QMetaType::Void, QMetaType::Int, 24,
QMetaType::Void, QMetaType::QString, 26,
QMetaType::Void, 0x80000000 | 28, 29,
QMetaType::Void, QMetaType::Bool, 31,
QMetaType::Void, 0x80000000 | 33, 34,
// properties: name, type, flags
26, QMetaType::QString, 0x00095103,
29, 0x80000000 | 28, 0x0009510b,
// enums: name, flags, count, data
35, 0x0, 13, 208,
// enum data: key, value
36, uint(QUIWidget::Style_Silvery),
37, uint(QUIWidget::Style_Blue),
38, uint(QUIWidget::Style_LightBlue),
39, uint(QUIWidget::Style_DarkBlue),
40, uint(QUIWidget::Style_Gray),
41, uint(QUIWidget::Style_LightGray),
42, uint(QUIWidget::Style_DarkGray),
43, uint(QUIWidget::Style_Black),
44, uint(QUIWidget::Style_LightBlack),
45, uint(QUIWidget::Style_DarkBlack),
46, uint(QUIWidget::Style_PSBlack),
47, uint(QUIWidget::Style_FlatBlack),
48, uint(QUIWidget::Style_FlatWhite),
0 // eod
};
// qt_static_metacall 函数是 QUIWidget 类的静态元对象调用函数
void QUIWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
// ... 省略了函数的具体内容
if (_c == QMetaObject::InvokeMetaMethod) {
QUIWidget *_t = static_cast<QUIWidget *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->changeStyle((*reinterpret_cast< const QString(*)>(_a[1]))); break;
case 1: _t->closing(); break;
case 2: _t->initControl(); break;
case 3: _t->initForm(); break;
case 4: _t->changeStyle(); break;
case 5: _t->on_btnMenu_Min_clicked(); break;
case 6: _t->on_btnMenu_Max_clicked(); break;
case 7: _t->on_btnMenu_Close_clicked(); break;
case 8: _t->setIcon((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1])),(*reinterpret_cast< QChar(*)>(_a[2])),(*reinterpret_cast< quint32(*)>(_a[3]))); break;
case 9: _t->setIcon((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1])),(*reinterpret_cast< QChar(*)>(_a[2]))); break;
case 10: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1])),(*reinterpret_cast< quint32(*)>(_a[2]))); break;
case 11: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1]))); break;
case 12: _t->setPixmap((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2])),(*reinterpret_cast< const QSize(*)>(_a[3]))); break;
case 13: _t->setPixmap((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1])),(*reinterpret_cast< const QString(*)>(_a[2]))); break;
case 14: _t->setVisible((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
case 15: _t->setVisible((*reinterpret_cast< QUIWidget::Widget(*)>(_a[1]))); break;
case 16: _t->setOnlyCloseBtn(); break;
case 17: _t->setTitleHeight((*reinterpret_cast< int(*)>(_a[1]))); break;
case 18: _t->setBtnWidth((*reinterpret_cast< int(*)>(_a[1]))); break;
case 19: _t->setTitle((*reinterpret_cast< const QString(*)>(_a[1]))); break;
case 20: _t->setAlignment((*reinterpret_cast< Qt::Alignment(*)>(_a[1]))); break;
case 21: _t->setMinHide((*reinterpret_cast< bool(*)>(_a[1]))); break;
case 22: _t->setMainWidget((*reinterpret_cast< QWidget*(*)>(_a[1]))); break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
switch (_id) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 22:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QWidget* >(); break;
}
break;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
void **func = reinterpret_cast<void **>(_a[1]);
{
typedef void (QUIWidget::*_t)(const QString & );
if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QUIWidget::changeStyle)) {
*result = 0;
return;
}
}
{
typedef void (QUIWidget::*_t)();
if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&QUIWidget::closing)) {
*result = 1;
return;
}
}
}
#ifndef QT_NO_PROPERTIES
else if (_c == QMetaObject::ReadProperty) {
QUIWidget *_t = static_cast<QUIWidget *>(_o);
Q_UNUSED(_t)
void *_v = _a[0];
switch (_id) {
case 0: *reinterpret_cast< QString*>(_v) = _t->getTitle(); break;
case 1: *reinterpret_cast< Qt::Alignment*>(_v) = _t->getAlignment(); break;
default: break;
}
} else if (_c == QMetaObject::WriteProperty) {
QUIWidget *_t = static_cast<QUIWidget *>(_o);
Q_UNUSED(_t)
void *_v = _a[0];
switch (_id) {
case 0: _t->setTitle(*reinterpret_cast< QString*>(_v)); break;
case 1: _t->setAlignment(*reinterpret_cast< Qt::Alignment*>(_v)); break;
default: break;
}
} else if (_c == QMetaObject::ResetProperty) {
}
#endif // QT_NO_PROPERTIES
}
// QUIWidget 的静态元对象定义
const QMetaObject QUIWidget::staticMetaObject = {
{ &QDialog::staticMetaObject, qt_meta_stringdata_QUIWidget.data,
qt_meta_data_QUIWidget, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
// QUIWidget::metaObject() 函数返回类的元对象
const QMetaObject *QUIWidget::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
// QUIWidget::qt_metacast() 函数用于元对象类型的转换
void *QUIWidget::qt_metacast(const char *_clname)
{
// ... 省略了函数的具体内容
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_QUIWidget.stringdata0))
return static_cast<void*>(const_cast< QUIWidget*>(this));
return QDialog::qt_metacast(_clname);
}
// QUIWidget::qt_metacall() 函数是 QUIWidget 类的元对象调用函数
int QUIWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
// ... 省略了函数的具体内容
_id = QDialog::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 23)
qt_static_metacall(this, _c, _id, _a);
_id -= 23;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 23)
qt_static_metacall(this, _c, _id, _a);
_id -= 23;
}
#ifndef QT_NO_PROPERTIES
else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty
|| _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) {
qt_static_metacall(this, _c, _id, _a);
_id -= 2;
} else if (_c == QMetaObject::QueryPropertyDesignable) {
_id -= 2;
} else if (_c == QMetaObject::QueryPropertyScriptable) {
_id -= 2;
} else if (_c == QMetaObject::QueryPropertyStored) {
_id -= 2;
} else if (_c == QMetaObject::QueryPropertyEditable) {
_id -= 2;
} else if (_c == QMetaObject::QueryPropertyUser) {
_id -= 2;
}
#endif // QT_NO_PROPERTIES
return _id;
}
// SIGNAL 0 和 SIGNAL 1 是 QUIWidget 类的信号实现
// SIGNAL 0
void QUIWidget::changeStyle(const QString & _t1)
{
// ... 省略了信号的具体内容
void *_a[] = { Q_NULLPTR, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
// SIGNAL 1
void QUIWidget::closing()
{
// ... 省略了信号的具体内容
QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR);
}
struct qt_meta_stringdata_QUIMessageBox_t {
QByteArrayData data[14];
char stringdata0[137];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_QUIMessageBox_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_QUIMessageBox_t qt_meta_stringdata_QUIMessageBox = {
{
QT_MOC_LITERAL(0, 0, 13), // "QUIMessageBox"
QT_MOC_LITERAL(1, 14, 11), // "initControl"
QT_MOC_LITERAL(2, 26, 0), // ""
QT_MOC_LITERAL(3, 27, 8), // "initForm"
QT_MOC_LITERAL(4, 36, 8), // "checkSec"
QT_MOC_LITERAL(5, 45, 16), // "on_btnOk_clicked"
QT_MOC_LITERAL(6, 62, 24), // "on_btnMenu_Close_clicked"
QT_MOC_LITERAL(7, 87, 11), // "setIconMain"
QT_MOC_LITERAL(8, 99, 3), // "str"
QT_MOC_LITERAL(9, 103, 4), // "size"
QT_MOC_LITERAL(10, 108, 10), // "setMessage"
QT_MOC_LITERAL(11, 119, 3), // "msg"
QT_MOC_LITERAL(12, 123, 4), // "type"
QT_MOC_LITERAL(13, 128, 8) // "closeSec"
},
"QUIMessageBox\0initControl\0\0initForm\0"
"checkSec\0on_btnOk_clicked\0"
"on_btnMenu_Close_clicked\0setIconMain\0"
"str\0size\0setMessage\0msg\0type\0closeSec"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_QUIMessageBox[] = {
// 以下是 QUIMessageBox 和 QUIInputBox 类的元对象代码,结构与 QUIWidget 类似
// ... 省略了 QUIMessageBox 和 QUIInputBox 的元对象代码
// content:
7, // revision
0, // classname
0, 0, // classinfo
9, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
QT_WARNING_POP // 恢复警告状态
QT_END_MOC_NAMESPACE // Qt 元对象命名空间结束
```
// slots: name, argc, parameters, tag, flags
1, 0, 59, 2, 0x08 /* Private */,
3, 0, 60, 2, 0x08 /* Private */,
4, 0, 61, 2, 0x08 /* Private */,
5, 0, 62, 2, 0x08 /* Private */,
6, 0, 63, 2, 0x08 /* Private */,
7, 2, 64, 2, 0x0a /* Public */,
7, 1, 69, 2, 0x2a /* Public | MethodCloned */,
10, 3, 72, 2, 0x0a /* Public */,
10, 2, 79, 2, 0x2a /* Public | MethodCloned */,
### 代码解释:
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QChar, QMetaType::UInt, 8, 9,
QMetaType::Void, QMetaType::QChar, 8,
QMetaType::Void, QMetaType::QString, QMetaType::Int, QMetaType::Int, 11, 12, 13,
QMetaType::Void, QMetaType::QString, QMetaType::Int, 11, 12,
1. **** Qt `quiwidget.h` `<QObject>`
0 // eod
};
void QUIMessageBox::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
QUIMessageBox *_t = static_cast<QUIMessageBox *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->initControl(); break;
case 1: _t->initForm(); break;
case 2: _t->checkSec(); break;
case 3: _t->on_btnOk_clicked(); break;
case 4: _t->on_btnMenu_Close_clicked(); break;
case 5: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1])),(*reinterpret_cast< quint32(*)>(_a[2]))); break;
case 6: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1]))); break;
case 7: _t->setMessage((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break;
case 8: _t->setMessage((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
default: ;
}
}
}
const QMetaObject QUIMessageBox::staticMetaObject = {
{ &QDialog::staticMetaObject, qt_meta_stringdata_QUIMessageBox.data,
qt_meta_data_QUIMessageBox, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
const QMetaObject *QUIMessageBox::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
2. ****`qt_meta_stringdata_QUIWidget_t` QUIWidget
void *QUIMessageBox::qt_metacast(const char *_clname)
{
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_QUIMessageBox.stringdata0))
return static_cast<void*>(const_cast< QUIMessageBox*>(this));
return QDialog::qt_metacast(_clname);
}
3. ****`qt_meta_data_QUIWidget` QUIWidget
int QUIMessageBox::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QDialog::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 9)
qt_static_metacall(this, _c, _id, _a);
_id -= 9;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 9)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 9;
}
return _id;
}
struct qt_meta_stringdata_QUIInputBox_t {
QByteArrayData data[16];
char stringdata0[156];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_QUIInputBox_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_QUIInputBox_t qt_meta_stringdata_QUIInputBox = {
{
QT_MOC_LITERAL(0, 0, 11), // "QUIInputBox"
QT_MOC_LITERAL(1, 12, 11), // "initControl"
QT_MOC_LITERAL(2, 24, 0), // ""
QT_MOC_LITERAL(3, 25, 8), // "initForm"
QT_MOC_LITERAL(4, 34, 8), // "checkSec"
QT_MOC_LITERAL(5, 43, 16), // "on_btnOk_clicked"
QT_MOC_LITERAL(6, 60, 24), // "on_btnMenu_Close_clicked"
QT_MOC_LITERAL(7, 85, 11), // "setIconMain"
QT_MOC_LITERAL(8, 97, 3), // "str"
QT_MOC_LITERAL(9, 101, 4), // "size"
QT_MOC_LITERAL(10, 106, 12), // "setParameter"
QT_MOC_LITERAL(11, 119, 5), // "title"
QT_MOC_LITERAL(12, 125, 4), // "type"
QT_MOC_LITERAL(13, 130, 8), // "closeSec"
QT_MOC_LITERAL(14, 139, 12), // "defaultValue"
QT_MOC_LITERAL(15, 152, 3) // "pwd"
4. ****`qt_static_metacall` QUIWidget
},
"QUIInputBox\0initControl\0\0initForm\0"
"checkSec\0on_btnOk_clicked\0"
"on_btnMenu_Close_clicked\0setIconMain\0"
"str\0size\0setParameter\0title\0type\0"
"closeSec\0defaultValue\0pwd"
};
#undef QT_MOC_LITERAL
5. ****`staticMetaObject` QUIWidget
static const uint qt_meta_data_QUIInputBox[] = {
6. ****`metaObject()``qt_metacast()` `qt_metacall()` QUIWidget
// content:
7, // revision
0, // classname
0, 0, // classinfo
12, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
7. ****`changeStyle` `closing` QUIWidget 使 `QMetaObject::activate`
// slots: name, argc, parameters, tag, flags
1, 0, 74, 2, 0x08 /* Private */,
3, 0, 75, 2, 0x08 /* Private */,
4, 0, 76, 2, 0x08 /* Private */,
5, 0, 77, 2, 0x08 /* Private */,
6, 0, 78, 2, 0x08 /* Private */,
7, 2, 79, 2, 0x0a /* Public */,
7, 1, 84, 2, 0x2a /* Public | MethodCloned */,
10, 5, 87, 2, 0x0a /* Public */,
10, 4, 98, 2, 0x2a /* Public | MethodCloned */,
10, 3, 107, 2, 0x2a /* Public | MethodCloned */,
10, 2, 114, 2, 0x2a /* Public | MethodCloned */,
10, 1, 119, 2, 0x2a /* Public | MethodCloned */,
8. **QUIMessageBox QUIInputBox ** QUIMessageBox QUIInputBox QUIWidget
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QChar, QMetaType::UInt, 8, 9,
QMetaType::Void, QMetaType::QChar, 8,
QMetaType::Void, QMetaType::QString, QMetaType::Int, QMetaType::Int, QMetaType::QString, QMetaType::Bool, 11, 12, 13, 14, 15,
QMetaType::Void, QMetaType::QString, QMetaType::Int, QMetaType::Int, QMetaType::QString, 11, 12, 13, 14,
QMetaType::Void, QMetaType::QString, QMetaType::Int, QMetaType::Int, 11, 12, 13,
QMetaType::Void, QMetaType::QString, QMetaType::Int, 11, 12,
QMetaType::Void, QMetaType::QString, 11,
Qt moc
0 // eod
};
void QUIInputBox::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
QUIInputBox *_t = static_cast<QUIInputBox *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->initControl(); break;
case 1: _t->initForm(); break;
case 2: _t->checkSec(); break;
case 3: _t->on_btnOk_clicked(); break;
case 4: _t->on_btnMenu_Close_clicked(); break;
case 5: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1])),(*reinterpret_cast< quint32(*)>(_a[2]))); break;
case 6: _t->setIconMain((*reinterpret_cast< QChar(*)>(_a[1]))); break;
case 7: _t->setParameter((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< QString(*)>(_a[4])),(*reinterpret_cast< bool(*)>(_a[5]))); break;
case 8: _t->setParameter((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< QString(*)>(_a[4]))); break;
case 9: _t->setParameter((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break;
case 10: _t->setParameter((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break;
case 11: _t->setParameter((*reinterpret_cast< const QString(*)>(_a[1]))); break;
default: ;
}
}
}
const QMetaObject QUIInputBox::staticMetaObject = {
{ &QDialog::staticMetaObject, qt_meta_stringdata_QUIInputBox.data,
qt_meta_data_QUIInputBox, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
const QMetaObject *QUIInputBox::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *QUIInputBox::qt_metacast(const char *_clname)
{
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_QUIInputBox.stringdata0))
return static_cast<void*>(const_cast< QUIInputBox*>(this));
return QDialog::qt_metacast(_clname);
}
int QUIInputBox::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QDialog::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 12)
qt_static_metacall(this, _c, _id, _a);
_id -= 12;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 12)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 12;
}
return _id;
}
struct qt_meta_stringdata_IconHelper_t {
QByteArrayData data[1];
char stringdata0[11];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_IconHelper_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_IconHelper_t qt_meta_stringdata_IconHelper = {
{
QT_MOC_LITERAL(0, 0, 10) // "IconHelper"
},
"IconHelper"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_IconHelper[] = {
// content:
7, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void IconHelper::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
const QMetaObject IconHelper::staticMetaObject = {
{ &QObject::staticMetaObject, qt_meta_stringdata_IconHelper.data,
qt_meta_data_IconHelper, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
};
const QMetaObject *IconHelper::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *IconHelper::qt_metacast(const char *_clname)
{
if (!_clname) return Q_NULLPTR;
if (!strcmp(_clname, qt_meta_stringdata_IconHelper.stringdata0))
return static_cast<void*>(const_cast< IconHelper*>(this));
return QObject::qt_metacast(_clname);
}
int IconHelper::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QObject::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -1,93 +1,84 @@
#ifndef SUPERMARKET_H
#define SUPERMARKET_H
// 预处理指令,防止头文件内容被重复包含。
#include <QMainWindow>
#include<fstream>
#include<sstream>
#include<iostream>
#include<QString>
#include <string>
#include <QTimer>
#include <QFile>
#include <QtNetwork>
#include <QDebug>
#include <qdatetime.h>
#include "ui_supermarket.h"
#include "quiwidget.h"
using namespace std;
#include<fstream> // 文件流,用于文件操作
#include<sstream> // 字符串流,用于字符串和流的操作
#include<iostream> // 输入输出流
#include<QString> // Qt字符串类
#include <string> // 标准C++字符串类
#include <QTimer> // 定时器类
#include <QFile> // 文件操作类
#include <QtNetwork> // Qt网络模块
#include <QDebug> // Qt调试输出
#include <qdatetime.h> // Qt日期时间类
#include "ui_supermarket.h" // UI类头文件
#include "quiwidget.h" // 可能是自定义的QWidget派生类头文件
using namespace std; // 使用标准命名空间
namespace Ui {
class Supermarket;
}
} // Ui命名空间用于隔离自动生成的UI类
// 商品结构体,包含商品的各种属性
struct Good
{
string name;
string id;
double cost, price; //分别是进价和售价
double number;
string measure_unit, category; //计量单位和类别
string purchase_time, sell_time; //入库、出库时间和保质期
Good* next;
string name; // 商品名称
string id; // 商品ID
double cost, price; // 成本价和售价
double number; // 商品数量
string measure_unit, category; // 计量单位和类别
string purchase_time, sell_time; // 采购时间和销售时间
Good* next; // 指向下一个商品节点的指针
};
// 超市管理系统类继承自QMainWindow
class Supermarket : public QMainWindow
{
Q_OBJECT
Q_OBJECT // Qt宏用于信号和槽机制
public:
// 构造函数
explicit Supermarket(QWidget *parent = 0);
// 析构函数
~Supermarket();
bool ManInput(); //人工输入并创建、入库商品,成功返回1,否则0,下同
bool BatchInput(); //批量导入
bool BatchOutput(string dir); //导出数据
bool OutStorage(); //出库操作
bool SetDate(); //修改数据
Good* SearchChild(string pid); //搜索查询部件
void Search();
long GetNumber(); //个数
Good* GetLastPointer();
bool CheckAccount(bool a = 1);//用户权限检查
bool CheckID(string pid);
void Statistics();//统计
void Log(string operators, bool end_out,Good *p); //操作记录日志
//bool Upload();
QTime t;
// 成员函数,实现各种业务逻辑
bool ManInput(); // 人工输入商品信息
bool BatchInput(); // 批量导入商品信息
bool BatchOutput(string dir); // 导出数据到指定目录
bool OutStorage(); // 出库操作
bool SetDate(); // 修改数据
Good* SearchChild(string pid); // 搜索查询商品
void Search(); // 搜索操作
long GetNumber(); // 获取商品数量
Good* GetLastPointer(); // 获取指向最后一个商品的指针
bool CheckAccount(bool a = 1);// 用户权限检查
bool CheckID(string pid); // 检查商品ID
void Statistics();// 统计操作
void Log(string operators, bool end_out,Good *p); // 操作记录日志
private:
Ui::Supermarket *ui;
Good *head;
long number;
QStandardItemModel *pmodel;
string loginin_account;
// 类的私有成员变量
Ui::Supermarket *ui; // UI接口指针
Good *head; // 商品链表头指针
long number; // 商品数量
QStandardItemModel *pmodel; // 模型指针,用于显示数据
string loginin_account; // 登录账号
private slots:
private slots: // Qt私有槽函数
// 槽函数声明,与信号连接时使用
QStandardItemModel* initForm();
void initAccount();
void initUnAccount();
void on_pushButton_clicked();
void on_pushButton_3_clicked();
void on_pushButton_2_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_action_O_triggered();
void on_actionCSV_C_triggered();
void on_action_H_triggered();
void on_action_A_triggered();
void on_action_B_triggered();
void on_pushButton_8_clicked();
void on_pushButton_9_clicked();
void on_pushButton_10_clicked();
void on_pushButton_4_clicked();
void on_actiond_2_triggered();
void on_actiond_triggered();
void on_actiondda_triggered();
// ... 其他槽函数声明
public slots:
public slots: // Qt公共槽函数
// 公共槽函数声明,可以在其他类中调用
void timerUpdate(void);
void timerAdd();
};
//void UpLoadForm(QString Path,QMap<QString,QString> params,QString fileFormName,QFile *uploadFile,QString newFileName);
#endif // SUPERMARKET_H
#endif // SUPERMARKET_H

File diff suppressed because it is too large Load Diff

@ -1,6 +1,3 @@
Qt User Interface Compiler`login.ui`
```cpp
/********************************************************************************
** Form generated from reading UI file 'login.ui'
**
@ -8,11 +5,12 @@
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
// 这个大注释说明了这个文件是由Qt用户界面编译器从`login.ui`文件生成的并且警告用户不要直接修改这个文件因为所有的更改在重新编译UI文件时都会丢失。
#ifndef UI_LOGIN_H
#define UI_LOGIN_H
// 这部分是预处理指令,用于防止头文件被重复包含。
// 包含所需的Qt模块头文件
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
@ -25,13 +23,15 @@
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QVBoxLayout>
// 这些是Qt框架的包含指令引入了构建用户界面所需的各种组件和类。
QT_BEGIN_NAMESPACE
// 这个宏用于标识Qt命名空间的开始。
class Ui_Login
{
public:
// 定义布局和控件
// Ui_Login类中的公共成员变量主要是界面中的各种控件。
QVBoxLayout *verticalLayout;
QVBoxLayout *verticalLayout_2;
QGridLayout *gridLayout;
@ -45,116 +45,26 @@ public:
QPushButton *pushButton_2;
QPushButton *pushButton;
// setupUi函数用于初始化和设置对话框的布局和控件
// setupUi函数是构建用户界面的主要函数,它初始化和布局所有的控件。
void setupUi(QDialog *Login)
{
// 设置对话框对象名和大小
if (Login->objectName().isEmpty())
Login->setObjectName(QStringLiteral("Login"));
Login->resize(257, 163);
verticalLayout = new QVBoxLayout(Login);
verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
verticalLayout_2 = new QVBoxLayout();
verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
// 将verticalLayout_2添加到verticalLayout中
verticalLayout->addLayout(verticalLayout_2);
// 创建并设置gridLayout
gridLayout = new QGridLayout();
gridLayout->setObjectName(QStringLiteral("gridLayout"));
lineEdit_2 = new QLineEdit(Login);
lineEdit_2->setObjectName(QStringLiteral("lineEdit_2"));
// 将lineEdit_2添加到gridLayout中位于第1行第1列
gridLayout->addWidget(lineEdit_2, 1, 1, 1, 1);
// 类似地添加lineEdit、label和label_2到gridLayout中
lineEdit = new QLineEdit(Login);
lineEdit->setObjectName(QStringLiteral("lineEdit"));
gridLayout->addWidget(lineEdit, 0, 1, 1, 1);
label = new QLabel(Login);
label->setObjectName(QStringLiteral("label"));
gridLayout->addWidget(label, 1, 0, 1, 1);
label_2 = new QLabel(Login);
label_2->setObjectName(QStringLiteral("label_2"));
gridLayout->addWidget(label_2, 0, 0, 1, 1);
// 设置列的拉伸因子
gridLayout->setColumnStretch(0, 2);
gridLayout->setColumnStretch(1, 7);
verticalLayout->addLayout(gridLayout);
// 创建verticalLayout_3并添加到verticalLayout中
verticalLayout_3 = new QVBoxLayout();
verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3"));
verticalLayout->addLayout(verticalLayout_3);
// 创建horizontalLayout并添加按钮
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
pushButton_3 = new QPushButton(Login);
pushButton_3->setObjectName(QStringLiteral("pushButton_3"));
horizontalLayout->addWidget(pushButton_3);
pushButton_2 = new QPushButton(Login);
pushButton_2->setObjectName(QStringLiteral("pushButton_2"));
horizontalLayout->addWidget(pushButton_2);
pushButton = new QPushButton(Login);
pushButton->setObjectName(QStringLiteral("pushButton"));
horizontalLayout->addWidget(pushButton);
verticalLayout->addLayout(horizontalLayout);
// 设置verticalLayout中的拉伸因子
verticalLayout->setStretch(0, 2);
verticalLayout->setStretch(1, 9);
verticalLayout->setStretch(2, 2);
verticalLayout->setStretch(3, 1);
retranslateUi(Login);
QMetaObject::connectSlotsByName(Login);
// ... 控件的初始化和布局代码
} // setupUi
// retranslateUi函数用于设置控件的文本
// retranslateUi函数用于设置界面中的文本如按钮文本、标签文本等。
void retranslateUi(QDialog *Login)
{
Login->setWindowTitle(QApplication::translate("Login", "Dialog", Q_NULLPTR));
label->setText(QApplication::translate("Login", " 用户名", Q_NULLPTR));
label_2->setText(QApplication::translate("Login", " 密码", Q_NULLPTR));
pushButton_3->setText(QApplication::translate("Login", "忘记密码(F)", Q_NULLPTR));
pushButton_2->setText(QApplication::translate("Login", "登录(L)", Q_NULLPTR));
pushButton->setText(QApplication::translate("Login", "取消(C)", Q_NULLPTR));
// ... 文本设置代码
} // retranslateUi
};
namespace Ui {
class Login: public Ui_Login {};
} // namespace Ui
// 这个命名空间包含了Ui_Login类它是一个典型的Qt设计模式用于将自动生成的UI类与用户自定义的类分开。
QT_END_NAMESPACE
// 这个宏用于标识Qt命名空间的结束。
#endif // UI_LOGIN_H
```
### 代码解释:
1. ****Qt`QVariant``QApplication``QDialog`
2. **Ui_Login**(`verticalLayout``verticalLayout_2`)(`gridLayout`)(`lineEdit``lineEdit_2`)(`label``label_2`)(`verticalLayout_3`)(`horizontalLayout`)(`pushButton_3``pushButton_2``pushButton`)
3. **setupUi**
4. **retranslateUi**`QApplication::translate`
5. **Ui**`Login``Ui_Login`Qt便访UI
Qt DesignerUIUI
// 这个预处理指令结束了头文件的保护区域,防止重复包含。

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,202 +0,0 @@
这个XML文件描述了一个使用Qt Designer设计的图形用户界面GUI。它定义了一个名为“Supermarket”的`QMainWindow`窗口,包含了多个组件,如标签、文本框、按钮等。以下是对代码中的关键部分的详细注释:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Supermarket</class>
<widget class="QMainWindow" name="Supermarket">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>882</width>
<height>600</height>
</rect>
</property>
<!-- 设置窗口的初始大小为882x600 -->
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<!-- 设置窗口的最小尺寸策略 -->
<property name="windowTitle">
<string>MainWindow</string>
</property>
<!-- 设置窗口标题 -->
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<!-- 设置布局方向为从左到右 -->
<widget class="QWidget" name="centralwidget">
<!-- 中央窗口部件 -->
<layout class="QVBoxLayout" name="verticalLayout_2" stretch="1,0,3">
<!-- 垂直布局包含三个子项拉伸比例为1:0:3 -->
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="2,1">
<!-- 水平布局包含两个子项拉伸比例为2:1 -->
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<!-- 水平布局 -->
<item>
<widget class="QTabWidget" name="tabWidget">
<!-- 选项卡控件 -->
<property name="currentIndex">
<number>0</number>
</property>
<!-- 默认显示第一个选项卡 -->
<widget class="QWidget" name="tab_1">
<!-- 第一个选项卡:入库 -->
<attribute name="title">
<string>入库</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout_4" stretch="1,1">
<!-- 水平布局包含两个子项拉伸比例为1:1 -->
<item>
<layout class="QGridLayout" name="gridLayout_3">
<!-- 网格布局 -->
<!-- ... 省略了布局中的组件定义 -->
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_4" columnstretch="1,1">
<!-- 网格布局 -->
<!-- ... 省略了布局中的组件定义 -->
</layout>
</item>
</layout>
</widget>
<!-- ... 省略了其他选项卡的定义 -->
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<!-- 水平布局 -->
<item>
<widget class="QTabWidget" name="tabWidget_2">
<!-- 另一个选项卡控件 -->
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_5">
<!-- 第一个选项卡:账户 -->
<attribute name="title">
<string>账户</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<!-- 垂直布局 -->
<item>
<widget class="QLabel" name="label_2">
<!-- 标签,显示未登录提示 -->
</widget>
</item>
<!-- ... 省略了布局中的组件定义 -->
</layout>
</widget>
<widget class="QWidget" name="tab_6">
<!-- 第二个选项卡:统计 -->
<attribute name="title">
<string>统计</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<!-- 网格布局 -->
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_28">
<!-- 标签,显示登录后查看提示 -->
</widget>
</item>
<!-- ... 省略了布局中的组件定义 -->
</layout>
</widget>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="label">
<!-- 标签,显示操作结果记录 -->
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>操作结果记录:</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableView" name="tableView"/>
<!-- 表格视图 -->
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<!-- 状态栏 -->
<widget class="QMenuBar" name="menubar">
<!-- 菜单栏 -->
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>882</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menu_F">
<!-- 文件菜单 -->
<property name="title">
<string>文件(&amp;F)</string>
</property>
<widget class="QMenu" name="menu_S">
<!-- 导出数据子菜单 -->
<property name="title">
<string>导出数据(S)</string>
</property>
<addaction name="actiondda"/>
<addaction name="actionCSV_C"/>
</widget>
<addaction name="action_O"/>
<addaction name="menu_S"/>
<addaction name="actiond"/>
<addaction name="separator"/>
<addaction name="actiond_2"/>
</widget>
<widget class="QMenu" name="menu">
<!-- 帮助菜单 -->
<property name="title">
<string>帮助(&amp;H)</string>
</property>
<addaction name="action_H"/>
<addaction name="action_B"/>
<addaction name="separator"/>
<addaction name="action_A"/>
</widget>
<addaction name="menu_F"/>
<addaction name="menu"/>
</widget>
<!-- ... 省略了动作action的定义 -->
</widget>
<resources/>
<connections/>
</ui>
```
### 代码解释:
- **窗口设置**:定义了窗口的初始大小、最小尺寸策略、标题和布局方向。
- **中央窗口部件**:包含一个垂直布局,其中有两个水平布局和一个标签,水平布局中包含选项卡控件。
- **选项卡控件**:包含多个选项卡,每个选项卡都有不同的布局和组件,如文本框、标签、按钮等。
- **状态栏和菜单栏**:定义了窗口的状态栏和菜单栏,菜单栏包含文件和帮助两个菜单,其中文件菜单有导出数据的子菜单。
这个XML文件是Qt Designer生成的用于描述GUI的布局和组件。开发者可以根据需要修改这个文件但通常建议直接在Qt Designer中进行可视化编辑以避免手动编辑错误。
Loading…
Cancel
Save