8.31版本

master
WuJun
parent 510364f8d9
commit 541ffbaf39

@ -0,0 +1,520 @@
#############################################################################
# Makefile for building: Modules
# Generated by qmake (3.1) (Qt 5.14.2)
# Project: ..\Modules\Modules.pro
# Template: app
# Command: D:\QT\5.14.2\mingw73_32\bin\qmake.exe -o Makefile ..\Modules\Modules.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
#############################################################################
MAKEFILE = Makefile
EQ = =
first: debug
install: debug-install
uninstall: debug-uninstall
QMAKE = D:\QT\5.14.2\mingw73_32\bin\qmake.exe
DEL_FILE = del
CHK_DIR_EXISTS= if not exist
MKDIR = mkdir
COPY = copy /y
COPY_FILE = copy /y
COPY_DIR = xcopy /s /q /y /i
INSTALL_FILE = copy /y
INSTALL_PROGRAM = copy /y
INSTALL_DIR = xcopy /s /q /y /i
QINSTALL = D:\QT\5.14.2\mingw73_32\bin\qmake.exe -install qinstall
QINSTALL_PROGRAM = D:\QT\5.14.2\mingw73_32\bin\qmake.exe -install qinstall -exe
DEL_FILE = del
SYMLINK = $(QMAKE) -install ln -f -s
DEL_DIR = rmdir
MOVE = move
IDC = idc
IDL = midl
ZIP = zip -r -9
DEF_FILE =
RES_FILE =
SED = $(QMAKE) -install sed
MOVE = move
SUBTARGETS = \
debug \
release
debug: FORCE
$(MAKE) -f $(MAKEFILE).Debug
debug-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Debug
debug-all: FORCE
$(MAKE) -f $(MAKEFILE).Debug all
debug-clean: FORCE
$(MAKE) -f $(MAKEFILE).Debug clean
debug-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Debug distclean
debug-install: FORCE
$(MAKE) -f $(MAKEFILE).Debug install
debug-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Debug uninstall
release: FORCE
$(MAKE) -f $(MAKEFILE).Release
release-make_first: FORCE
$(MAKE) -f $(MAKEFILE).Release
release-all: FORCE
$(MAKE) -f $(MAKEFILE).Release all
release-clean: FORCE
$(MAKE) -f $(MAKEFILE).Release clean
release-distclean: FORCE
$(MAKE) -f $(MAKEFILE).Release distclean
release-install: FORCE
$(MAKE) -f $(MAKEFILE).Release install
release-uninstall: FORCE
$(MAKE) -f $(MAKEFILE).Release uninstall
Makefile: ../Modules/Modules.pro D:/QT/5.14.2/mingw73_32/mkspecs/win32-g++/qmake.conf D:/QT/5.14.2/mingw73_32/mkspecs/features/spec_pre.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/qdevice.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/features/device_config.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/sanitize.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/gcc-base.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/g++-base.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/angle.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/windows_vulkan_sdk.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/windows-vulkan.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/g++-win32.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/common/windows-desktop.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/qconfig.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3danimation.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3danimation_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dcore.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dcore_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dextras.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dextras_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dinput.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dinput_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dlogic.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dlogic_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquick.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquick_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickanimation.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickextras.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickextras_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickinput.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickinput_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickrender.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickrender_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickscene2d.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3drender.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3drender_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_accessibility_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axbase.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axbase_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axcontainer.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axcontainer_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axserver.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axserver_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bluetooth.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bluetooth_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bodymovin_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bootstrap_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_charts.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_charts_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_concurrent.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_concurrent_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_core.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_core_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_datavisualization.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_datavisualization_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_dbus.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_dbus_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designer.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designer_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designercomponents_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_edid_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_egl_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_fb_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gamepad.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gamepad_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gui.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gui_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_help.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_help_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_location.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_location_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimedia.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimedia_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimediawidgets.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_network.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_network_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_networkauth.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_networkauth_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_nfc.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_nfc_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_opengl.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_opengl_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_openglextensions.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_openglextensions_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_packetprotocol_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioning.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioning_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioningquick.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioningquick_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_printsupport.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_printsupport_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_purchasing.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_purchasing_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qml.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qml_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmldebug_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmldevtools_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlmodels.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlmodels_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmltest.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmltest_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlworkerscript.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3d.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3d_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dassetimport.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dassetimport_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3drender.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3drender_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3druntimerender.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3druntimerender_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dutils.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dutils_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickcontrols2.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickparticles_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickshapes_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quicktemplates2.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickwidgets.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickwidgets_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_remoteobjects.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_remoteobjects_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_repparser.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_repparser_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_script.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_script_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scripttools.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scripttools_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scxml.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scxml_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sensors.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sensors_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialbus.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialbus_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialport.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialport_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sql.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sql_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_svg.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_svg_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_testlib.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_testlib_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_texttospeech.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_texttospeech_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_theme_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uiplugin.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uitools.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uitools_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_virtualkeyboard.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_virtualkeyboard_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_webchannel.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_webchannel_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_websockets.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_websockets_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_widgets.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_widgets_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_winextras.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_winextras_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xml.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xml_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xmlpatterns.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_zlib_private.pri \
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt_functions.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt_config.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/win32-g++/qmake.conf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/spec_post.prf \
.qmake.stash \
D:/QT/5.14.2/mingw73_32/mkspecs/features/exclusive_builds.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/toolchain.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/default_pre.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/default_pre.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/resolve_config.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/exclusive_builds_post.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/default_post.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/console.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/qml_debug.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/precompile_header.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/warn_on.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/resources_functions.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/resources.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/moc.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/opengl.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/uic.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/qmake_use.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/file_copies.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/testcase_targets.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/exceptions.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/yacc.prf \
D:/QT/5.14.2/mingw73_32/mkspecs/features/lex.prf \
../Modules/Modules.pro \
D:/QT/5.14.2/mingw73_32/lib/Qt5SerialPort.prl \
D:/QT/5.14.2/mingw73_32/lib/Qt5Widgets.prl \
D:/QT/5.14.2/mingw73_32/lib/Qt5Gui.prl \
D:/QT/5.14.2/mingw73_32/lib/Qt5Network.prl \
D:/QT/5.14.2/mingw73_32/lib/Qt5Core.prl \
D:/QT/5.14.2/mingw73_32/mkspecs/features/build_pass.prf
$(QMAKE) -o Makefile ..\Modules\Modules.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
D:/QT/5.14.2/mingw73_32/mkspecs/features/spec_pre.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/qdevice.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/features/device_config.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/sanitize.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/gcc-base.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/g++-base.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/angle.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/windows_vulkan_sdk.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/windows-vulkan.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/g++-win32.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/common/windows-desktop.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/qconfig.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3danimation.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3danimation_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dcore.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dcore_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dextras.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dextras_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dinput.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dinput_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dlogic.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dlogic_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquick.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquick_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickanimation.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickextras.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickextras_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickinput.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickinput_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickrender.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickrender_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickscene2d.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3drender.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_3drender_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_accessibility_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axbase.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axbase_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axcontainer.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axcontainer_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axserver.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_axserver_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bluetooth.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bluetooth_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bodymovin_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_bootstrap_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_charts.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_charts_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_concurrent.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_concurrent_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_core.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_core_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_datavisualization.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_datavisualization_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_dbus.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_dbus_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designer.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designer_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_designercomponents_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_edid_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_egl_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_fb_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gamepad.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gamepad_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gui.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_gui_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_help.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_help_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_location.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_location_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimedia.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimedia_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimediawidgets.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_network.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_network_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_networkauth.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_networkauth_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_nfc.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_nfc_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_opengl.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_opengl_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_openglextensions.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_openglextensions_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_packetprotocol_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioning.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioning_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioningquick.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_positioningquick_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_printsupport.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_printsupport_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_purchasing.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_purchasing_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qml.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qml_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmldebug_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmldevtools_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlmodels.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlmodels_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmltest.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmltest_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlworkerscript.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qmlworkerscript_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3d.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3d_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dassetimport.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dassetimport_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3drender.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3drender_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3druntimerender.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3druntimerender_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dutils.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick3dutils_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quick_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickcontrols2.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickparticles_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickshapes_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quicktemplates2.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickwidgets.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_quickwidgets_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_remoteobjects.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_remoteobjects_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_repparser.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_repparser_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_script.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_script_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scripttools.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scripttools_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scxml.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_scxml_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sensors.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sensors_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialbus.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialbus_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialport.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_serialport_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sql.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_sql_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_svg.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_svg_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_testlib.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_testlib_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_texttospeech.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_texttospeech_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_theme_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uiplugin.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uitools.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_uitools_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_virtualkeyboard.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_virtualkeyboard_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_webchannel.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_webchannel_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_websockets.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_websockets_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_widgets.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_widgets_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_winextras.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_winextras_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xml.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xml_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xmlpatterns.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/modules/qt_lib_zlib_private.pri:
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt_functions.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt_config.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/win32-g++/qmake.conf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/spec_post.prf:
.qmake.stash:
D:/QT/5.14.2/mingw73_32/mkspecs/features/exclusive_builds.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/toolchain.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/default_pre.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/default_pre.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/resolve_config.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/exclusive_builds_post.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/default_post.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/console.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/qml_debug.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/precompile_header.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/warn_on.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/qt.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/resources_functions.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/resources.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/moc.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/win32/opengl.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/uic.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/qmake_use.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/file_copies.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/testcase_targets.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/exceptions.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/yacc.prf:
D:/QT/5.14.2/mingw73_32/mkspecs/features/lex.prf:
../Modules/Modules.pro:
D:/QT/5.14.2/mingw73_32/lib/Qt5SerialPort.prl:
D:/QT/5.14.2/mingw73_32/lib/Qt5Widgets.prl:
D:/QT/5.14.2/mingw73_32/lib/Qt5Gui.prl:
D:/QT/5.14.2/mingw73_32/lib/Qt5Network.prl:
D:/QT/5.14.2/mingw73_32/lib/Qt5Core.prl:
D:/QT/5.14.2/mingw73_32/mkspecs/features/build_pass.prf:
qmake: FORCE
@$(QMAKE) -o Makefile ..\Modules\Modules.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:
$(MAKEFILE).Debug: Makefile
$(MAKEFILE).Release: Makefile

@ -0,0 +1,9 @@
#需要配置的信息
[PLATFORM]
#平台的设备识别码
platformcode=220104000036
#平台的IP地址
IPinfo=103.156.68.103
#平台的端口
port=6306

@ -0,0 +1,32 @@
QT += core
QT -= gui
QT += serialport widgets
QT += network
CONFIG += c++11
TARGET = Modules
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
hotcameramodule.cpp \
mynetmanager.cpp
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked 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
# 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
HEADERS += \
defines.h \
hotcameramodule.h \
mynetmanager.h

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2023-08-22T14:34:21. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{dda57dd3-5b38-43a7-9da2-6f4b6b3660db}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_msvc2017_64_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/yinuo_project/zhongdian/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/yinuo_project/zhongdian/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/yinuo_project/zhongdian/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:D:/yinuo_project/zhongdian/Modules/Modules.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">D:/yinuo_project/zhongdian/Modules/Modules.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/yinuo_project/zhongdian/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -0,0 +1,562 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2023-08-14T16:13:02. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{f9231c9d-29cd-4721-adbe-3db28e0b6463}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/new/Modules/Modules.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/new/Modules/Modules.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/new/build-Modules-Desktop_Qt_5_14_2_MinGW_64_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win64_msvc2017_64_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/new/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/new/Modules/Modules.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/new/Modules/Modules.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/new/build-Modules-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.1, 2023-05-10T15:12:00. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{fdb8d9d2-ac9a-4bc5-8670-5bdddab385d5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">0</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.14.2 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5142.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/verygood/yanshou/gitlab/znzd-202203/build-Modules-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/verygood/yanshou/gitlab/znzd-202203/build-Modules-Desktop_Qt_5_14_2_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/verygood/yanshou/gitlab/znzd-202203/build-Modules-Desktop_Qt_5_14_2_MinGW_32_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/verygood/yanshou/gitlab/znzd-202203/Modules/Modules.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/verygood/yanshou/gitlab/znzd-202203/Modules/Modules.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/verygood/yanshou/gitlab/znzd-202203/build-Modules-Desktop_Qt_5_14_2_MinGW_32_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -0,0 +1,6 @@
#ifndef DEFINES_H
#define DEFINES_H
#define CAP_PIC_DIR "/IMAGE" //抓图目录
#endif // DEFINES_H

@ -0,0 +1,605 @@
#include "hotcameramodule.h"
#include "mynetmanager.h"
#include "defines.h"
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkReply>
#define HOTCAMERA_URL "/ISAPI/Event/notification/alertStream"
HotCameraModule::HotCameraModule(int id, QObject *parent) : QObject(parent)
{
this->id = id;
module_enabled = false;
moduleParaReadFromFile(&para);
net = new MyNetManager(this);
connect(net, &MyNetManager::sigCapPicture, this, &HotCameraModule::onSavePicture);
//2023.8.15
//获取实时温度信号槽
connect(net, &MyNetManager::sigGetTemperature, this, &HotCameraModule::onSaveTemperature);
connect(net, SIGNAL(sigTempAlarm(float)), this, SLOT(onTempAlarm(float)));
connect(net, SIGNAL(sigKeepBrokeAlarm()), this, SLOT(onConnectBrokeAlarm()));
net->SetIp(para.IP_Adress);
net->SetTempraturePara(para.reflectivetemperature,para.emissivity, para.distant);
net->SetAlarmPara(para.alert, para.alarm, para.alarm_time);
appTimer = new QTimer(this);
connect(appTimer, SIGNAL(timeout()), this, SLOT(appTimerProcess()));
appTimer->start(1000);
removeTempAlarmFile();
qDebug() << "HotCameraModule init ok " << endl;
}
HotCameraModule::~HotCameraModule()
{
}
void HotCameraModule::onSavePicture(QByteArray &d)
{
qDebug()<<"onSavePicture\n";
QString save_path;
if(id == 0){
save_path = "/home/data/IMAGE/";
}else if(id == 1){
save_path = "/home/data/IMAGE1/";
}else{
return;
}
QDir dir(QDir::currentPath());
if(!dir.exists(save_path))
{
dir.mkdir(save_path);
qDebug()<<QString("文件夹%1创建成功").arg(save_path);
}
QDateTime dateTime = QDateTime::currentDateTime();
QString currentdatetime = dateTime.toString("yyyyMMdd_hhmmss");
QString pic_name = save_path + currentdatetime + "_temp.jpeg";
QFile file(pic_name);
if(!file.open(QIODevice::WriteOnly|QIODevice::ReadOnly))
{
qDebug()<<"/**********************************文件打开失败*******************************/";
return;
}
file.write(d);
uint64_t filesize = file.size();
qDebug()<<"filesize:"<< filesize<<endl;
file.close();
//通知外界接收
notifyCapPictureFinished(pic_name);
//SaveTempPictureFileName = pic_name;
}
//2023.8.15
//存放获取的实时温度,并发出通知
void HotCameraModule::onSaveTemperature(QByteArray &d)
{
qDebug()<<"onSaveTemperature\n";
QString save_path;
if(id == 0){
save_path = "/home/data/Real-TimeTemperature.txt";
}else if(id == 1){
save_path = "/home/data/Real-TimeTemperature1.txt";
}else{
return;
}
QJsonParseError json_error;
QJsonDocument doucment = QJsonDocument::fromJson(d,&json_error);
if(json_error.error == QJsonParseError::NoError)
{
QJsonObject obj = doucment.object();
QJsonObject TemperatureInfoList = obj.value("ThermometryRulesTemperatureInfoList").toObject();
QJsonArray TemperatureInfo = TemperatureInfoList.value("ThermometryRulesTemperatureInfo").toArray();
QJsonObject TemperatureType = TemperatureInfo[0].toObject();
float maxTemperature = TemperatureType.value("maxTemperature").toDouble();
float minTemperature = TemperatureType.value("minTemperature").toDouble();
float averageTemperature = TemperatureType.value("averageTemperature").toDouble();
QFile file(save_path);
if(!file.open(QIODevice::WriteOnly|QIODevice::ReadOnly))
{
qDebug()<<"/**********************************文件打开失败*******************************/";
return;
}
QTextStream setTemperature_data(&file);
setTemperature_data << maxTemperature <<endl
<< minTemperature <<endl
<< averageTemperature <<endl;
uint64_t filesize = file.size();
qDebug()<<"filesize:"<< filesize<<endl;
file.close();
}
else
{
qDebug() << QString("Temperature文件Json读取失败!");
}
return;
// QDateTime dateTime = QDateTime::currentDateTime();
// QString currentdatetime = dateTime.toString("yyyyMMdd_hhmmss");
// QString pic_name = save_path + currentdatetime + "_temp.jpeg";
// QFile file(pic_name);
// if(!file.open(QIODevice::WriteOnly|QIODevice::ReadOnly))
// {
// qDebug()<<"/**********************************文件打开失败*******************************/";
// return;
// }
// file.write(d);
// uint64_t filesize = file.size();
// qDebug()<<"filesize:"<< filesize<<endl;
// file.close();
// //通知外界接收
// notifyCapPictureFinished(pic_name);
}
void HotCameraModule::onTempAlarm(float temp)
{
Q_UNUSED(temp);
qDebug()<< "onTempAlarm";
TempAlarmFlag = true;
net->GetPicture();
//获取图片同时获取实时温度
net->GetRealTimeTemperature();
}
void HotCameraModule::onConnectBrokeAlarm()
{
QString save_file;
if(id == 0){
save_file = "/home/data/Pop_rxy1.txt";
}else if(id == 1){
save_file = "/home/data/Pop_rxy2.txt";
}
QFile file(save_file);
if (file.open(QFile::WriteOnly))
{
QTextStream s(&file);
qDebug()<< QString("onConnectBrokeAlarm => save %1.").arg(save_file);
}
file.close();
}
void HotCameraModule::moduleParaReadFromFile(HotCameraPara *p)
{
QString para_file;
if(id == 0){
para_file = "/home/data/camera.txt";
}else if(id == 1){
para_file = "/home/data/camera1.txt";
}else{
return;
}
QFile file(para_file); //文件路径
if (file.open(QFile::ReadOnly))
{
QTextStream in(&file);
p->IP_Adress = in.readLine();
qDebug()<<QString("IP_Adress %1").arg( p->IP_Adress);
p->month = in.readLine().toInt();
qDebug()<<QString("month %1").arg( p->month);
p->week = in.readLine().toInt();
qDebug()<<QString("week %1").arg( p->week);
p->day = in.readLine().toInt();
qDebug()<<QString("day %1").arg( p->day);
QString temp = in.readLine();
qDebug()<<QString("temp ")<<temp;
QString hours =temp.left(temp.length()-2);
qDebug()<<QString("hours ")<<hours;
QString minutes =temp.right(2);
qDebug()<<QString("hours ")<<minutes;
p->start_hour = hours.toUInt();
p->start_minute = minutes.toUInt();
temp = in.readLine();
qDebug()<<QString("temp ")<<temp;
hours =temp.left(temp.length()-2);
minutes =temp.right(2);
p->end_hour = hours.toUInt();
qDebug()<<QString("end_hour %1").arg( p->end_hour);
p->end_minute = minutes.toUInt();
qDebug()<<QString("end_minute %1").arg( p->end_minute);
p->reflectivetemperature = in.readLine().toInt();
p->emissivity = in.readLine().toFloat();
p->distant = in.readLine().toInt();
p->alert = in.readLine().toInt();
p->alarm = in.readLine().toInt();
p->alarm_time = in.readLine().toInt();
p->nominal_capacity = in.readLine().toInt();
p->calculated_capacity = in.readLine().toInt();
}
file.close();
}
void HotCameraModule::notifyCapPictureFinished(const QString &pic_name)
{
/***** 温度告警,存储抓图文件目录 *****/
if(TempAlarmFlag){
QString temp_file;
if(id == 0){
temp_file = "/home/data/temperature.txt";
}else if(id == 1){
temp_file = "/home/data/temperature1.txt";
}
QFile file(temp_file);
if (file.open(QFile::WriteOnly))
{
QTextStream set_wifi_connect(&file);
set_wifi_connect << pic_name;//写入温度照片路径
qDebug()<< QString("notifyCapPictureFinished => TempAlarmFlag save %1 pic_name.").arg(temp_file);
}
file.close();
TempAlarmFlag = false;
return;
}
/***** 手动抓图,存储抓图文件目录 *****/
//发送文件路径
QString save_path_file;
if(id == 0){
save_path_file = "/home/data/rxy_1.txt";
}else if(id == 1){
save_path_file = "/home/data/rxy_2.txt";
}
QFile file(save_path_file);
if (file.open(QFile::WriteOnly))
{
QTextStream set_wifi_connect(&file);
set_wifi_connect << pic_name;//写入温度照片路径
qDebug()<< QString("notifyCapPictureFinished => save %1 pic_name.").arg(save_path_file);
}
file.close();
QString msg_file_name;
if(id == 0){
msg_file_name = "/home/data/rxy_can_show1.txt";
}else if(id == 1){
msg_file_name = "/home/data/rxy_can_show2.txt";
}
//发送可显示消息
QFile file1(msg_file_name);//文件路径
if(file1.open(QFile::WriteOnly))
{
QTextStream set_wifi_connect(&file1);
set_wifi_connect<< "1";
qDebug()<< QString("notifyCapPictureFinished => save %1 to show.").arg(msg_file_name);
}
file1.close();
}
void HotCameraModule::appTimerProcess()
{
//qDebug() << QString("[%1]: appTimerProcess\n").arg(id);
//时间更改检查
//qDebug() << QString("[%1]:eventTimeChangeCheck\n").arg(id);
eventTimeChangeCheck();
//qDebug() << QString("[%1]:eventConnectTimeCheck\n").arg(id);
//检测热像仪连接时间窗口,并连接
eventConnectTimeCheck();
//qDebug() << QString("[%1]:eventCapPictureCheck\n").arg(id);
//检测抓图文件,并抓图
eventCapPictureCheck();
//2023.8.14
//检测获取温度文件,并获取实时温度
eventGetTemperatureCheck();
//qDebug() << QString("[%1]:eventParaChangedCheck\n").arg(id);
//参数更改检查
eventParaChangedCheck();
//连接成功,删除长连接断线告警文件
eventConnectBrokeAlarmCheck();
//热像仪功能关闭/打开控制
eventConnectSwitch();
}
bool HotCameraModule::eventParaChangedCheck()
{
QString change_set_file;
if(id == 0){
change_set_file = "/home/data/change_set.txt";
}else if(id == 1){
change_set_file = "/home/data/change_set1.txt";
}
QFileInfo file_set(change_set_file);
if (file_set.exists() == true)
{
qDebug()<< QString("%1 changed!").arg(change_set_file);
HotCameraPara temp;
moduleParaReadFromFile(&temp);
if(temp.IP_Adress != para.IP_Adress){
qDebug() << QString("<<<<< HotCameraModule[%1] IP_Adress changed net->KeepState() =%2\n").arg(id).arg(net->KeepState());
if(net->KeepState() == NET_CONNECTED){
qDebug() << QString("net%1->KeepReconnect...").arg(id);
net->KeepReconnect();
}
}
if((temp.reflectivetemperature != para.reflectivetemperature) ||
(temp.emissivity != para.emissivity) ||
(temp.distant != para.distant)
)
{
qDebug() << QString("<<<<< HotCameraModule[%1] net->SetTempraturePara...\n").arg(id);
net->SetTempraturePara(temp.reflectivetemperature,temp.emissivity, temp.distant);
}
if((temp.alert != para.alert) ||
(temp.alarm != para.alarm) ||
(temp.alarm_time != para.alarm_time)
)
{
qDebug() << QString("<<<<< HotCameraModule[%1] net->SetAlarmPara...").arg(id);
net->SetAlarmPara(temp.alert, temp.alarm, temp.alarm_time);
}
memcpy(&para, &temp, sizeof(HotCameraPara));
QFile file(change_set_file);
file.remove();
qDebug() << "change_set";
return true;
}
return false;
}
bool HotCameraModule::eventCapPictureCheck()
{
QString file_name;
if(id == 0){
file_name = "/home/data/rxy_show1.txt";
}else if(id == 1){
file_name = "/home/data/rxy_show2.txt";
}else{
return false;
}
QFileInfo fileInfo(file_name);
if(fileInfo.exists() == true)
{
qDebug()<< QString("%1 changed, start capture picture!").arg(file_name)<<endl;
if(module_enabled == true)
{
net->GetPicture();
//获取图片同时获取实时温度
net->GetRealTimeTemperature();
}
else{
}
QFile file1(file_name);
file1.remove();
return true;
}
return false;
}
//2023.8.15
//获取实时温度事件
bool HotCameraModule::eventGetTemperatureCheck()
{
QString file_name;
if(id == 0){
file_name = "/home/data/rxy_temperature_show1.txt";
}else if(id == 1){
file_name = "/home/data/rxy_temperature_show2.txt";
}else{
return false;
}
QFileInfo fileInfo(file_name);
if(fileInfo.exists() == true)
{
qDebug()<< QString("%1 changed, start get Temp!").arg(file_name)<<endl;
if(module_enabled == true)
{
net->GetRealTimeTemperature();
}
else{
}
QFile file1(file_name);
file1.remove();
return true;
}
return false;
}
bool HotCameraModule::eventTimeChangeCheck()
{
QString time_change_file;
if(id == 0){
time_change_file = "/home/data/change_time.txt";
}else if(id == 1){
time_change_file = "/home/data/change_time1.txt";
}else{
return false;
}
QFileInfo file_time(time_change_file);
if (file_time.exists() == true)
{
qDebug()<< QString("%1 changed!").arg(time_change_file);
//更新参数文件,时间范围值会被更新
// HotCameraPara temp;
// moduleParaReadFromFile(&temp);
// memcpy(&para, & temp, sizeof(HotCameraPara));
QFile file_change_time(time_change_file);
file_change_time.remove();
qDebug() << "eventTimeChangeCheck!\n" << endl;
return true;
}
return false;
}
bool HotCameraModule::eventConnectTimeCheck()
{
if(module_enabled){
uint32_t start_minute, end_minute, now_minute;
start_minute = para.start_hour * 60 + para.start_minute;
end_minute = para.end_hour * 60 + para.end_minute;
#if 0
QDateTime dateTime = QDateTime::currentDateTime();
now_minute = dateTime.time().hour() * 60 + dateTime.time().minute();
#else
QDateTime dateTime = QDateTime::currentDateTimeUtc();
long nowtime = dateTime.toTime_t() + 28800;
struct tm *timp;
timp = gmtime(&nowtime);
now_minute = timp->tm_hour * 60 + timp->tm_min;
#endif
//qDebug() << QString("<<<<< HotCameraModule[%1]:").arg(id) << dateTime;
//qDebug("<<<<< HotCameraModule[%d] :start_minute[%u],end_minute[%u],now_minute[%u]\n", id, start_minute, end_minute, now_minute);
if(now_minute >= start_minute && now_minute <= end_minute){
moduleConnect();
}else{
//qDebug("<<<<< HotCameraModule[%d] not in connect time range, disconnect!!!\n",id);
modleDisConnect();
}
}else {
//qDebug("<<<<< HotCameraModule[%d] module_enabled false disconnect!!!\n",id);
modleDisConnect();
}
return true;
}
bool HotCameraModule::eventConnectBrokeAlarmCheck()
{
if(net->KeepState() != NET_CONNECTED){
return false;
}
if(removeTempAlarmFile()){
return true;
}
return false;
}
bool HotCameraModule::eventConnectSwitch()
{
QString time_change_file;
if(id == 0){
time_change_file = "/home/data/connect_rxy1.txt";
}else if(id == 1){
time_change_file = "/home/data/connect_rxy2.txt";
}else{
return false;
}
QFile file(time_change_file); //文件路径
if (file.open(QFile::ReadOnly) == true)
{
QTextStream set_wifi_connect(&file);
if(set_wifi_connect.readLine().toInt() == 1)
{
//打开热像仪
module_enabled = true;
// qDebug()<<"eventConnectSwitch_Open hot!";
}
else
{
//关闭热像仪
module_enabled = false;
// qDebug()<<"eventConnectSwitch_Close hot!";
}
}
else{
;
}
return false;
}
void HotCameraModule::moduleConnect()
{
if(net->KeepState() == NET_DISCONNECT){
qDebug()<< "KeepState is NET_DISCONNECT, to KeepConnect...";
net->KeepConnect();
}
}
void HotCameraModule::modleDisConnect()
{
if(net->KeepState() != NET_DISCONNECT){
net->KeepDisconnect();
}
}
bool HotCameraModule::removeTempAlarmFile()
{
QString remove_file;
if(id == 0){
remove_file = "/home/data/Pop_rxy1.txt";
}else if(id == 1){
remove_file = "/home/data/Pop_rxy2.txt";
}
QFileInfo file_time(remove_file);
if (file_time.exists() == true)
{
qDebug()<< QString("eventConnectBrokeAlarmCheck remove %1 \n").arg(remove_file);
QFile file(remove_file);
file.remove();
return true;
}
return false;
}

@ -0,0 +1,104 @@
#ifndef HOTCAMERAMODULE_H
#define HOTCAMERAMODULE_H
#include <QObject>
#include <QByteArray>
#include <QNetworkAccessManager>
struct HotCameraPara
{
QString IP_Adress;
int month;
int week;
int day;
int start_hour;
int start_minute;
int end_hour;
int end_minute;
int reflectivetemperature ;
float emissivity ;
int distant ;
int alert ;
int alarm ;
int alarm_time;
uint32_t nominal_capacity;
uint32_t calculated_capacity;
};
class MyNetManager;
class QTimer;
class HotCameraModule : public QObject
{
Q_OBJECT
typedef void (*ModuleNetProcess)();
public:
explicit HotCameraModule(int id, QObject *parent = nullptr);
virtual ~HotCameraModule();
signals:
void sigRunTimeChanged();
public slots:
/**
* @brief
*/
void onSavePicture(QByteArray & d);
/**
* @brief
*/
void onSaveTemperature(QByteArray & d);
/**
* @brief
* @param temp
*/
void onTempAlarm(float temp);
/**
* @brief
*/
void onConnectBrokeAlarm();
private slots:
void appTimerProcess();
private:
//热成像开启或关闭
int id;
bool module_enabled = false;
bool TempAlarmFlag = false;
MyNetManager * net;
HotCameraPara para;
//QString SaveTempPictureFileName;//最近存储的温度图片文件名
//热成像参数初始化
void moduleParaReadFromFile(HotCameraPara *p);
//通知抓图完成
void notifyCapPictureFinished(const QString &pic_name);
QTimer *appTimer;
bool eventParaChangedCheck();
bool eventCapPictureCheck();
bool eventGetTemperatureCheck(); //获取实时温度
bool eventTimeChangeCheck();
bool eventConnectTimeCheck();
bool eventConnectBrokeAlarmCheck();
bool eventConnectSwitch();
void moduleConnect();
void modleDisConnect();
bool removeTempAlarmFile();
};
#endif // HOTCAMERAMODULE_H

@ -0,0 +1,130 @@
#include <QCoreApplication>
#include <QThread>
#include "hotcameramodule.h"
#ifndef WIN32
#include <execinfo.h>
#include <signal.h>
#include <stdio.h>
#include<unistd.h>
static void print_memory_base(void)
{
char strbuf[512];
pid_t pid = getpid();
FILE *pf;
sprintf(strbuf, "/proc/%d/maps", pid);
pf = fopen(strbuf, "r");
if(NULL == pf) return;
while(fgets(strbuf, sizeof(strbuf), pf) != NULL) {
printf("%s", strbuf);
}
fclose(pf);
}
static void print_stack_trace(void)
{
char strbuf[256], *pstr;
void *array[64];
size_t size, i;
char **strings;
size = backtrace(array, 64);
strings = backtrace_symbols(array, size);
//printf ("Obtained %zd stack frames.\n", size);
pstr = strbuf;
for(i=1; i<=size; i++) {
sprintf(pstr, "%08X:", (int)array[i]);
pstr += strlen(pstr);
if(0 == (i%8)) {
printf("%s\n", strbuf);
pstr = strbuf;
}
}
if(pstr != strbuf) {
printf("%s\n", strbuf);
}
for(i=0; i<size; i++) {
printf("%s\n", strings[i]);
}
free(strings);
}
static const char *signal_name(int signum)
{
struct sig_name_s
{
int signum;
const char *name;
};
static const struct sig_name_s sig_name[] =
{
{SIGFPE, "SIGFPE"},
{SIGINT, "SIGINT"},
{SIGQUIT, "SIGQUIT"},
{SIGILL, "SIGILL"},
{SIGABRT, "SIGABRT"},
{SIGPIPE, "SIGPIPE"},
{SIGTERM, "SIGTERM"},
{SIGTSTP, "SIGTSTP"},
{SIGSEGV, "SIGSEGV"},
};
static const char *def_name = "unknown";
for(size_t i=0; i<(sizeof(sig_name)/sizeof(sig_name[0])); i++)
{
if(signum == sig_name[i].signum)
return sig_name[i].name;
}
return def_name;
}
static void signal_proc(int signum)
{
const char *signame = signal_name(signum);
printf("\n!!error!!catch signal %d(%s)\n", signum, signame);
print_stack_trace();
print_memory_base();
signal(signum, SIG_DFL);
raise(signum);
}
void debug_install_signal(void)
{
signal(SIGFPE, signal_proc); // 数学相关异常
signal(SIGINT, signal_proc); //中断进程 Ctrl-C
signal(SIGQUIT, signal_proc);
signal(SIGILL, signal_proc); // 非法指令异常
signal(SIGABRT, signal_proc);
signal(SIGPIPE, signal_proc); //向一个没有读进程的管道写数据
signal(SIGTERM, signal_proc); //软件终止信号
signal(SIGTSTP, signal_proc);
signal(SIGSEGV, signal_proc); // 非法内存访问
}
#endif
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread t1, t2;
#ifndef WIN32
debug_install_signal();
#endif
HotCameraModule m1(0);
HotCameraModule m2(1);
m1.moveToThread(&t1);
m2.moveToThread(&t2);
t1.start();
t2.start();
return a.exec();
}

@ -0,0 +1,417 @@
#include "mynetmanager.h"
#include <QUrl>
#include <QByteArray>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QEventLoop>
#include <iostream>
#include <QDebug>
#include <QFile>
#include <QTextStream>
#include <QIODevice>
#include <QIODevice>
#include <QDataStream>
#include <QTimer>
#include <QDir>
using namespace std;
MyNetManager::MyNetManager(QObject *parent): QObject(parent){
m_pManager = new QNetworkAccessManager(this);
keep = nullptr;
keepNetState = NET_DISCONNECT;
keepTimer = new QTimer(this);
connect(m_pManager, &QNetworkAccessManager::finished,this,
&MyNetManager::onKeepConnectFinished);
}
MyNetManager::~MyNetManager()
{
}
void MyNetManager::SetIp(QString ip)
{
qDebug() << QString("SetIp : %1\n").arg(ip);
this->ip = ip;
}
bool MyNetManager::SetTempraturePara(uint16_t reflectiveTemperature, float emissivity, uint16_t distance)
{
char buff[1024];
qDebug() << QString("SetTempraturePara : reflectiveTemperature:%1, emissivity:%2, distance:%3\n")
.arg(reflectiveTemperature).arg(emissivity).arg(distance);
sprintf(buff, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\
<PixelToPixelParam version=\"2.0\" xmlns=\"http://www.hikvision.com/ver20/XMLSchema\">\
<id>2</id>\
<maxFrameRate>400</maxFrameRate>\
<reflectiveEnable>false</reflectiveEnable>\
<reflectiveTemperature>%d</reflectiveTemperature>\
<emissivity>%f</emissivity>\
<distance>%d</distance>\
<refreshInterval>80</refreshInterval>\
<distanceUnit>centimeter</distanceUnit>\
<temperatureDataLength>4</temperatureDataLength>\
<JpegPictureWithAppendData>\
<jpegPicEnabled>true</jpegPicEnabled>\
<visiblePicEnabled>true</visiblePicEnabled>\
<rulesOverlayEnable>false</rulesOverlayEnable>\
<visiblePicResolution>800*600</visiblePicResolution>\
<thermalPicResolution>160*120</thermalPicResolution>\
</JpegPictureWithAppendData>\
</PixelToPixelParam>",
reflectiveTemperature,emissivity,distance);
QByteArray array = QByteArray(buff);
bool rtn = putWait(ip + "/ISAPI/Thermal/channels/2/thermometry/pixelToPixelParam", array);
qDebug()<< "SetTempraturePara rtn =" << rtn << endl;
return rtn;
}
bool MyNetManager::SetAlarmPara(uint16_t alert, uint16_t alarm, uint16_t alarm_time)
{
char buff[4096];
qDebug() << QString("SetAlarmPara : alarm:%1, emissivity:%2, alarm_time:%3\n")
.arg(alert).arg(alarm).arg(alarm_time);
sprintf(buff, R"(<?xml version="1.0" encoding="UTF-8"?>
<ThermometryBasicParam version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<id>2</id>
<enabled>true</enabled>
<streamOverlay>true</streamOverlay>
<pictureOverlay>false</pictureOverlay>
<temperatureRange>0~550</temperatureRange>
<temperatureUnit>degreeCentigrade</temperatureUnit>
<emissivity>0.95</emissivity>
<distanceUnit>centimeter</distanceUnit>
<specialPointThermType>centerPoint</specialPointThermType>
<distance>20</distance>
<reflectiveEnable>false</reflectiveEnable>
<alert>%d</alert>
<alarm>%d</alarm>
<showTempStripEnable>true</showTempStripEnable>
<thermalOpticalTransmittance>1.000</thermalOpticalTransmittance>
<externalOpticsWindowCorrection>20.0</externalOpticsWindowCorrection>
<AlertOutputIOPortList>
<OutputIOPort>
<portID>1</portID>
<enabled>false</enabled>
</OutputIOPort>
</AlertOutputIOPortList>
<AlarmOutputIOPortList>
<OutputIOPort>
<portID>1</portID>
<enabled>false</enabled>
</OutputIOPort>
</AlarmOutputIOPortList>
<alertFilteringTime>0</alertFilteringTime>
<alarmFilteringTime>0</alarmFilteringTime>
<displayMaxTemperatureEnabled>true</displayMaxTemperatureEnabled>
<displayMinTemperatureEnabled>false</displayMinTemperatureEnabled>
<displayAverageTemperatureEnabled>false</displayAverageTemperatureEnabled>
<thermometryInfoDisplayposition>rules_around</thermometryInfoDisplayposition>
<calibrationCoefficientEnabled>false</calibrationCoefficientEnabled>
<displayTemperatureInOpticalChannelEnabled>false</displayTemperatureInOpticalChannelEnabled>
<calibrationFileVersion>V1.0.6.0 build201231</calibrationFileVersion>
<alarmInterval>%d</alarmInterval>
<rulesOverlayMode>alarm</rulesOverlayMode>
<alarmMode>alarm_alert</alarmMode>
<NormalRulesColor>
<R>0</R>
<G>255</G>
<B>0</B>
</NormalRulesColor>
</ThermometryBasicParam>)",
alert,alarm,alarm_time);
QByteArray array = QByteArray(buff);
bool rtn = putWait(ip + "/ISAPI/Thermal/channels/2/thermometry/basicParam", array);
qDebug()<< "SetAlarmPara rtn =" << rtn << endl;
return rtn;
}
bool MyNetManager::GetPicture()
{
qDebug() << QString("GetPicture")<< endl;
QNetworkRequest request;
QUrl qurl = QUrl(ip + "/ISAPI/Streaming/channels/2/picture");
qurl.setUserName("admin");
qurl.setPassword("YN123456789");
request.setRawHeader("Connection","Keep-Alive");
request.setUrl(qurl);
QNetworkReply *reply = m_pManager->get(request);
connect(reply,&QNetworkReply::finished,this,&MyNetManager::onCapPicRelyfinished);
return true;
}
//23.8.14
bool MyNetManager::GetRealTimeTemperature()
{
qDebug() << QString("GetRealTimeTemperature")<< endl;
QNetworkRequest request;
QUrl qurl = QUrl(ip + "/ISAPI/Thermal/channels/2/thermometry/1/rulesTemperatureInfo?format=json");
qurl.setUserName("admin");
qurl.setPassword("YN123456789");
request.setRawHeader("Connection","Keep-Alive");
request.setUrl(qurl);
QNetworkReply *reply = m_pManager->get(request);
connect(reply,&QNetworkReply::finished,this,&MyNetManager::onGetTemperatureRelyfinished);
return true;
}
bool MyNetManager::KeepConnect()
{
qDebug() << QString("KeepConnect");
QNetworkRequest request;
QUrl qurl = QUrl(ip + "/ISAPI/Event/notification/alertStream");
qurl.setUserName("admin");
qurl.setPassword("YN123456789");
request.setRawHeader("Connection","Keep-Alive");
request.setUrl(qurl);
QNetworkReply* reply = m_pManager->get(request);
connect(reply,SIGNAL(readyRead()),this,SLOT(onKeepRelyfinished()));
connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error),
[=](QNetworkReply::NetworkError e){
qDebug() << QString("onKeepConnectErr: %1\n").arg(e);
emit sigKeepBrokeAlarm();
KeepDisconnect();
});
keep = reply;
qDebug() << "keep:" << keep;
//启动倒计数15秒
disconnect(keepTimer,0,0,0);
connect(keepTimer, &QTimer::timeout, this, &MyNetManager::onKeepConnectTimeOut);
keepTimer->start(connect_over_time_seconds);
keepNetState = NET_CONNECTING;
qDebug() << "KeepConnect start...\n";
return true;
}
bool MyNetManager::KeepDisconnect()
{
qDebug() << QString("KeepDisconnect\n");
//m_pManager->clearConnectionCache();
m_pManager->clearAccessCache();
keepNetState = NET_DISCONNECT;
keepTimer->stop();
disconnect(keepTimer,0,0,0);
if(keep == nullptr){
return true;
}
//qDebug() << QString("disconnect\n");
disconnect(keep,0,0,0);
/*
if(keep->isRunning()){
qDebug()<< "keepRelayErrProcess keep->isRunning() true" << endl;
}else{
qDebug()<< "keepRelayErrProcess keep->isRunning() false" << endl;
}
qDebug() << QString("keep->close()\n");
keep->close();
qDebug() << QString("keep->abort()\n");
keep->abort();
*/
qDebug() << QString("keep->deleteLater()\n");
keep->deleteLater();
//keep = nullptr;
return true;
}
bool MyNetManager::KeepReconnect()
{
qDebug() << QString("KeepReconnect\n");
KeepDisconnect();
KeepConnect();
return true;
}
NetState MyNetManager::KeepState()
{
return keepNetState;
}
void MyNetManager::onKeepRelyfinished()
{
QNetworkReply* reply = (QNetworkReply*)sender();
if(reply->error() == QNetworkReply::NoError){
qDebug() << QString("onKeepRelyfinished\n");
keepRelayOkProcess(reply);
}else{
qDebug()<< "!!!!!! onKeepRelyfinished err:"<<reply->errorString()<<endl;
keepRelayErrProcess(reply);
}
}
void MyNetManager::onCapPicRelyfinished()
{
qDebug("onCapPicRelyfinished\n");
QDateTime dateTime;
dateTime = QDateTime::currentDateTime();
QString currentdatetime = dateTime.toString("yyyy_MM_dd hh_mm_ss");
QNetworkReply* reply = (QNetworkReply*)sender();
if(reply->error() == QNetworkReply::NoError){
qDebug() << QString("onCapPicRelyfinished")<<endl;;
capPicData = reply->readAll();
emit sigCapPicture(capPicData);
}else{
qDebug()<< "onCapPicRelyfinished err: " << reply->errorString()<<endl;
}
reply->close();
reply->deleteLater();
}
//23.8.14
//获取实时温度,解析数据方法未写
void MyNetManager::onGetTemperatureRelyfinished()
{
qDebug() << "获取到实时温度!";
QDateTime dateTime;
dateTime = QDateTime::currentDateTime();
QString currentdatetime = dateTime.toString("yyyy_MM_dd hh_mm_ss");
QNetworkReply* reply = (QNetworkReply*)sender();
if(reply->error() == QNetworkReply::NoError){
qDebug() << QString("onGetTemperatureRelyfinished")<<endl;;
responseData = reply->readAll();
emit sigGetTemperature(responseData);
}else{
qDebug()<< "onGetTemperatureRelyfinished: " << reply->errorString()<<endl;
}
reply->close();
reply->deleteLater();
}
bool MyNetManager::putWait(QString url, QByteArray &bytes)
{
QNetworkRequest request;
QUrl qurl = QUrl(url);
qurl.setUserName("admin");
qurl.setPassword("YN123456789");
request.setUrl(qurl);
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
QNetworkReply *reply = m_pManager->put(request, bytes);
QEventLoop eventLoop;
connect(reply, &QNetworkReply ::finished, &eventLoop, &QEventLoop::quit);
eventLoop.exec();
if(reply->error()!=QNetworkReply::NoError){
//处理中的错误信息
qDebug()<<"reply error:"<<reply->errorString()<<endl;;
return false;
}
reply->deleteLater();
return true;
}
void MyNetManager::keepRelayOkProcess(QNetworkReply *reply)
{
qDebug() << "reply :" << reply << endl;
if(keepNetState == NET_CONNECTING){
keepNetState = NET_CONNECTED;
qDebug() << "keepRelayOkProcess State == NET_CONNECTING\n" << endl;
qDebug()<<"operation:"<<reply->operation();
qDebug()<<"status code:"<<reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug()<<"reply:"<<reply<< endl;
connect_over_time_seconds = 15000;
disconnect(keepTimer,0,0,0);
connect(keepTimer, &QTimer::timeout, this, &MyNetManager::onKeepTimerOverProcess);
keepTimer->start(11000);
qDebug() << "KeepConnect ok\n";
}else if(keepNetState == NET_CONNECTED){
qDebug() << "keepRelayOkProcess State == NET_CONNECTED\n";
qDebug()<<"reply:"<<reply<< endl;
keepTimer->start(11000);
QByteArray bytes = reply->readAll();
//qDebug() << "recv:" << bytes << endl;
QString qstr_byte = qPrintable(bytes);
if (qstr_byte.contains("Temperature Measurement Alarm"))
{
emit sigTempAlarm(1);
qDebug() << "Temperature Measurement Alarm1\n";
}else{
qDebug() << "recv heart beat!\n";
}
}
}
void MyNetManager::keepRelayErrProcess(QNetworkReply *reply)
{
Q_UNUSED(reply);
qDebug() << QString("keepRelayErrProcess\n");
//当前处于连接状态,出错,需要告警
if(keepNetState == NET_CONNECTED){
emit sigKeepBrokeAlarm();
}
KeepDisconnect();
}
void MyNetManager::onKeepTimerOverProcess()
{
qDebug() << "onKeepTimerOverProcess\n";
//连接失败, 或者连接超时未接收到任何数据,告警
emit sigKeepBrokeAlarm();
KeepDisconnect();
}
static uint32_t time_add(uint32_t t)
{
float val = t * 1.5;
return (uint32_t)val;
}
void MyNetManager::onKeepConnectTimeOut()
{
qDebug() << "onKeepConnectTimeOut\n";
connect_over_time_seconds = time_add(connect_over_time_seconds) ;
emit sigKeepBrokeAlarm();
KeepDisconnect();
}
void MyNetManager::onKeepConnectFinished(QNetworkReply *reply)
{
qDebug() << ">>onKeepConnectFinished:" << reply << endl;
}

@ -0,0 +1,160 @@
#ifndef MYNETMANAGER_H
#define MYNETMANAGER_H
#include <QString>
#include <QAuthenticator>
#include <QNetworkAccessManager>
#include <QTimer>
#include <atomic>
#include <QNetworkReply>
typedef enum
{
NET_DISCONNECT,
NET_CONNECTING = 1,
NET_CONNECTED,
}NetState;
class QNetworkReply;
class MyNetManager : public QObject
{
Q_OBJECT
public:
explicit MyNetManager(QObject *parent = nullptr);
~MyNetManager();
/**
* @brief IP
* @param ip
*/
void SetIp(QString ip);
/**
* @brief
* @param reflectiveTemperature
* @param emissivity
* @param distance
* @return
*/
bool SetTempraturePara(uint16_t reflectiveTemperature,float emissivity,uint16_t distance) ;
/**
* @brief
* @param alert
* @param alarm
* @param alarm_time
* @return
*/
bool SetAlarmPara(uint16_t alert,uint16_t alarm,uint16_t alarm_time);
/**
* @brief
* @return
*/
bool GetPicture();
/**
* @brief
* @return
*/
bool GetRealTimeTemperature();
/**
* @brief
* @return
*/
bool KeepConnect();
/**
* @brief
* @return
*/
bool KeepDisconnect();
/**
* @brief
* @return
*/
bool KeepReconnect();
/**
* @brief
* @return
*/
NetState KeepState();
signals:
/**
* @brief
* @param temp
*/
void sigTempAlarm(float temp);
/**
* @brief
* @param d
*/
void sigCapPicture(QByteArray & d);
/**
* @brief
* @param d
*/
void sigGetTemperature(QByteArray & d);
/**
* @brief
*/
void sigKeepBrokeAlarm();
private slots:
/**
* @brief
*/
void onKeepRelyfinished();
/**
* @brief
*/
void onCapPicRelyfinished();
/**
* @brief
*/
void onGetTemperatureRelyfinished();
/**
* @brief
*/
void onKeepTimerOverProcess();
/**
* @brief
*/
void onKeepConnectTimeOut();
void onKeepConnectFinished(QNetworkReply *reply);
private:
/**
* @brief put
* @param url
* @param bytes
* @return
*/
bool putWait(QString url, QByteArray& bytes);
QNetworkAccessManager *m_pManager;
QNetworkReply *keep;
QTimer *keepTimer; //长连接短线检测定时器默认11秒超时
uint32_t connect_over_time_seconds = 15000;
private:
QString ip;
QByteArray capPicData;
QByteArray responseData;
std::atomic<NetState> keepNetState;
/**
* @brief
*/
void keepRelayOkProcess(QNetworkReply *reply);
/**
* @brief
*/
void keepRelayErrProcess(QNetworkReply *reply);
};
#endif // MYNETMANAGER_H

@ -0,0 +1,185 @@
#include "MCU_ARM.h"
#include "uart.h"
#include "uart1.h"
extern QSerialPort SerialPort;
UART *uart_mcu =new UART();
extern uint16_t CRC;
bool tag = true;
MCU_ARM::MCU_ARM():m_serialPort()
{
}
void MCU_ARM::StationData(QByteArray sharedata)
{
QByteArray data;
uint8_t CRC_lowData;
uint8_t len = sharedata.size();
uint8_t cout = 0;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x13;
data[3] = 0x01;
data[4] = len/256;
data[5] = len%256;
QByteArray finish =QByteArray::fromHex(sharedata.toHex());
while(cout!=len)
{
data[6+cout] = finish[cout];
cout++;
}
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[6+len] = CRC_lowData;
data[7+len] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::setFanTiming(uint16_t starthour,uint16_t startminute,uint16_t timing){
QByteArray data;
uint8_t lowData;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x24;
data[3] = 0x01;
data[4] = 0x00;
data[5] = 0x04;
data[6] = 0x00;
data[7] = starthour;
data[8] = startminute;
lowData = timing;
timing = timing >> 8;
data[9] = lowData;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[10] = CRC_lowData;
data[11] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::setFanState(uint8_t state){
QByteArray data;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x23;
data[3] = 0x01;
data[4] = 0x00;
data[5] = 0x01;
data[6] = state;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[7] = CRC_lowData;
data[8] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::setEnable(uint8_t enable){
QByteArray data;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x12;
data[3] = 0x01;
data[4] = 0x00;
data[5] = 0x01;
data[6] = enable;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[7] = CRC_lowData;
data[8] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::setFanStartT(uint16_t temperature){
QByteArray data;
uint8_t lowData;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x22;
data[3] = 0x01;
data[4] = 0x00;
data[5] = 0x02;
lowData = temperature;
temperature = temperature >> 8;
data[6] = temperature;
data[7] = lowData;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[8] = CRC_lowData;
data[9] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::setWirelessT(int16_t temperature){
temperature = 0;
printf("this function unable to use, now...%d\n");
}
void MCU_ARM::setBuzzerState(uint8_t state){
QByteArray data;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
data[2] = 0x25;
data[3] = 0x01;
data[4] = 0x00;
data[5] = 0x01;
data[6] = state;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[7] = CRC_lowData;
data[8] = CRC;
uart_mcu->ShuJu_Write(data);
}
void MCU_ARM::testSerialPort(uint8_t uart){
QByteArray data;
uint8_t CRC_lowData;
data[0] = 0xAA;
data[1] = 0x55;
if(uart == 1)
{
data[2] = 0x10;
}
else if(uart == 2)
{
data[2] = 0x11;
}
if(tag){
data[3] = 0x01;
} else {
data[3] = 0x03;
}
tag = !tag;
data[4] = 0x00;
data[5] = 0x01;
data[6] = 0x0;
uart_mcu->ModBusCRC16(data);
CRC_lowData = CRC;
CRC = CRC>>8;
data[7] = CRC_lowData;
data[8] = CRC;
uart_mcu->ShuJu_Write(data);
}
MCU_ARM::~MCU_ARM(){
}

@ -0,0 +1,27 @@
#ifndef MCU_ARM_H
#define MCU_ARM_H
#include <QSerialPort>
#include <QWidget>
class MCU_ARM : public QObject{
Q_OBJECT
public:
explicit MCU_ARM();
~MCU_ARM();
void testSerialPort(uint8_t uart);
void setEnable(uint8_t enable);
void setWirelessT(int16_t temperature);
void setFanStartT(uint16_t temperature);
void setFanState(uint8_t state);
void setFanTiming(uint16_t starthour,uint16_t startminute,uint16_t timing);
void setBuzzerState(uint8_t state);
private:
QSerialPort *m_serialPort;
public slots:
void StationData(QByteArray sharedata);
};
#endif // MCU_ARM_H

@ -0,0 +1,977 @@
#############################################################################
# Makefile for building: jiemian
# Generated by qmake (3.0) (Qt 5.6.2)
# Project: jiemian.pro
# Template: app
# Command: /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake -o Makefile jiemian.pro
#############################################################################
MAKEFILE = Makefile
####### Compiler, tools and options
CC = $(OE_QMAKE_CC)
CXX = $(OE_QMAKE_CXX)
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_WEBSOCKETS_LIB -DQT_NETWORK_LIB -DQT_SERIALPORT_LIB -DQT_CORE_LIB
CFLAGS = -pipe $(OE_QMAKE_CFLAGS) -O2 -DLINUX=1 -DLINUX=1 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe $(OE_QMAKE_CXXFLAGS) -O2 -DLINUX=1 -DLINUX=1 -std=gnu++0x -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -isystem /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I. -I. -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
QMAKE = /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = jiemian1.0.0
DISTDIR = /home/forlinx/ZDBYQ/.tmp/jiemian1.0.0
LINK = $(OE_QMAKE_LINK)
LFLAGS = $(OE_QMAKE_LDFLAGS) -Wl,-O1
LIBS = $(SUBLIBS) -L/home/forlinx/ZDBYQ/QsLog/bin -lQsLog2 -lQsLog -lQt5Widgets -lQt5Gui -lQt5WebSockets -lQt5Network -lQt5SerialPort -lQt5Core -lGLESv2 -lEGL -lpthread
AR = $(OE_QMAKE_AR) cqs
RANLIB =
SED = sed
STRIP = $(OE_QMAKE_STRIP)
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = canshupeizhi.cpp \
keyboard.cpp \
main.cpp \
mainwindow.cpp \
mcu_arm1.cpp \
module4g.cpp \
modulesystime.cpp \
modulewifi.cpp \
wangluo.cpp \
xitongshezhi.cpp \
keyboard_ABC.cpp \
uart.cpp \
uart1.cpp \
MCU_ARM.cpp qrc_image.cpp \
moc_canshupeizhi.cpp \
moc_keyboard.cpp \
moc_mainwindow.cpp \
moc_mcu_arm1.cpp \
moc_module4g.cpp \
moc_modulesystime.cpp \
moc_modulewifi.cpp \
moc_wangluo.cpp \
moc_xitongshezhi.cpp \
moc_keyboard_ABC.cpp \
moc_uart.cpp \
moc_uart1.cpp \
moc_MCU_ARM.cpp
OBJECTS = canshupeizhi.o \
keyboard.o \
main.o \
mainwindow.o \
mcu_arm1.o \
module4g.o \
modulesystime.o \
modulewifi.o \
wangluo.o \
xitongshezhi.o \
keyboard_ABC.o \
uart.o \
uart1.o \
MCU_ARM.o \
qrc_image.o \
moc_canshupeizhi.o \
moc_keyboard.o \
moc_mainwindow.o \
moc_mcu_arm1.o \
moc_module4g.o \
moc_modulesystime.o \
moc_modulewifi.o \
moc_wangluo.o \
moc_xitongshezhi.o \
moc_keyboard_ABC.o \
moc_uart.o \
moc_uart1.o \
moc_MCU_ARM.o
DIST = C:/Users/Administrator/Desktop/微信截图_20220413180205.png \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_pre.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/linux.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/sanitize.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-base.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/qconfig.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_clucene_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_zlib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_functions.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_config.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_post.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exclusive_builds.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_pre.prf \
QsLog/QsLog.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resolve_config.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_post.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/warn_on.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resources.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/moc.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/opengl.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/uic.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/thread.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/file_copies.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/testcase_targets.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exceptions.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/yacc.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/lex.prf \
jiemian.pro QsLog/include/QsLog.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h \
QsLog/include/QsLogLevel.h \
canshupeizhi.h \
keyboard.h \
mainwindow.h \
mcu_arm1.h \
module4g.h \
modulesystime.h \
modulewifi.h \
wangluo.h \
xitongshezhi.h \
keyboard_ABC.h \
uart.h \
uart1.h \
MCU_ARM.h canshupeizhi.cpp \
keyboard.cpp \
main.cpp \
mainwindow.cpp \
mcu_arm1.cpp \
module4g.cpp \
modulesystime.cpp \
modulewifi.cpp \
wangluo.cpp \
xitongshezhi.cpp \
keyboard_ABC.cpp \
uart.cpp \
uart1.cpp \
MCU_ARM.cpp
QMAKE_TARGET = jiemian
DESTDIR =
TARGET = jiemian
first: all
####### Build rules
$(TARGET): ui_canshupeizhi.h ui_keyboard.h ui_mainwindow.h ui_net_thread.h ui_wangluo.h ui_xitongshezhi.h ui_keyboard_ABC.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: jiemian.pro /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf /opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_pre.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/linux.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/sanitize.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-base.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-unix.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/qconfig.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_clucene_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_zlib_private.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_functions.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_config.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_post.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exclusive_builds.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_pre.prf \
QsLog/QsLog.pri \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resolve_config.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_post.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/warn_on.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resources.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/moc.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/opengl.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/uic.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/thread.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/file_copies.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/testcase_targets.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exceptions.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/yacc.prf \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/lex.prf \
jiemian.pro \
image.qrc \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Widgets.prl \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Gui.prl \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5WebSockets.prl \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Network.prl \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5SerialPort.prl \
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Core.prl
$(QMAKE) -o Makefile jiemian.pro
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_pre.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/unix.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/linux.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/sanitize.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/gcc-base-unix.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-base.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/common/g++-unix.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/qconfig.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dcore_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dinput_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquick_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_3drender_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bluetooth_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_clucene_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_core_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designer_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_enginio_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_help_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_location_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimedia_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_network_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_nfc_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_platformsupport_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_positioning_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_publishsubscribe_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qml_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quick_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_script_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_scripttools_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sensors_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serialport_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_serviceframework_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_svg_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_systeminfo_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_uitools_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_webchannel_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_websockets_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_x11extras_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/modules/qt_lib_zlib_private.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_functions.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt_config.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++/qmake.conf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/spec_post.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exclusive_builds.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_pre.prf:
QsLog/QsLog.pri:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resolve_config.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/default_post.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/warn_on.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/qt.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/resources.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/moc.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/opengl.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/uic.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/unix/thread.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/file_copies.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/testcase_targets.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/exceptions.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/yacc.prf:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/features/lex.prf:
jiemian.pro:
image.qrc:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Widgets.prl:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Gui.prl:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5WebSockets.prl:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Network.prl:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5SerialPort.prl:
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/libQt5Core.prl:
qmake: FORCE
@$(QMAKE) -o Makefile jiemian.pro
qmake_all: FORCE
all: Makefile $(TARGET)
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents image.qrc $(DISTDIR)/
$(COPY_FILE) --parents QsLog/include/QsLog.h QsLog/include/QsLogDest.h QsLog/include/QsLogDisableForThisFile.h QsLog/include/QsLogLevel.h canshupeizhi.h keyboard.h mainwindow.h mcu_arm1.h module4g.h modulesystime.h modulewifi.h wangluo.h xitongshezhi.h keyboard_ABC.h uart.h uart1.h MCU_ARM.h $(DISTDIR)/
$(COPY_FILE) --parents canshupeizhi.cpp keyboard.cpp main.cpp mainwindow.cpp mcu_arm1.cpp module4g.cpp modulesystime.cpp modulewifi.cpp wangluo.cpp xitongshezhi.cpp keyboard_ABC.cpp uart.cpp uart1.cpp MCU_ARM.cpp $(DISTDIR)/
$(COPY_FILE) --parents canshupeizhi.ui keyboard.ui mainwindow.ui net_thread.ui wangluo.ui xitongshezhi.ui keyboard_ABC.ui $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all: qrc_image.cpp
compiler_rcc_clean:
-$(DEL_FILE) qrc_image.cpp
qrc_image.cpp: image.qrc \
ziku/ziku.dat \
ziku/ziku.qrc \
image/yunxing.png \
image/shengyin.png \
image/jingyin.png \
image/WIFI2-disconnect.png \
image/yunxin.png \
image/tubiao.jpeg \
image/WIFI2.png \
image/canshu.png \
image/shezhi.png \
image/1.png \
image/yitaiyang_disconnect.png \
image/2.png \
image/yitaiyang.png \
image/3.png \
image/4.png \
image/4G_low_quility.png \
image/wifi.png \
image/4G_disconnect.png \
image/zhujiemian.png \
image/LORA.png \
image/4G.png
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/rcc -name image image.qrc -o qrc_image.cpp
compiler_moc_header_make_all: moc_canshupeizhi.cpp moc_keyboard.cpp moc_mainwindow.cpp moc_mcu_arm1.cpp moc_module4g.cpp moc_modulesystime.cpp moc_modulewifi.cpp moc_wangluo.cpp moc_xitongshezhi.cpp moc_keyboard_ABC.cpp moc_uart.cpp moc_uart1.cpp moc_MCU_ARM.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_canshupeizhi.cpp moc_keyboard.cpp moc_mainwindow.cpp moc_mcu_arm1.cpp moc_module4g.cpp moc_modulesystime.cpp moc_modulewifi.cpp moc_wangluo.cpp moc_xitongshezhi.cpp moc_keyboard_ABC.cpp moc_uart.cpp moc_uart1.cpp moc_MCU_ARM.cpp
moc_canshupeizhi.cpp: keyboard.h \
keyboard_ABC.h \
canshupeizhi.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include canshupeizhi.h -o moc_canshupeizhi.cpp
moc_keyboard.cpp: keyboard.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include keyboard.h -o moc_keyboard.cpp
moc_mainwindow.cpp: wangluo.h \
keyboard.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h \
mainwindow.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include mainwindow.h -o moc_mainwindow.cpp
moc_mcu_arm1.cpp: net_thread.h \
mcu_arm1.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include mcu_arm1.h -o moc_mcu_arm1.cpp
moc_module4g.cpp: module4g.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include module4g.h -o moc_module4g.cpp
moc_modulesystime.cpp: modulesystime.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include modulesystime.h -o moc_modulesystime.cpp
moc_modulewifi.cpp: modulewifi.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include modulewifi.h -o moc_modulewifi.cpp
moc_wangluo.cpp: keyboard.h \
keyboard_ABC.h \
wangluo.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include wangluo.h -o moc_wangluo.cpp
moc_xitongshezhi.cpp: keyboard.h \
xitongshezhi.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include xitongshezhi.h -o moc_xitongshezhi.cpp
moc_keyboard_ABC.cpp: keyboard_ABC.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include keyboard_ABC.h -o moc_keyboard_ABC.cpp
moc_uart.cpp: uart.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include uart.h -o moc_uart.cpp
moc_uart1.cpp: uart1.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include uart1.h -o moc_uart1.cpp
moc_MCU_ARM.cpp: MCU_ARM.h
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/moc $(DEFINES) -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++ -I/home/forlinx/ZDBYQ -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWidgets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtGui -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtWebSockets -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtNetwork -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtSerialPort -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/qt5/QtCore -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0 -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/arm-poky-linux-gnueabi -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/c++/5.3.0/backward -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/gcc/arm-poky-linux-gnueabi/5.3.0/include -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed -I/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include MCU_ARM.h -o moc_MCU_ARM.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_canshupeizhi.h ui_keyboard.h ui_mainwindow.h ui_net_thread.h ui_wangluo.h ui_xitongshezhi.h ui_keyboard_ABC.h
compiler_uic_clean:
-$(DEL_FILE) ui_canshupeizhi.h ui_keyboard.h ui_mainwindow.h ui_net_thread.h ui_wangluo.h ui_xitongshezhi.h ui_keyboard_ABC.h
ui_canshupeizhi.h: canshupeizhi.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic canshupeizhi.ui -o ui_canshupeizhi.h
ui_keyboard.h: keyboard.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic keyboard.ui -o ui_keyboard.h
ui_mainwindow.h: mainwindow.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic mainwindow.ui -o ui_mainwindow.h
ui_net_thread.h: net_thread.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic net_thread.ui -o ui_net_thread.h
ui_wangluo.h: wangluo.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic wangluo.ui -o ui_wangluo.h
ui_xitongshezhi.h: xitongshezhi.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic xitongshezhi.ui -o ui_xitongshezhi.h
ui_keyboard_ABC.h: keyboard_ABC.ui
/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/uic keyboard_ABC.ui -o ui_keyboard_ABC.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_rcc_clean compiler_moc_header_clean compiler_uic_clean
####### Compile
canshupeizhi.o: canshupeizhi.cpp mainwindow.h \
wangluo.h \
keyboard.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h \
ui_canshupeizhi.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o canshupeizhi.o canshupeizhi.cpp
keyboard.o: keyboard.cpp keyboard.h \
ui_keyboard.h \
mainwindow.h \
wangluo.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o keyboard.o keyboard.cpp
main.o: main.cpp mainwindow.h \
wangluo.h \
keyboard.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h \
applive.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
wangluo.h \
keyboard.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
mcu_arm1.o: mcu_arm1.cpp mcu_arm1.h \
net_thread.h \
uart1.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mcu_arm1.o mcu_arm1.cpp
module4g.o: module4g.cpp module4g.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o module4g.o module4g.cpp
modulesystime.o: modulesystime.cpp modulesystime.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o modulesystime.o modulesystime.cpp
modulewifi.o: modulewifi.cpp modulewifi.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o modulewifi.o modulewifi.cpp
wangluo.o: wangluo.cpp wangluo.h \
keyboard.h \
keyboard_ABC.h \
canshupeizhi.h \
xitongshezhi.h \
ui_wangluo.h \
ui_keyboard.h \
mainwindow.h \
net_thread.h \
ui_mainwindow.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o wangluo.o wangluo.cpp
xitongshezhi.o: xitongshezhi.cpp xitongshezhi.h \
keyboard.h \
mainwindow.h \
wangluo.h \
keyboard_ABC.h \
canshupeizhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h \
ui_xitongshezhi.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o xitongshezhi.o xitongshezhi.cpp
keyboard_ABC.o: keyboard_ABC.cpp keyboard_ABC.h \
ui_keyboard_ABC.h \
mainwindow.h \
wangluo.h \
keyboard.h \
canshupeizhi.h \
xitongshezhi.h \
net_thread.h \
ui_mainwindow.h \
ui_wangluo.h \
uart.h \
uart1.h \
mcu_arm1.h \
MCU_ARM.h \
modulewifi.h \
modulesystime.h \
module4g.h \
QsLog/include/QsLog.h \
QsLog/include/QsLogLevel.h \
QsLog/include/QsLogDest.h \
QsLog/include/QsLogDisableForThisFile.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o keyboard_ABC.o keyboard_ABC.cpp
uart.o: uart.cpp uart.h \
communications.h \
MCU_ARM.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o uart.o uart.cpp
uart1.o: uart1.cpp uart1.h \
communications.h \
MCU_ARM.h \
mcu_arm1.h \
net_thread.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o uart1.o uart1.cpp
MCU_ARM.o: MCU_ARM.cpp MCU_ARM.h \
uart.h \
uart1.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o MCU_ARM.o MCU_ARM.cpp
qrc_image.o: qrc_image.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_image.o qrc_image.cpp
moc_canshupeizhi.o: moc_canshupeizhi.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_canshupeizhi.o moc_canshupeizhi.cpp
moc_keyboard.o: moc_keyboard.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_keyboard.o moc_keyboard.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
moc_mcu_arm1.o: moc_mcu_arm1.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mcu_arm1.o moc_mcu_arm1.cpp
moc_module4g.o: moc_module4g.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_module4g.o moc_module4g.cpp
moc_modulesystime.o: moc_modulesystime.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_modulesystime.o moc_modulesystime.cpp
moc_modulewifi.o: moc_modulewifi.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_modulewifi.o moc_modulewifi.cpp
moc_wangluo.o: moc_wangluo.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_wangluo.o moc_wangluo.cpp
moc_xitongshezhi.o: moc_xitongshezhi.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_xitongshezhi.o moc_xitongshezhi.cpp
moc_keyboard_ABC.o: moc_keyboard_ABC.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_keyboard_ABC.o moc_keyboard_ABC.cpp
moc_uart.o: moc_uart.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_uart.o moc_uart.cpp
moc_uart1.o: moc_uart1.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_uart1.o moc_uart1.cpp
moc_MCU_ARM.o: moc_MCU_ARM.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_MCU_ARM.o moc_MCU_ARM.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/opt/jiemian/bin || mkdir -p $(INSTALL_ROOT)/opt/jiemian/bin
-$(INSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/jiemian/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/opt/jiemian/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/opt/jiemian/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/opt/jiemian/bin/
install: install_target FORCE
uninstall: uninstall_target FORCE
FORCE:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,18 @@
Makefile*
*.pro.user*
*.[oa]
*.so*
*.dll
#vc files
*.ncb
*.pdb
*.layout
*.suo
#dirs
.moc
.obj
/bin*
/lib*

@ -0,0 +1,194 @@
/********************************************************************************
** Form generated from reading UI file 'canshupeizhi.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_CANSHUPEIZHI_H
#define UI_CANSHUPEIZHI_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_canshupeizhi
{
public:
QLabel *label_tubiao_4g;
QLabel *label_tubiao_wifi;
QPushButton *pushButton_zhujiemian;
QLabel *label_1;
QLabel *label_zhongduan;
QLabel *label_tubiao_lora;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_4;
QLabel *label_tubiao_lan;
QLabel *label_6;
QLabel *label_2;
QPushButton *pushButton_xitongshezhi;
QLabel *label_tubiao_yunxing;
QTextEdit *textEdit_tubiao;
QLabel *label_5;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QLabel *label_time;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *canshupeizhi)
{
if (canshupeizhi->objectName().isEmpty())
canshupeizhi->setObjectName(QString::fromUtf8("canshupeizhi"));
canshupeizhi->resize(800, 480);
label_tubiao_4g = new QLabel(canshupeizhi);
label_tubiao_4g->setObjectName(QString::fromUtf8("label_tubiao_4g"));
label_tubiao_4g->setGeometry(QRect(720, 4, 31, 31));
label_tubiao_4g->setStyleSheet(QString::fromUtf8("image: url(:/image/image/4G.png);"));
label_tubiao_wifi = new QLabel(canshupeizhi);
label_tubiao_wifi->setObjectName(QString::fromUtf8("label_tubiao_wifi"));
label_tubiao_wifi->setGeometry(QRect(758, 4, 31, 31));
label_tubiao_wifi->setStyleSheet(QString::fromUtf8("image: url(:/image/image/WIFI2.png);"));
pushButton_zhujiemian = new QPushButton(canshupeizhi);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
label_1 = new QLabel(canshupeizhi);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_zhongduan = new QLabel(canshupeizhi);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
label_tubiao_lora = new QLabel(canshupeizhi);
label_tubiao_lora->setObjectName(QString::fromUtf8("label_tubiao_lora"));
label_tubiao_lora->setGeometry(QRect(682, 4, 31, 31));
label_tubiao_lora->setStyleSheet(QString::fromUtf8("image: url(:/image/image/LORA.png);"));
pushButton_wangluoxinxi = new QPushButton(canshupeizhi);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_4 = new QLabel(canshupeizhi);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_tubiao_lan = new QLabel(canshupeizhi);
label_tubiao_lan->setObjectName(QString::fromUtf8("label_tubiao_lan"));
label_tubiao_lan->setGeometry(QRect(639, 4, 31, 31));
label_tubiao_lan->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yitaiyang.png);"));
label_6 = new QLabel(canshupeizhi);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 781, 301));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(canshupeizhi);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_xitongshezhi = new QPushButton(canshupeizhi);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_tubiao_yunxing = new QLabel(canshupeizhi);
label_tubiao_yunxing->setObjectName(QString::fromUtf8("label_tubiao_yunxing"));
label_tubiao_yunxing->setGeometry(QRect(596, 4, 31, 31));
label_tubiao_yunxing->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yunxing.png);"));
textEdit_tubiao = new QTextEdit(canshupeizhi);
textEdit_tubiao->setObjectName(QString::fromUtf8("textEdit_tubiao"));
textEdit_tubiao->setGeometry(QRect(584, 2, 210, 36));
textEdit_tubiao->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_5 = new QLabel(canshupeizhi);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_canshushezhi = new QPushButton(canshupeizhi);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(canshupeizhi);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_time = new QLabel(canshupeizhi);
label_time->setObjectName(QString::fromUtf8("label_time"));
label_time->setGeometry(QRect(544, 440, 251, 21));
label_time->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 171, 171);\n"
"background-color: rgb(0, 35, 53);"));
textEdit = new QTextEdit(canshupeizhi);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
label = new QLabel(canshupeizhi);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->raise();
label_5->raise();
label_1->raise();
label_2->raise();
label_3->raise();
textEdit_tubiao->raise();
label_tubiao_4g->raise();
label_tubiao_wifi->raise();
pushButton_zhujiemian->raise();
label_zhongduan->raise();
label_tubiao_lora->raise();
pushButton_wangluoxinxi->raise();
label_4->raise();
label_tubiao_lan->raise();
label_6->raise();
pushButton_xitongshezhi->raise();
label_tubiao_yunxing->raise();
pushButton_canshushezhi->raise();
label_time->raise();
textEdit->raise();
retranslateUi(canshupeizhi);
QMetaObject::connectSlotsByName(canshupeizhi);
} // setupUi
void retranslateUi(QWidget *canshupeizhi)
{
canshupeizhi->setWindowTitle(QApplication::translate("canshupeizhi", "Form", nullptr));
label_tubiao_4g->setText(QString());
label_tubiao_wifi->setText(QString());
pushButton_zhujiemian->setText(QString());
label_1->setText(QString());
label_zhongduan->setText(QApplication::translate("canshupeizhi", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
label_tubiao_lora->setText(QString());
pushButton_wangluoxinxi->setText(QString());
label_4->setText(QString());
label_tubiao_lan->setText(QString());
label_6->setText(QApplication::translate("canshupeizhi", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_tubiao_yunxing->setText(QString());
label_5->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
label_time->setText(QApplication::translate("canshupeizhi", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">\347\263\273\347\273\237\346\227\266\351\227\264\357\274\2322022/4/15 16:32:15</span></p></body></html>", nullptr));
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class canshupeizhi: public Ui_canshupeizhi {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_CANSHUPEIZHI_H

@ -0,0 +1,232 @@
/********************************************************************************
** Form generated from reading UI file 'keyboard.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_KEYBOARD_H
#define UI_KEYBOARD_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_KeyBoard
{
public:
QLabel *label;
QLabel *showLb;
QWidget *layoutWidget;
QGridLayout *gridLayout;
QPushButton *closeBt;
QPushButton *delBt;
QPushButton *num_0_Bt;
QPushButton *num_5_Bt;
QPushButton *dian;
QPushButton *num_7_Bt;
QPushButton *num_9_Bt;
QPushButton *num_6_Bt;
QPushButton *num_1_Bt;
QPushButton *num_2_Bt;
QPushButton *num_8_Bt;
QPushButton *num_4_Bt;
QPushButton *num_3_Bt;
void setupUi(QDialog *KeyBoard)
{
if (KeyBoard->objectName().isEmpty())
KeyBoard->setObjectName(QString::fromUtf8("KeyBoard"));
KeyBoard->setEnabled(true);
KeyBoard->resize(240, 178);
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(KeyBoard->sizePolicy().hasHeightForWidth());
KeyBoard->setSizePolicy(sizePolicy);
KeyBoard->setStyleSheet(QString::fromUtf8(""));
label = new QLabel(KeyBoard);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 240, 180));
label->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 35, 53);\n"
"color: rgb(67, 135, 203);"));
label->setFrameShape(QFrame::Box);
showLb = new QLabel(KeyBoard);
showLb->setObjectName(QString::fromUtf8("showLb"));
showLb->setEnabled(true);
showLb->setGeometry(QRect(31, 21, 16, 32));
QFont font;
font.setFamily(QString::fromUtf8("Times New Roman"));
font.setPointSize(20);
showLb->setFont(font);
showLb->setStyleSheet(QString::fromUtf8(""));
showLb->setAlignment(Qt::AlignCenter);
layoutWidget = new QWidget(KeyBoard);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(10, 10, 221, 161));
gridLayout = new QGridLayout(layoutWidget);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
gridLayout->setContentsMargins(0, 0, 0, 0);
closeBt = new QPushButton(layoutWidget);
closeBt->setObjectName(QString::fromUtf8("closeBt"));
closeBt->setEnabled(true);
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(closeBt->sizePolicy().hasHeightForWidth());
closeBt->setSizePolicy(sizePolicy1);
closeBt->setFont(font);
gridLayout->addWidget(closeBt, 0, 1, 1, 2);
delBt = new QPushButton(layoutWidget);
delBt->setObjectName(QString::fromUtf8("delBt"));
delBt->setEnabled(true);
sizePolicy1.setHeightForWidth(delBt->sizePolicy().hasHeightForWidth());
delBt->setSizePolicy(sizePolicy1);
delBt->setFont(font);
gridLayout->addWidget(delBt, 0, 0, 2, 1);
num_0_Bt = new QPushButton(layoutWidget);
num_0_Bt->setObjectName(QString::fromUtf8("num_0_Bt"));
num_0_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_0_Bt->sizePolicy().hasHeightForWidth());
num_0_Bt->setSizePolicy(sizePolicy1);
num_0_Bt->setFont(font);
gridLayout->addWidget(num_0_Bt, 1, 2, 1, 1);
num_5_Bt = new QPushButton(layoutWidget);
num_5_Bt->setObjectName(QString::fromUtf8("num_5_Bt"));
num_5_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_5_Bt->sizePolicy().hasHeightForWidth());
num_5_Bt->setSizePolicy(sizePolicy1);
num_5_Bt->setFont(font);
gridLayout->addWidget(num_5_Bt, 3, 1, 1, 1);
dian = new QPushButton(layoutWidget);
dian->setObjectName(QString::fromUtf8("dian"));
sizePolicy1.setHeightForWidth(dian->sizePolicy().hasHeightForWidth());
dian->setSizePolicy(sizePolicy1);
dian->setFont(font);
gridLayout->addWidget(dian, 1, 1, 1, 1);
num_7_Bt = new QPushButton(layoutWidget);
num_7_Bt->setObjectName(QString::fromUtf8("num_7_Bt"));
num_7_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_7_Bt->sizePolicy().hasHeightForWidth());
num_7_Bt->setSizePolicy(sizePolicy1);
num_7_Bt->setFont(font);
gridLayout->addWidget(num_7_Bt, 2, 0, 1, 1);
num_9_Bt = new QPushButton(layoutWidget);
num_9_Bt->setObjectName(QString::fromUtf8("num_9_Bt"));
num_9_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_9_Bt->sizePolicy().hasHeightForWidth());
num_9_Bt->setSizePolicy(sizePolicy1);
num_9_Bt->setFont(font);
gridLayout->addWidget(num_9_Bt, 2, 2, 1, 1);
num_6_Bt = new QPushButton(layoutWidget);
num_6_Bt->setObjectName(QString::fromUtf8("num_6_Bt"));
num_6_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_6_Bt->sizePolicy().hasHeightForWidth());
num_6_Bt->setSizePolicy(sizePolicy1);
num_6_Bt->setFont(font);
gridLayout->addWidget(num_6_Bt, 3, 2, 1, 1);
num_1_Bt = new QPushButton(layoutWidget);
num_1_Bt->setObjectName(QString::fromUtf8("num_1_Bt"));
num_1_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_1_Bt->sizePolicy().hasHeightForWidth());
num_1_Bt->setSizePolicy(sizePolicy1);
num_1_Bt->setFont(font);
gridLayout->addWidget(num_1_Bt, 4, 0, 1, 1);
num_2_Bt = new QPushButton(layoutWidget);
num_2_Bt->setObjectName(QString::fromUtf8("num_2_Bt"));
num_2_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_2_Bt->sizePolicy().hasHeightForWidth());
num_2_Bt->setSizePolicy(sizePolicy1);
num_2_Bt->setFont(font);
gridLayout->addWidget(num_2_Bt, 4, 1, 1, 1);
num_8_Bt = new QPushButton(layoutWidget);
num_8_Bt->setObjectName(QString::fromUtf8("num_8_Bt"));
num_8_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_8_Bt->sizePolicy().hasHeightForWidth());
num_8_Bt->setSizePolicy(sizePolicy1);
num_8_Bt->setFont(font);
gridLayout->addWidget(num_8_Bt, 2, 1, 1, 1);
num_4_Bt = new QPushButton(layoutWidget);
num_4_Bt->setObjectName(QString::fromUtf8("num_4_Bt"));
num_4_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_4_Bt->sizePolicy().hasHeightForWidth());
num_4_Bt->setSizePolicy(sizePolicy1);
num_4_Bt->setFont(font);
gridLayout->addWidget(num_4_Bt, 3, 0, 1, 1);
num_3_Bt = new QPushButton(layoutWidget);
num_3_Bt->setObjectName(QString::fromUtf8("num_3_Bt"));
num_3_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_3_Bt->sizePolicy().hasHeightForWidth());
num_3_Bt->setSizePolicy(sizePolicy1);
num_3_Bt->setFont(font);
gridLayout->addWidget(num_3_Bt, 4, 2, 1, 1);
retranslateUi(KeyBoard);
QMetaObject::connectSlotsByName(KeyBoard);
} // setupUi
void retranslateUi(QDialog *KeyBoard)
{
KeyBoard->setWindowTitle(QApplication::translate("KeyBoard", "Dialog", nullptr));
label->setText(QString());
showLb->setText(QString());
closeBt->setText(QApplication::translate("KeyBoard", "close", nullptr));
delBt->setText(QApplication::translate("KeyBoard", "Del", nullptr));
num_0_Bt->setText(QApplication::translate("KeyBoard", "0", nullptr));
num_5_Bt->setText(QApplication::translate("KeyBoard", "5", nullptr));
dian->setText(QApplication::translate("KeyBoard", ".", nullptr));
num_7_Bt->setText(QApplication::translate("KeyBoard", "7", nullptr));
num_9_Bt->setText(QApplication::translate("KeyBoard", "9", nullptr));
num_6_Bt->setText(QApplication::translate("KeyBoard", "6", nullptr));
num_1_Bt->setText(QApplication::translate("KeyBoard", "1", nullptr));
num_2_Bt->setText(QApplication::translate("KeyBoard", "2", nullptr));
num_8_Bt->setText(QApplication::translate("KeyBoard", "8", nullptr));
num_4_Bt->setText(QApplication::translate("KeyBoard", "4", nullptr));
num_3_Bt->setText(QApplication::translate("KeyBoard", "3", nullptr));
} // retranslateUi
};
namespace Ui {
class KeyBoard: public Ui_KeyBoard {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_KEYBOARD_H

@ -0,0 +1,249 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralwidget;
QPushButton *pushButton_zhujiemian;
QPushButton *pushButton_wangluoxinxi;
QPushButton *pushButton_canshushezhi;
QPushButton *pushButton_xitongshezhi;
QLabel *label_6;
QLabel *label_zhongduan;
QLabel *label_tubiao_wifi;
QLabel *label_tubiao_4g;
QLabel *label_tubiao_lora;
QLabel *label_Awendu;
QLabel *label_time;
QLabel *label_1;
QTextEdit *textEdit_wendu;
QLabel *label_Bwendu;
QLabel *label_Cwendu;
QTextEdit *textEdit_zhujiemian;
QLabel *label_tiexinwendu;
QLabel *label_tubiao_yunxing;
QLabel *label_tubiao_lan;
QTextEdit *textEdit_tubiao;
QLabel *label_2;
QLabel *label_3;
QLabel *label_4;
QLabel *label_5;
QLabel *label;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(800, 480);
MainWindow->setStyleSheet(QString::fromUtf8("color: rgb(244, 244, 244);"));
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
pushButton_zhujiemian = new QPushButton(centralwidget);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
pushButton_wangluoxinxi = new QPushButton(centralwidget);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
pushButton_canshushezhi = new QPushButton(centralwidget);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
pushButton_xitongshezhi = new QPushButton(centralwidget);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_6 = new QLabel(centralwidget);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 780, 300));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_zhongduan = new QLabel(centralwidget);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
label_tubiao_wifi = new QLabel(centralwidget);
label_tubiao_wifi->setObjectName(QString::fromUtf8("label_tubiao_wifi"));
label_tubiao_wifi->setGeometry(QRect(758, 4, 31, 31));
label_tubiao_wifi->setStyleSheet(QString::fromUtf8("image: url(:/image/image/WIFI2.png);"));
label_tubiao_4g = new QLabel(centralwidget);
label_tubiao_4g->setObjectName(QString::fromUtf8("label_tubiao_4g"));
label_tubiao_4g->setGeometry(QRect(720, 4, 31, 31));
label_tubiao_4g->setStyleSheet(QString::fromUtf8("image: url(:/image/image/4G.png);"));
label_tubiao_lora = new QLabel(centralwidget);
label_tubiao_lora->setObjectName(QString::fromUtf8("label_tubiao_lora"));
label_tubiao_lora->setGeometry(QRect(682, 4, 31, 31));
label_tubiao_lora->setStyleSheet(QString::fromUtf8("image: url(:/image/image/LORA.png);"));
label_Awendu = new QLabel(centralwidget);
label_Awendu->setObjectName(QString::fromUtf8("label_Awendu"));
label_Awendu->setGeometry(QRect(30, 150, 161, 31));
label_Awendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_Awendu->setAlignment(Qt::AlignCenter);
label_time = new QLabel(centralwidget);
label_time->setObjectName(QString::fromUtf8("label_time"));
label_time->setGeometry(QRect(544, 440, 251, 21));
label_time->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 171, 171);\n"
"background-color: rgb(0, 35, 53);"));
label_1 = new QLabel(centralwidget);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit_wendu = new QTextEdit(centralwidget);
textEdit_wendu->setObjectName(QString::fromUtf8("textEdit_wendu"));
textEdit_wendu->setGeometry(QRect(20, 140, 761, 51));
textEdit_wendu->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_Bwendu = new QLabel(centralwidget);
label_Bwendu->setObjectName(QString::fromUtf8("label_Bwendu"));
label_Bwendu->setGeometry(QRect(220, 150, 161, 31));
label_Bwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_Cwendu = new QLabel(centralwidget);
label_Cwendu->setObjectName(QString::fromUtf8("label_Cwendu"));
label_Cwendu->setGeometry(QRect(420, 150, 161, 31));
label_Cwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
textEdit_zhujiemian = new QTextEdit(centralwidget);
textEdit_zhujiemian->setObjectName(QString::fromUtf8("textEdit_zhujiemian"));
textEdit_zhujiemian->setGeometry(QRect(10, 200, 780, 41));
textEdit_zhujiemian->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_tiexinwendu = new QLabel(centralwidget);
label_tiexinwendu->setObjectName(QString::fromUtf8("label_tiexinwendu"));
label_tiexinwendu->setGeometry(QRect(610, 150, 161, 31));
label_tiexinwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(145, 145, 145);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_tubiao_yunxing = new QLabel(centralwidget);
label_tubiao_yunxing->setObjectName(QString::fromUtf8("label_tubiao_yunxing"));
label_tubiao_yunxing->setGeometry(QRect(596, 4, 31, 31));
label_tubiao_yunxing->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yunxing.png);"));
label_tubiao_lan = new QLabel(centralwidget);
label_tubiao_lan->setObjectName(QString::fromUtf8("label_tubiao_lan"));
label_tubiao_lan->setGeometry(QRect(639, 4, 31, 31));
label_tubiao_lan->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yitaiyang.png);"));
textEdit_tubiao = new QTextEdit(centralwidget);
textEdit_tubiao->setObjectName(QString::fromUtf8("textEdit_tubiao"));
textEdit_tubiao->setGeometry(QRect(584, 2, 210, 36));
textEdit_tubiao->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(584, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_4 = new QLabel(centralwidget);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_5 = new QLabel(centralwidget);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label = new QLabel(centralwidget);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
MainWindow->setCentralWidget(centralwidget);
label->raise();
label_4->raise();
label_3->raise();
label_2->raise();
label_1->raise();
label_5->raise();
label_6->raise();
textEdit_tubiao->raise();
pushButton_zhujiemian->raise();
pushButton_wangluoxinxi->raise();
pushButton_canshushezhi->raise();
pushButton_xitongshezhi->raise();
label_zhongduan->raise();
label_time->raise();
textEdit_wendu->raise();
label_Awendu->raise();
label_Bwendu->raise();
label_Cwendu->raise();
textEdit_zhujiemian->raise();
label_tiexinwendu->raise();
label_tubiao_yunxing->raise();
label_tubiao_lan->raise();
label_tubiao_lora->raise();
label_tubiao_4g->raise();
label_tubiao_wifi->raise();
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", nullptr));
pushButton_zhujiemian->setText(QString());
pushButton_wangluoxinxi->setText(QString());
pushButton_canshushezhi->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_6->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_zhongduan->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
label_tubiao_wifi->setText(QString());
label_tubiao_4g->setText(QString());
label_tubiao_lora->setText(QString());
label_Awendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">A</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">52</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_time->setText(QApplication::translate("MainWindow", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">\347\263\273\347\273\237\346\227\266\351\227\264\357\274\2322022/4/15 16:32:15</span></p></body></html>", nullptr));
label_1->setText(QString());
label_Bwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">B</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">45</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_Cwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">C</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">47</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_tiexinwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\351\223\201\350\212\257\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">67</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_tubiao_yunxing->setText(QString());
label_tubiao_lan->setText(QString());
label_2->setText(QString());
label_3->setText(QString());
label_4->setText(QString());
label_5->setText(QString());
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H

@ -0,0 +1,46 @@
/********************************************************************************
** Form generated from reading UI file 'net_thread.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_NET_THREAD_H
#define UI_NET_THREAD_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_net_Thread
{
public:
void setupUi(QWidget *net_Thread)
{
if (net_Thread->objectName().isEmpty())
net_Thread->setObjectName(QString::fromUtf8("net_Thread"));
net_Thread->resize(400, 300);
retranslateUi(net_Thread);
QMetaObject::connectSlotsByName(net_Thread);
} // setupUi
void retranslateUi(QWidget *net_Thread)
{
net_Thread->setWindowTitle(QApplication::translate("net_Thread", "Form", nullptr));
} // retranslateUi
};
namespace Ui {
class net_Thread: public Ui_net_Thread {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_NET_THREAD_H

@ -0,0 +1,199 @@
/********************************************************************************
** Form generated from reading UI file 'wangluo.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_WANGLUO_H
#define UI_WANGLUO_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_wangluo
{
public:
QLabel *label_zhongduan;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_5;
QPushButton *pushButton_zhujiemian;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QTextEdit *textEdit_tubiao;
QLabel *label_tubiao_4g;
QPushButton *pushButton_xitongshezhi;
QLabel *label_tubiao_lora;
QLabel *label_tubiao_yunxing;
QLabel *label_tubiao_wifi;
QLabel *label_tubiao_lan;
QLabel *label_4;
QLabel *label_6;
QLabel *label_2;
QLabel *label_1;
QLabel *label_time;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *wangluo)
{
if (wangluo->objectName().isEmpty())
wangluo->setObjectName(QString::fromUtf8("wangluo"));
wangluo->resize(800, 480);
label_zhongduan = new QLabel(wangluo);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
pushButton_wangluoxinxi = new QPushButton(wangluo);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_5 = new QLabel(wangluo);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_zhujiemian = new QPushButton(wangluo);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
pushButton_canshushezhi = new QPushButton(wangluo);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(wangluo);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit_tubiao = new QTextEdit(wangluo);
textEdit_tubiao->setObjectName(QString::fromUtf8("textEdit_tubiao"));
textEdit_tubiao->setGeometry(QRect(584, 2, 210, 36));
textEdit_tubiao->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_tubiao_4g = new QLabel(wangluo);
label_tubiao_4g->setObjectName(QString::fromUtf8("label_tubiao_4g"));
label_tubiao_4g->setGeometry(QRect(720, 4, 31, 31));
label_tubiao_4g->setStyleSheet(QString::fromUtf8("image: url(:/image/image/4G.png);"));
pushButton_xitongshezhi = new QPushButton(wangluo);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_tubiao_lora = new QLabel(wangluo);
label_tubiao_lora->setObjectName(QString::fromUtf8("label_tubiao_lora"));
label_tubiao_lora->setGeometry(QRect(682, 4, 31, 31));
label_tubiao_lora->setStyleSheet(QString::fromUtf8("image: url(:/image/image/LORA.png);"));
label_tubiao_yunxing = new QLabel(wangluo);
label_tubiao_yunxing->setObjectName(QString::fromUtf8("label_tubiao_yunxing"));
label_tubiao_yunxing->setGeometry(QRect(596, 4, 31, 31));
label_tubiao_yunxing->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yunxing.png);"));
label_tubiao_wifi = new QLabel(wangluo);
label_tubiao_wifi->setObjectName(QString::fromUtf8("label_tubiao_wifi"));
label_tubiao_wifi->setGeometry(QRect(758, 4, 31, 31));
label_tubiao_wifi->setStyleSheet(QString::fromUtf8("image: url(:/image/image/WIFI2.png);"));
label_tubiao_lan = new QLabel(wangluo);
label_tubiao_lan->setObjectName(QString::fromUtf8("label_tubiao_lan"));
label_tubiao_lan->setGeometry(QRect(639, 4, 31, 31));
label_tubiao_lan->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yitaiyang.png);"));
label_4 = new QLabel(wangluo);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_6 = new QLabel(wangluo);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 780, 300));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(wangluo);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_1 = new QLabel(wangluo);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_time = new QLabel(wangluo);
label_time->setObjectName(QString::fromUtf8("label_time"));
label_time->setGeometry(QRect(544, 440, 251, 21));
label_time->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 171, 171);\n"
"background-color: rgb(0, 35, 53);"));
textEdit = new QTextEdit(wangluo);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(textEdit->sizePolicy().hasHeightForWidth());
textEdit->setSizePolicy(sizePolicy);
label = new QLabel(wangluo);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->raise();
label_4->raise();
label_3->raise();
label_2->raise();
label_1->raise();
label_5->raise();
label_6->raise();
label_zhongduan->raise();
pushButton_wangluoxinxi->raise();
pushButton_zhujiemian->raise();
pushButton_canshushezhi->raise();
textEdit_tubiao->raise();
label_tubiao_4g->raise();
pushButton_xitongshezhi->raise();
label_tubiao_lora->raise();
label_tubiao_yunxing->raise();
label_tubiao_wifi->raise();
label_tubiao_lan->raise();
label_time->raise();
textEdit->raise();
retranslateUi(wangluo);
QMetaObject::connectSlotsByName(wangluo);
} // setupUi
void retranslateUi(QWidget *wangluo)
{
wangluo->setWindowTitle(QApplication::translate("wangluo", "Form", nullptr));
label_zhongduan->setText(QApplication::translate("wangluo", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
pushButton_wangluoxinxi->setText(QString());
label_5->setText(QString());
pushButton_zhujiemian->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
label_tubiao_4g->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_tubiao_lora->setText(QString());
label_tubiao_yunxing->setText(QString());
label_tubiao_wifi->setText(QString());
label_tubiao_lan->setText(QString());
label_4->setText(QString());
label_6->setText(QApplication::translate("wangluo", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
label_1->setText(QString());
label_time->setText(QApplication::translate("wangluo", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">\347\263\273\347\273\237\346\227\266\351\227\264\357\274\2322022/4/15 16:32:15</span></p></body></html>", nullptr));
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class wangluo: public Ui_wangluo {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_WANGLUO_H

@ -0,0 +1,195 @@
/********************************************************************************
** Form generated from reading UI file 'xitongshezhi.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_XITONGSHEZHI_H
#define UI_XITONGSHEZHI_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_xitongshezhi
{
public:
QLabel *label_tubiao_4g;
QLabel *label_tubiao_wifi;
QPushButton *pushButton_zhujiemian;
QLabel *label_1;
QLabel *label_zhongduan;
QLabel *label_tubiao_lora;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_4;
QLabel *label_tubiao_lan;
QLabel *label_6;
QLabel *label_2;
QPushButton *pushButton_xitongshezhi;
QLabel *label_tubiao_yunxing;
QTextEdit *textEdit_tubiao;
QLabel *label_5;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QLabel *label_time;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *xitongshezhi)
{
if (xitongshezhi->objectName().isEmpty())
xitongshezhi->setObjectName(QString::fromUtf8("xitongshezhi"));
xitongshezhi->resize(800, 480);
label_tubiao_4g = new QLabel(xitongshezhi);
label_tubiao_4g->setObjectName(QString::fromUtf8("label_tubiao_4g"));
label_tubiao_4g->setGeometry(QRect(720, 4, 31, 31));
label_tubiao_4g->setStyleSheet(QString::fromUtf8("image: url(:/image/image/4G.png);"));
label_tubiao_wifi = new QLabel(xitongshezhi);
label_tubiao_wifi->setObjectName(QString::fromUtf8("label_tubiao_wifi"));
label_tubiao_wifi->setGeometry(QRect(758, 4, 31, 31));
label_tubiao_wifi->setStyleSheet(QString::fromUtf8("image: url(:/image/image/WIFI2.png);"));
pushButton_zhujiemian = new QPushButton(xitongshezhi);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
label_1 = new QLabel(xitongshezhi);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_zhongduan = new QLabel(xitongshezhi);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
label_tubiao_lora = new QLabel(xitongshezhi);
label_tubiao_lora->setObjectName(QString::fromUtf8("label_tubiao_lora"));
label_tubiao_lora->setGeometry(QRect(682, 4, 31, 31));
label_tubiao_lora->setStyleSheet(QString::fromUtf8("image: url(:/image/image/LORA.png);"));
pushButton_wangluoxinxi = new QPushButton(xitongshezhi);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_4 = new QLabel(xitongshezhi);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_tubiao_lan = new QLabel(xitongshezhi);
label_tubiao_lan->setObjectName(QString::fromUtf8("label_tubiao_lan"));
label_tubiao_lan->setGeometry(QRect(639, 4, 31, 31));
label_tubiao_lan->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yitaiyang.png);"));
label_6 = new QLabel(xitongshezhi);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 781, 301));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(xitongshezhi);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_xitongshezhi = new QPushButton(xitongshezhi);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_tubiao_yunxing = new QLabel(xitongshezhi);
label_tubiao_yunxing->setObjectName(QString::fromUtf8("label_tubiao_yunxing"));
label_tubiao_yunxing->setGeometry(QRect(596, 4, 31, 31));
label_tubiao_yunxing->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yunxing.png);"));
textEdit_tubiao = new QTextEdit(xitongshezhi);
textEdit_tubiao->setObjectName(QString::fromUtf8("textEdit_tubiao"));
textEdit_tubiao->setGeometry(QRect(584, 2, 210, 36));
textEdit_tubiao->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_5 = new QLabel(xitongshezhi);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_canshushezhi = new QPushButton(xitongshezhi);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(589, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(xitongshezhi);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_time = new QLabel(xitongshezhi);
label_time->setObjectName(QString::fromUtf8("label_time"));
label_time->setGeometry(QRect(544, 440, 251, 21));
label_time->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 171, 171);\n"
"background-color: rgb(0, 35, 53);"));
textEdit = new QTextEdit(xitongshezhi);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
label = new QLabel(xitongshezhi);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label->raise();
textEdit_tubiao->raise();
label_5->raise();
label_3->raise();
label_2->raise();
label_1->raise();
pushButton_zhujiemian->raise();
label_zhongduan->raise();
pushButton_wangluoxinxi->raise();
label_4->raise();
label_6->raise();
pushButton_xitongshezhi->raise();
pushButton_canshushezhi->raise();
label_time->raise();
textEdit->raise();
label_tubiao_wifi->raise();
label_tubiao_4g->raise();
label_tubiao_lora->raise();
label_tubiao_lan->raise();
label_tubiao_yunxing->raise();
retranslateUi(xitongshezhi);
QMetaObject::connectSlotsByName(xitongshezhi);
} // setupUi
void retranslateUi(QWidget *xitongshezhi)
{
xitongshezhi->setWindowTitle(QApplication::translate("xitongshezhi", "Form", nullptr));
label_tubiao_4g->setText(QString());
label_tubiao_wifi->setText(QString());
pushButton_zhujiemian->setText(QString());
label_1->setText(QString());
label_zhongduan->setText(QApplication::translate("xitongshezhi", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
label_tubiao_lora->setText(QString());
pushButton_wangluoxinxi->setText(QString());
label_4->setText(QString());
label_tubiao_lan->setText(QString());
label_6->setText(QApplication::translate("xitongshezhi", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_tubiao_yunxing->setText(QString());
label_5->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
label_time->setText(QApplication::translate("xitongshezhi", "<html><head/><body><p><span style=\" font-size:12pt; font-weight:600;\">\347\263\273\347\273\237\346\227\266\351\227\264\357\274\2322022/4/15 16:32:15</span></p></body></html>", nullptr));
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class xitongshezhi: public Ui_xitongshezhi {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_XITONGSHEZHI_H

@ -0,0 +1,15 @@
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = libqdevicewatcher test testgui
libqdevicewatcher.file = src/libQDeviceWatcher.pro
test.file = test/hotplugwatcher.pro
test.depends += libqdevicewatcher
testgui.file = test/hotplugwatcher_gui.pro
testgui.depends += libqdevicewatcher
OTHER_FILES += \
TODO.txt \
README

@ -0,0 +1,80 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QDeviceWatcher", "src\QDeviceWatcher.vcproj", "{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hotplugwatcher", "test\hotplugwatcher.vcproj", "{BA130713-13E3-3612-ACFE-629A9C00089E}"
ProjectSection(ProjectDependencies) = postProject
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C} = {FA2E1C5D-8F5A-3622-AE23-E63078D7468C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hotplugwatcher_gui", "test\hotplugwatcher_gui.vcproj", "{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}"
ProjectSection(ProjectDependencies) = postProject
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C} = {FA2E1C5D-8F5A-3622-AE23-E63078D7468C}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|STANDARDSDK_500 (ARMV4I) = Debug|STANDARDSDK_500 (ARMV4I)
Debug|Win32 = Debug|Win32
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Release|STANDARDSDK_500 (ARMV4I) = Release|STANDARDSDK_500 (ARMV4I)
Release|Win32 = Release|Win32
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|STANDARDSDK_500 (ARMV4I).ActiveCfg = Debug|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|STANDARDSDK_500 (ARMV4I).Build.0 = Debug|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|STANDARDSDK_500 (ARMV4I).Deploy.0 = Debug|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|Win32.ActiveCfg = Debug|Win32
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|Win32.Build.0 = Debug|Win32
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|STANDARDSDK_500 (ARMV4I).ActiveCfg = Release|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|STANDARDSDK_500 (ARMV4I).Build.0 = Release|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|STANDARDSDK_500 (ARMV4I).Deploy.0 = Release|STANDARDSDK_500 (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|Win32.ActiveCfg = Release|Win32
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|Win32.Build.0 = Release|Win32
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|STANDARDSDK_500 (ARMV4I).ActiveCfg = Debug|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|STANDARDSDK_500 (ARMV4I).Build.0 = Debug|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|STANDARDSDK_500 (ARMV4I).Deploy.0 = Debug|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|Win32.ActiveCfg = Debug|Win32
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|Win32.Build.0 = Debug|Win32
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|STANDARDSDK_500 (ARMV4I).ActiveCfg = Release|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|STANDARDSDK_500 (ARMV4I).Build.0 = Release|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|STANDARDSDK_500 (ARMV4I).Deploy.0 = Release|STANDARDSDK_500 (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|Win32.ActiveCfg = Release|Win32
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|Win32.Build.0 = Release|Win32
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{BA130713-13E3-3612-ACFE-629A9C00089E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|STANDARDSDK_500 (ARMV4I).ActiveCfg = Debug|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|STANDARDSDK_500 (ARMV4I).Build.0 = Debug|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|STANDARDSDK_500 (ARMV4I).Deploy.0 = Debug|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|Win32.ActiveCfg = Debug|Win32
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|Win32.Build.0 = Debug|Win32
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|STANDARDSDK_500 (ARMV4I).ActiveCfg = Release|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|STANDARDSDK_500 (ARMV4I).Build.0 = Release|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|STANDARDSDK_500 (ARMV4I).Deploy.0 = Release|STANDARDSDK_500 (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|Win32.ActiveCfg = Release|Win32
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|Win32.Build.0 = Release|Win32
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
QtVersion = 4.8.0 x86
EndGlobalSection
EndGlobal

@ -0,0 +1,4 @@
Can detect usb storage add and remove event.
Tested on linux and windows(mingw and msvc). WinCE is to be tested.
Thanks qdrive project for the win32 part: https://gitorious.org/qdrive/qdrive

@ -0,0 +1,406 @@
Test wince
http://blog.csdn.net/achellies/article/details/4533881
http://blog.csdn.net/CoolSlob/article/details/3348147
1、可根据dbch_devicetypeDBT_DEVTYP_DEVICEINTERFACE和DBT_DEVTYP_VOLUME分别得到PID/VID/SN和盘符号。
2、当USB设备不是存储设备时只出发一次WM_DEVICECHANGEdevicetype是DBT_DEVTYP_DEVICEINTERFACE
3、当USB设备是存储设备时会触发两次WM_DEVICECHANGE一次是DBT_DEVTYP_DEVICEINTERFACE、一次是DBT_DEVTYP_VOLUME
4、插入时先DBT_DEVTYP_DEVICEINTERFACE后DBT_DEVTYP_VOLUME
5、拔出时先DBT_DEVTYP_VOLUME后DBT_DEVTYP_DEVICEINTERFACE
6、即使是存储设备有时也不会触发DBT_DEVTYP_VOLUME这个问题还没搞清楚。
case WM_DEVICECHANGE:
{
DbgPrint(_T("WM_DEVICECHANGE/n"));
switch (wParam)
{
case DBT_DEVICEARRIVAL:
{
PDEV_BROADCAST_HDR pDBHdr = (PDEV_BROADCAST_HDR)lParam;
switch(pDBHdr->dbch_devicetype)
{
case DBT_DEVTYP_DEVICEINTERFACE:
{
PDEV_BROADCAST_DEVICEINTERFACE pDBInteface = (PDEV_BROADCAST_DEVICEINTERFACE)pDBHdr;
LPOLESTR pGuid = NULL;
StringFromCLSID(pDBInteface->dbcc_classguid,&pGuid);
DbgPrint(_T("DBT_DEVTYP_DEVICEINTERFACE,Device CLSID = %s,Device Name = %s/n"),pGuid,pDBInteface->dbcc_name);
CoTaskMemFree(pGuid);
break;
}
case DBT_DEVTYP_HANDLE:
{
PDEV_BROADCAST_HANDLE pDBHandler = (PDEV_BROADCAST_HANDLE)pDBHdr;
LPOLESTR pGuid = NULL;
StringFromCLSID(pDBHandler->dbch_eventguid,&pGuid);
DbgPrint(_T("DBT_DEVTYP_HANDLE,Device CLSID = %s/n"),pGuid);
CoTaskMemFree(pGuid);
break;
}
case DBT_DEVTYP_OEM:
DbgPrint( _T("DBT_DEVTYP_OEM!/n"));
break;
case DBT_DEVTYP_PORT:
{
PDEV_BROADCAST_PORT pDBPort = (PDEV_BROADCAST_PORT)pDBHdr;
DbgPrint(_T("DBT_DEVTYP_PORT = %s/n"),pDBPort->dbcp_name);
break;
}
case DBT_DEVTYP_VOLUME:
DbgPrint( _T("DBT_DEVTYP_VOLUME!/n"));
break;
}
break;
}
case DBT_DEVICEREMOVECOMPLETE:
{
PDEV_BROADCAST_HDR pDBHdr = (PDEV_BROADCAST_HDR)lParam;
switch(pDBHdr->dbch_devicetype)
{
case DBT_DEVTYP_DEVICEINTERFACE:
{
PDEV_BROADCAST_DEVICEINTERFACE pDBInteface = (PDEV_BROADCAST_DEVICEINTERFACE)pDBHdr;
LPOLESTR pGuid = NULL;
StringFromCLSID(pDBInteface->dbcc_classguid,&pGuid);
DbgPrint(_T("DBT_DEVICEREMOVECOMPLETE,Device CLSID = %s,Device Name = %s/n"),pGuid,pDBInteface->dbcc_name);
CoTaskMemFree(pGuid);
break;
}
case DBT_DEVTYP_HANDLE:
{
PDEV_BROADCAST_HANDLE pDBHandler = (PDEV_BROADCAST_HANDLE)pDBHdr;
LPOLESTR pGuid = NULL;
StringFromCLSID(pDBHandler->dbch_eventguid,&pGuid);
DbgPrint(_T("DBT_DEVTYP_HANDLE,Device CLSID = %s/n"),pGuid);
CoTaskMemFree(pGuid);
break;
}
case DBT_DEVTYP_OEM:
DbgPrint( _T("DBT_DEVTYP_OEM!/n"));
break;
case DBT_DEVTYP_PORT:
{
PDEV_BROADCAST_PORT pDBPort = (PDEV_BROADCAST_PORT)pDBHdr;
DbgPrint(_T("DBT_DEVTYP_PORT = %s/n"),pDBPort->dbcp_name);
break;
}
case DBT_DEVTYP_VOLUME:
DbgPrint( _T("DBT_DEVTYP_VOLUME!/n"));
break;
}
break;
}
}
return LRESULT(TRUE);
}
rpath.pri
OTHER PLATFORM
Use QAbstractEventDispatcher. See QxtGlobalShortcut
other device
windows and other platforms. See QDrive
watch /etc/mtab for linux 2.4
GUI example
from armv6:
tid=0x4001fe20 HotplugWatcher::HotplugWatcher(QObject*)
Hotplug watcher started
parseDeviceInfo: "read fro socket 239 bytes"
parseLine: "add@/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "SUBSYSTEM=usb"
parseLine: "MAJOR=189"
parseLine: "MINOR=4"
parseLine: "DEVTYPE=usb_device"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PRODUCT=125f/312a/a00"
parseLine: "TYPE=0/0/0"
parseLine: "BUSNUM=001"
parseLine: "DEVNUM=005"
parseLine: "SEQNUM=755"
parseDeviceInfo: "read fro socket 294 bytes"
parseLine: "add@/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "SUBSYSTEM=usb"
parseLine: "DEVTYPE=usb_interface"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PRODUCT=125f/312a/a00"
parseLine: "TYPE=0/0/0"
parseLine: "INTERFACE=8/6/80"
parseLine: "MODALIAS=usb:v125Fp312Ad0A00dc00dsc00dp00ic08isc06ip50"
parseLine: "SEQNUM=756"
parseDeviceInfo: "read fro socket 205 bytes"
parseLine: "add@/class/scsi_host/host5"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/scsi_host/host5"
parseLine: "SUBSYSTEM=scsi_host"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=757"
parseDeviceInfo: "read fro socket 251 bytes"
parseLine: "add@/class/usb_endpoint/usbdev1.5_ep02"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep02"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=20"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=758"
parseDeviceInfo: "read fro socket 251 bytes"
parseLine: "add@/class/usb_endpoint/usbdev1.5_ep81"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep81"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=21"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=759"
parseDeviceInfo: "read fro socket 233 bytes"
parseLine: "add@/class/usb_endpoint/usbdev1.5_ep00"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep00"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=22"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb"
parseLine: "SEQNUM=760"
parseDeviceInfo: "read fro socket 262 bytes"
parseLine: "add@/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "SUBSYSTEM=scsi"
parseLine: "DEVTYPE=scsi_device"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "MODALIAS=scsi:t-0x00"
parseLine: "SEQNUM=761"
parseDeviceInfo: "read fro socket 227 bytes"
parseLine: "add@/class/scsi_disk/5:0:0:0"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/scsi_disk/5:0:0:0"
parseLine: "SUBSYSTEM=scsi_disk"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=762"
parseDeviceInfo: "read fro socket 315 bytes"
parseLine: "change@/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "ACTION=change"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "SUBSYSTEM=scsi"
parseLine: "SDEV_MEDIA_CHANGE=1"
parseLine: "DEVTYPE=scsi_device"
parseLine: "DRIVER=sd"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "MODALIAS=scsi:t-0x00"
parseLine: "SEQNUM=763"
parseDeviceInfo: "read fro socket 225 bytes"
parseLine: "add@/block/sdc"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/block/sdc"
parseLine: "SUBSYSTEM=block"
parseLine: "MAJOR=8"
parseLine: "MINOR=32"
parseLine: "DEVTYPE=disk"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=764"
parseDeviceInfo: "read fro socket 240 bytes"
parseLine: "add@/block/sdc/sdc1"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/block/sdc/sdc1"
parseLine: "SUBSYSTEM=block"
parseLine: "MAJOR=8"
parseLine: "MINOR=33"
parseLine: "DEVTYPE=partition"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=765"
parseDeviceInfo: "read fro socket 80 bytes"
parseLine: "add@/class/bdi/8:32"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/bdi/8:32"
parseLine: "SUBSYSTEM=bdi"
parseLine: "SEQNUM=766"
parseDeviceInfo: "read fro socket 233 bytes"
parseLine: "add@/class/scsi_device/5:0:0:0"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/scsi_device/5:0:0:0"
parseLine: "SUBSYSTEM=scsi_device"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=767"
parseDeviceInfo: "read fro socket 245 bytes"
parseLine: "add@/class/scsi_generic/sg2"
parseLine: "ACTION=add"
parseLine: "DEVPATH=/class/scsi_generic/sg2"
parseLine: "SUBSYSTEM=scsi_generic"
parseLine: "MAJOR=21"
parseLine: "MINOR=2"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=768"
parseDeviceInfo: "read fro socket 257 bytes"
parseLine: "remove@/class/usb_endpoint/usbdev1.5_ep02"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep02"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=20"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=769"
parseDeviceInfo: "read fro socket 257 bytes"
parseLine: "remove@/class/usb_endpoint/usbdev1.5_ep81"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep81"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=21"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=770"
parseDeviceInfo: "read fro socket 251 bytes"
parseLine: "remove@/class/scsi_generic/sg2"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/scsi_generic/sg2"
parseLine: "SUBSYSTEM=scsi_generic"
parseLine: "MAJOR=21"
parseLine: "MINOR=2"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=771"
parseDeviceInfo: "read fro socket 239 bytes"
parseLine: "remove@/class/scsi_device/5:0:0:0"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/scsi_device/5:0:0:0"
parseLine: "SUBSYSTEM=scsi_device"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=772"
parseDeviceInfo: "read fro socket 233 bytes"
parseLine: "remove@/class/scsi_disk/5:0:0:0"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/scsi_disk/5:0:0:0"
parseLine: "SUBSYSTEM=scsi_disk"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=773"
parseDeviceInfo: "read fro socket 246 bytes"
parseLine: "remove@/block/sdc/sdc1"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/block/sdc/sdc1"
parseLine: "SUBSYSTEM=block"
parseLine: "MAJOR=8"
parseLine: "MINOR=33"
parseLine: "DEVTYPE=partition"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=774"
parseDeviceInfo: "read fro socket 86 bytes"
parseLine: "remove@/class/bdi/8:32"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/bdi/8:32"
parseLine: "SUBSYSTEM=bdi"
parseLine: "SEQNUM=775"
parseDeviceInfo: "read fro socket 231 bytes"
parseLine: "remove@/block/sdc"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/block/sdc"
parseLine: "SUBSYSTEM=block"
parseLine: "MAJOR=8"
parseLine: "MINOR=32"
parseLine: "DEVTYPE=disk"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "PHYSDEVDRIVER=sd"
parseLine: "SEQNUM=776"
parseDeviceInfo: "read fro socket 268 bytes"
parseLine: "remove@/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0/host5/target5:0:0/5:0:0:0"
parseLine: "SUBSYSTEM=scsi"
parseLine: "DEVTYPE=scsi_device"
parseLine: "PHYSDEVBUS=scsi"
parseLine: "MODALIAS=scsi:t-0x00"
parseLine: "SEQNUM=777"
parseDeviceInfo: "read fro socket 211 bytes"
parseLine: "remove@/class/scsi_host/host5"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/scsi_host/host5"
parseLine: "SUBSYSTEM=scsi_host"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb-storage"
parseLine: "SEQNUM=778"
parseDeviceInfo: "read fro socket 300 bytes"
parseLine: "remove@/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2/1-1.2:1.0"
parseLine: "SUBSYSTEM=usb"
parseLine: "DEVTYPE=usb_interface"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PRODUCT=125f/312a/a00"
parseLine: "TYPE=0/0/0"
parseLine: "INTERFACE=8/6/80"
parseLine: "MODALIAS=usb:v125Fp312Ad0A00dc00dsc00dp00ic08isc06ip50"
parseLine: "SEQNUM=779"
parseDeviceInfo: "read fro socket 239 bytes"
parseLine: "remove@/class/usb_endpoint/usbdev1.5_ep00"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/class/usb_endpoint/usbdev1.5_ep00"
parseLine: "SUBSYSTEM=usb_endpoint"
parseLine: "MAJOR=253"
parseLine: "MINOR=22"
parseLine: "PHYSDEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PHYSDEVDRIVER=usb"
parseLine: "SEQNUM=780"
parseDeviceInfo: "read fro socket 245 bytes"
parseLine: "remove@/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "ACTION=remove"
parseLine: "DEVPATH=/devices/platform/tcc-ohci/usb1/1-1/1-1.2"
parseLine: "SUBSYSTEM=usb"
parseLine: "MAJOR=189"
parseLine: "MINOR=4"
parseLine: "DEVTYPE=usb_device"
parseLine: "PHYSDEVBUS=usb"
parseLine: "PRODUCT=125f/312a/a00"
parseLine: "TYPE=0/0/0"
parseLine: "BUSNUM=001"
parseLine: "DEVNUM=005"
parseLine: "SEQNUM=781"

@ -0,0 +1,160 @@
# qmake common template pri file
# Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
# Shanghai, China.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
CONFIG += profile
#profiling, -pg is not supported for msvc
debug:!*msvc*:profile {
QMAKE_CXXFLAGS_DEBUG += -pg
QMAKE_LFLAGS_DEBUG += -pg
QMAKE_CXXFLAGS_DEBUG = $$unique(QMAKE_CXXFLAGS_DEBUG)
QMAKE_LFLAGS_DEBUG = $$unique(QMAKE_LFLAGS_DEBUG)
}
#$$[TARGET_PLATFORM]
#$$[QT_ARCH] #windows symbian windowsce arm
_OS =
_ARCH =
_EXTRA =
unix {
_OS = _unix
*linux*: _OS = _linux
*maemo* {
_OS = _maemo
*maemo5*:_OS = _maemo5
*maemo6*:_OS = _maemo6
}
*meego*: _OS = _meego
!isEmpty(MEEGO_EDITION): _OS = _$$MEEGO_EDITION
} else:wince* {
_OS = _wince
} else:win32 { #true for wince
_OS = _win32
} else:macx {
_OS = _macx
}
#*arm*: _ARCH = $${_ARCH}_arm
contains(QT_ARCH, arm.*) {
_ARCH = $${_ARCH}_$${QT_ARCH}
}
*64: _ARCH = $${_ARCH}_x64
*llvm*: _EXTRA = _llvm
#*msvc*:
win32-msvc* {
#Don't warn about sprintf, fopen etc being 'unsafe'
DEFINES += _CRT_SECURE_NO_WARNINGS
}
#################################functions#########################################
defineReplace(cleanPath) {
win32:1 ~= s|\\\\|/|g
contains(1, ^/.*):pfx = /
else:pfx =
segs = $$split(1, /)
out =
for(seg, segs) {
equals(seg, ..):out = $$member(out, 0, -2)
else:!equals(seg, .):out += $$seg
}
return($$join(out, /, $$pfx))
}
#Acts like qtLibraryTarget. From qtcreator.pri
defineReplace(qtLibName) {
#TEMPLATE += fakelib
#LIB_FULLNAME = $$qtLibraryTarget($$1)
#TEMPLATE -= fakelib
unset(LIBRARY_NAME)
LIBRARY_NAME = $$1
CONFIG(debug, debug|release) {
!debug_and_release|build_pass {
mac:RET = $$member(LIBRARY_NAME, 0)_debug
else:win32:RET = $$member(LIBRARY_NAME, 0)d
}
}
isEmpty(RET):RET = $$LIBRARY_NAME
!win32: return($$RET)
isEmpty(2): VERSION_EXT = $$VERSION
else: VERSION_EXT = $$2
!isEmpty(VERSION_EXT) {
VERSION_EXT = $$section(VERSION_EXT, ., 0, 0)
isEqual(VERSION_EXT, 0):unset(VERSION_EXT)
}
RET = $${RET}$${VERSION_EXT}
unset(VERSION_EXT)
return($$RET)
}
#fakelib
defineReplace(qtStaticLib) {
unset(LIB_FULLNAME)
LIB_FULLNAME = $$qtLibName($$1, $$2)
*msvc*: LIB_FULLNAME = $$member(LIB_FULLNAME, 0).lib
else: LIB_FULLNAME = lib$$member(LIB_FULLNAME, 0).a
return($$LIB_FULLNAME)
}
defineReplace(qtSharedLib) {
unset(LIB_FULLNAME)
LIB_FULLNAME = $$qtLibName($$1, $$2)
win32: LIB_FULLNAME = $$member(LIB_FULLNAME, 0).dll
else: LIB_FULLNAME = lib$$member(LIB_FULLNAME, 0).so
#macx: TARGET_BASEPATH = $${TARGET_BASEPATH}.$${QMAKE_EXTENSION_SHLIB} #default_post.prf
return($$LIB_FULLNAME)
}
defineReplace(qtLongName) {
unset(LONG_NAME)
LONG_NAME = $$1$${_OS}$${_ARCH}$${_EXTRA}
return($$LONG_NAME)
}
##############################paths####################################
#message(pwd=$$PWD) #this file dir
#message(out pwd=$$OUT_PWD) #Makefile dir
#message(pro file=$$_PRO_FILE_)
#message(pro file pwd=$$_PRO_FILE_PWD_)
BUILD_DIR=$$PWD
isEqual(TEMPLATE, app) {
DESTDIR = $$BUILD_DIR/bin
TARGET = $$qtLongName($$TARGET)
EXE_EXT =
win32: EXE_EXT = .exe
CONFIG(release, debug|release):
!isEmpty(QMAKE_STRIP): QMAKE_POST_LINK = -$$QMAKE_STRIP $$DESTDIR/$${TARGET}$${EXE_EXT} #.exe in win
}
else: DESTDIR = $$qtLongName($$BUILD_DIR/lib)
OBJECTS_DIR = $$qtLongName($$BUILD_DIR/.obj/)
#for Qt2, Qt3 which does not have QT_VERSION. Qt4: $$[QT_VERSION]
MOC_DIR = $$BUILD_DIR/.moc/$${QT_VERSION}
RCC_DIR = $$BUILD_DIR/.rcc/$${QT_VERSION}
UI_DIR = $$BUILD_DIR/.ui/$${QT_VERSION}
!build_pass:message(target: $$DESTDIR/$$TARGET)
#before target name changed
#TRANSLATIONS += i18n/$${TARGET}_zh-cn.ts #i18n/$${TARGET}_zh_CN.ts

@ -0,0 +1,862 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="QDeviceWatcher"
ProjectGUID="{FA2E1C5D-8F5A-3622-AE23-E63078D7468C}"
Keyword="Qt4VSv1.0"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
<Platform
Name="STANDARDSDK_500 (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\lib_win32\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\QDeviceWatcherd2.dll"
Version="2.00"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcherd2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\QDeviceWatcherd2.dll"
Version="2.00"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcherd2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\QDeviceWatcherd2.dll"
Version="2.00"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcherd2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\lib_win32\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,NDEBUG"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalDependencies="User32.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\QDeviceWatcher2.dll"
Version="2.00"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcher2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="..\lib_wince"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="Q_DLL_LIBRARY;UNDER_CE;WINCE;_WINDOWS;_UNICODE;UNICODE;_WIN32;QT_NO_PRINTER;QT_NO_PRINTDIALOG;ARMV4I;_ARMV4I_;armv4i;_ARM_;ARM;_M_ARM;__arm__;Q_OS_WINCE_WM;_WIN32_WCE=$(CEVER);QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;CELIB_LIB"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="false"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\QDeviceWatcher2.dll"
Version="2.0.0"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
DelayLoadDLLs=""
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
StackReserveSize="0"
StackCommitSize="0"
OptimizeReferences="0"
EnableCOMDATFolding="0"
OptimizeForWindows98="0"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="2"
DataExecutionPrevention="2"
TargetMachine="16"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcher2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="msvcr90.dll|$(BINDIR)\$(INSTRUCTIONSET)|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0;QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="Q_DLL_LIBRARY;UNDER_CE;WINCE;_WINDOWS;_UNICODE;UNICODE;_WIN32;QT_NO_PRINTER;QT_NO_PRINTDIALOG;ARMV4I;_ARMV4I_;armv4i;_ARM_;ARM;_M_ARM;__arm__;Q_OS_WINCE_WM;_WIN32_WCE=$(CEVER);QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;CELIB_LIB"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="false"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,Q_DLL_LIBRARY,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\QDeviceWatcher2.dll"
Version="2.0.0"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib"
DelayLoadDLLs=""
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
StackReserveSize="0"
StackCommitSize="0"
OptimizeReferences="0"
EnableCOMDATFolding="0"
OptimizeForWindows98="0"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="2"
DataExecutionPrevention="2"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
Description="Copy QDeviceWatcher2.dll to ..\bin"
CommandLine="copy &quot;$(TargetPath)&quot; &quot;..\bin&quot;"
ExcludedFromBuild="false"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="qdevicechangeevent.cpp"
>
</File>
<File
RelativePath="qdevicewatcher.cpp"
>
</File>
<File
RelativePath=".\qdevicewatcher_linux.cpp"
>
</File>
<File
RelativePath="qdevicewatcher_win32.cpp"
>
</File>
<File
RelativePath=".\qdevicewatcher_wince.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="qdevicechangeevent.h"
>
</File>
<File
RelativePath="qdevicewatcher.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DNDEBUG -D_WINDLL &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DQ_DLL_LIBRARY -DUNDER_CE -DWINCE -D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DCELIB_LIB -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DQ_DLL_LIBRARY -DUNDER_CE -DWINCE -D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DCELIB_LIB -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
<File
RelativePath="qdevicewatcher_global.h"
>
</File>
<File
RelativePath="qdevicewatcher_p.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQ_DLL_LIBRARY -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DNDEBUG -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -DQ_DLL_LIBRARY -DUNDER_CE -DWINCE -D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DCELIB_LIB -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing qdevicewatcher_p.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -DQ_DLL_LIBRARY -DUNDER_CE -DWINCE -D_WINDOWS -D_UNICODE -DUNICODE -D_WIN32 -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DCELIB_LIB -D_WINDLL &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Generated Files"
Filter="cpp;c;cxx;moc;h;def;odl;idl;res;"
UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
>
<File
RelativePath="..\.moc\moc_qdevicewatcher.cpp"
>
</File>
<File
RelativePath="..\.moc\moc_qdevicewatcher_p.cpp"
>
</File>
</Filter>
</Files>
<Globals>
<Global
Name="MocDir"
Value=".\..\.moc"
/>
<Global
Name="QtVersion STANDARDSDK_500 (ARMV4I)"
Value="wince50std-armv4i-msvc2008"
/>
<Global
Name="QtVersion Win32"
Value="4.8.0 x86"
/>
<Global
Name="QtVersion Windows Mobile 6 Professional SDK (ARMV4I)"
Value="wincewm60pro-vc9"
/>
<Global
Name="RccDir"
Value=".\..\.rcc"
/>
<Global
Name="UicDir"
Value=".\..\.uic"
/>
</Globals>
</VisualStudioProject>

@ -0,0 +1,134 @@
# qmake library building template pri file
# Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
# Shanghai, China.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
############################## HOW TO ##################################
# Suppose the library name is XX
# Usually what you need to change are: staticlink, LIB_VERSION, NAME and DLLDESTDIR.
# And rename xx-buildlib and LIBXX_PRI_INCLUDED
# the contents of libXX.pro is:
#
# TEMPLATE = lib
# QT -= gui
# CONFIG *= xx-buildlib
# include(libXX.pri)
# HEADERS = ...
# SOURCES = ...
# ...
# the content of other pro using this library is:
#
# TEMPLATE = app
# include(dir_of_XX/libXX.pri)
# HEADERS = ...
# SOURCES = ...
#
!isEmpty(LIBQDEVICEWATCHER_PRI_INCLUDED):error("libQDeviceWatcher.pri already included")
LIBQDEVICEWATCHER_PRI_INCLUDED = 1
staticlink = 0 #1 or 0. use static lib or not
LIB_VERSION = 2.0.0
#QT += network
NAME = QDeviceWatcher
TEMPLATE += fakelib
PROJECT_TARGETNAME = $$qtLibraryTarget($$NAME)
TEMPLATE -= fakelib
include(../common.pri)
#load(../common.pri)
CONFIG += depend_includepath #?
PROJECT_SRCPATH = $$PWD
PROJECT_LIBDIR = $$qtLongName($$PWD/../lib)
#PROJECT_LIBDIR = $$PWD/../bin #for win dll
INCLUDEPATH += $$PROJECT_SRCPATH
DEPENDPATH += $$PROJECT_SRCPATH
QMAKE_LFLAGS_RPATH += #will append to rpath dir
!qdevicewatcher-buildlib {
#The following may not need to change
CONFIG *= link_prl
LIBS += -L$$PROJECT_LIBDIR -l$$qtLibName($$NAME)
isEqual(staticlink, 1) {
PRE_TARGETDEPS += $$PROJECT_LIBDIR/$$qtStaticLib($$NAME)
} else {
win32 {
PRE_TARGETDEPS += $$PROJECT_LIBDIR/$$qtSharedLib($$NAME, $$LIB_VERSION)
} else {
PRE_TARGETDEPS += $$PROJECT_LIBDIR/$$qtSharedLib($$NAME)
unix: QMAKE_RPATHDIR += $$DESTDIR:$$PROJECT_LIBDIR #executable's dir
}
}
} else {
#Add your additional configuration first
win32: LIBS += -lUser32
#The following may not need to change
#TEMPLATE = lib
VERSION = $$LIB_VERSION
TARGET = $$PROJECT_TARGETNAME
DESTDIR= $$PROJECT_LIBDIR
CONFIG *= create_prl #
isEqual(staticlink, 1) {
CONFIG -= shared dll ##otherwise the following shared is true, why?
CONFIG *= staticlib
}
else {
DEFINES += Q_DLL_LIBRARY #win32-msvc*
CONFIG *= shared #shared includes dll
}
shared {
DLLDESTDIR = ../bin #copy shared lib there
CONFIG(release, debug|release):
!isEmpty(QMAKE_STRIP): QMAKE_POST_LINK = -$$QMAKE_STRIP $$PROJECT_LIBDIR/$$qtSharedLib($$NAME)
#copy from the pro creator creates.
symbian {
MMP_RULES += EXPORTUNFROZEN
TARGET.UID3 = 0xE4CC8061
TARGET.CAPABILITY =
TARGET.EPOCALLOWDLLDATA = 1
addFiles.sources = $$qtSharedLib($$NAME, $$LIB_VERSION)
addFiles.path = !:/sys/bin
DEPLOYMENT += addFiles
}
}
unix:!symbian {
maemo5 {
target.path = /opt/usr/lib
} else {
target.path = /usr/lib
}
INSTALLS += target
}
}
unset(LIB_VERSION)
unset(PROJECT_SRCPATH)
unset(PROJECT_LIBDIR)
unset(PROJECT_TARGETNAME)
unset(staticlink)

@ -0,0 +1,23 @@
TEMPLATE = lib
QT -= gui
CONFIG *= qdevicewatcher-buildlib
!include(libQDeviceWatcher.pri): error(could not find ibQDeviceWatcher.pri)
#src
unix: SOURCES += qdevicewatcher_linux.cpp
win32 {
wince*: SOURCES += qdevicewatcher_wince.cpp
else: SOURCES += qdevicewatcher_win32.cpp
}
SOURCES += qdevicewatcher.cpp \
qdevicechangeevent.cpp
HEADERS += \
qdevicewatcher_p.h \
qdevicewatcher.h \
qdevicechangeevent.h \
qdevicewatcher_global.h

@ -0,0 +1,29 @@
/******************************************************************************
QDeviceChangeEvent: Device change event
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include "qdevicechangeevent.h"
//const QEvent::Type QDeviceChangeEvent::EventType = static_cast<QEvent::Type>(QEvent::registerEventType());
QDeviceChangeEvent::QDeviceChangeEvent(Action action, const QString &device) :
QEvent(registeredType())
{
m_action = action;
m_device = device;
}

@ -0,0 +1,49 @@
/******************************************************************************
QDeviceChangeEvent: Device change event
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef QDEVICECHANGEEVENT_H
#define QDEVICECHANGEEVENT_H
#include <QtCore/QEvent>
#include <QtCore/QString>
#include "qdevicewatcher_global.h"
class Q_DLL_EXPORT QDeviceChangeEvent : public QEvent
{
Q_ENUMS(Action)
public:
enum Action { Add, Remove, Change};
//static const Type EventType; //VC link error
explicit QDeviceChangeEvent(Action action, const QString& device);
Action action() const {return m_action;}
QString device() const {return m_device;}
static Type registeredType()
{
static Type EventType = static_cast<Type>(registerEventType());
return EventType;
}
private:
Action m_action;
QString m_device;
};
#endif // QDEVICECHANGEEVENT_H

@ -0,0 +1,94 @@
/******************************************************************************
QDeviceWatcher: Device watcher class
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include "qdevicewatcher.h"
#include "qdevicewatcher_p.h"
QDeviceWatcher::QDeviceWatcher(QObject* parent)
:QObject(parent),running(false),d_ptr(new QDeviceWatcherPrivate)
{
Q_D(QDeviceWatcher);
d->setWatcher(this);
}
QDeviceWatcher::~QDeviceWatcher()
{
if (d_ptr) {
delete d_ptr;
d_ptr = NULL;
}
}
bool QDeviceWatcher::start()
{
Q_D(QDeviceWatcher);
if (!d->start()) {
stop();
running = false;
}
running = true;
return running;
}
bool QDeviceWatcher::stop()
{
Q_D(QDeviceWatcher);
running = !d->stop();
return !running;
}
bool QDeviceWatcher::isRunning() const
{
return running;
}
void QDeviceWatcher::appendEventReceiver(QObject *receiver)
{
Q_D(QDeviceWatcher);
d->event_receivers.append(receiver);
}
void QDeviceWatcherPrivate::emitDeviceAdded(const QString &dev)
{
if (!QMetaObject::invokeMethod(watcher, "deviceAdded", Q_ARG(QString, dev)))
qWarning("invoke deviceAdded failed");
}
void QDeviceWatcherPrivate::emitDeviceChanged(const QString &dev)
{
if (!QMetaObject::invokeMethod(watcher, "deviceChanged", Q_ARG(QString, dev)))
qWarning("invoke deviceChanged failed");
}
void QDeviceWatcherPrivate::emitDeviceRemoved(const QString &dev)
{
if (!QMetaObject::invokeMethod(watcher, "deviceRemoved", Q_ARG(QString, dev)))
qWarning("invoke deviceRemoved failed");
}
void QDeviceWatcherPrivate::emitDeviceAction(const QString &dev, const QString &action)
{
QString a(action.toLower());
if (a == QLatin1String("add"))
emitDeviceAdded(dev);
else if (a == QLatin1String("remove"))
emitDeviceRemoved(dev);
else if (a == QLatin1String("change"))
emitDeviceChanged(dev);
}

@ -0,0 +1,52 @@
/******************************************************************************
QDeviceWatcher: Device watcher class
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef QUSBWATCHER_H
#define QUSBWATCHER_H
#include <QtCore/QObject>
#include "qdevicewatcher_global.h"
class QDeviceWatcherPrivate;
class Q_DLL_EXPORT QDeviceWatcher : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeviceWatcher)
public:
explicit QDeviceWatcher(QObject *parent = 0);
~QDeviceWatcher();
bool start();
bool stop();
bool isRunning() const;
void appendEventReceiver(QObject* receiver);
signals:
void deviceAdded(const QString& dev);
void deviceChanged(const QString& dev); //when umounting the device
void deviceRemoved(const QString& dev);
protected:
bool running;
QDeviceWatcherPrivate *d_ptr;
};
#endif // QUSBWATCHER_H

@ -0,0 +1,31 @@
/******************************************************************************
qdevicewatcher_global.h: description
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef QDEVICEWATCHER_GLOBAL_H
#define QDEVICEWATCHER_GLOBAL_H
#if defined(Q_DLL_LIBRARY)
# undef Q_DLL_EXPORT
# define Q_DLL_EXPORT Q_DECL_EXPORT
#else
# undef Q_DLL_EXPORT
# define Q_DLL_EXPORT //Q_DECL_IMPORT //only for vc?
#endif
#endif // QDEVICEWATCHER_GLOBAL_H

@ -0,0 +1,267 @@
/******************************************************************************
QDeviceWatcherPrivate: watching depends on platform
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include "qdevicewatcher_p.h"
#ifdef Q_OS_LINUX
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <linux/version.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
#else
#endif
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <errno.h>
#include <unistd.h>
#include <QtCore/QCoreApplication>
#include <QtCore/qregexp.h>
#if CONFIG_SOCKETNOTIFIER
#include <QtCore/QSocketNotifier>
#elif CONFIG_TCPSOCKET
#include <QtNetwork/QTcpSocket>
#endif
#include "qdevicechangeevent.h"
#define UEVENT_BUFFER_SIZE 2048
enum udev_monitor_netlink_group {
UDEV_MONITOR_NONE,
UDEV_MONITOR_KERNEL,
UDEV_MONITOR_UDEV
};
QDeviceWatcherPrivate::~QDeviceWatcherPrivate()
{
stop();
close(netlink_socket);
netlink_socket = -1;
}
bool QDeviceWatcherPrivate::start()
{
if (!init())
return false;
#if CONFIG_SOCKETNOTIFIER
socket_notifier->setEnabled(true);
#elif CONFIG_TCPSOCKET
connect(tcp_socket, SIGNAL(readyRead()), SLOT(parseDeviceInfo()));
#else
this->QThread::start();
#endif
return true;
}
bool QDeviceWatcherPrivate::stop()
{
if (netlink_socket!=-1) {
#if CONFIG_SOCKETNOTIFIER
socket_notifier->setEnabled(false);
#elif CONFIG_TCPSOCKET
//tcp_socket->close(); //how to restart?
disconnect(this, SLOT(parseDeviceInfo()));
#else
this->quit();
#endif
close(netlink_socket);
netlink_socket = -1;
}
return true;
}
void QDeviceWatcherPrivate::parseDeviceInfo()
{//zDebug("%s active", qPrintable(QTime::currentTime().toString()));
QByteArray data;
#if CONFIG_SOCKETNOTIFIER
//socket_notifier->setEnabled(false); //for win
data.resize(UEVENT_BUFFER_SIZE*2);
data.fill(0);
size_t len = read(socket_notifier->socket(), data.data(), UEVENT_BUFFER_SIZE*2);
zDebug("read fro socket %d bytes", len);
data.resize(len);
//socket_notifier->setEnabled(true); //for win
#elif CONFIG_TCPSOCKET
data = tcp_socket->readAll();
#endif
data = data.replace(0, '\n').trimmed(); //In the original line each information is seperated by 0
if (buffer.isOpen())
buffer.close();
buffer.setBuffer(&data);
buffer.open(QIODevice::ReadOnly);
while(!buffer.atEnd()) { //buffer.canReadLine() always false?
parseLine(buffer.readLine().trimmed());
}
buffer.close();
}
#if CONFIG_THREAD
//another thread
void QDeviceWatcherPrivate::run()
{
QByteArray data;
//loop only when event happens. because of recv() block the function?
while (1) {
//char buf[UEVENT_BUFFER_SIZE*2] = {0};
//recv(d->netlink_socket, &buf, sizeof(buf), 0);
data.resize(UEVENT_BUFFER_SIZE*2);
data.fill(0);
size_t len = recv(netlink_socket, data.data(), data.size(), 0);
zDebug("read fro socket %d bytes", len);
data.resize(len);
data = data.replace(0, '\n').trimmed();
if (buffer.isOpen())
buffer.close();
buffer.setBuffer(&data);
buffer.open(QIODevice::ReadOnly);
QByteArray line = buffer.readLine();
while(!line.isNull()) {
parseLine(line.trimmed());
line = buffer.readLine();
}
buffer.close();
}
}
#endif //CONFIG_THREAD
/**
* Create new udev monitor and connect to a specified event
* source. Valid sources identifiers are "udev" and "kernel".
*
* Applications should usually not connect directly to the
* "kernel" events, because the devices might not be useable
* at that time, before udev has configured them, and created
* device nodes.
*
* Accessing devices at the same time as udev, might result
* in unpredictable behavior.
*
* The "udev" events are sent out after udev has finished its
* event processing, all rules have been processed, and needed
* device nodes are created.
**/
bool QDeviceWatcherPrivate::init()
{
struct sockaddr_nl snl;
const int buffersize = 16 * 1024 * 1024;
int retval;
memset(&snl, 0x00, sizeof(struct sockaddr_nl));
snl.nl_family = AF_NETLINK;
snl.nl_pid = getpid();
snl.nl_groups = UDEV_MONITOR_KERNEL;
netlink_socket = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
//netlink_socket = socket(PF_NETLINK, SOCK_DGRAM|SOCK_CLOEXEC, NETLINK_KOBJECT_UEVENT); //SOCK_CLOEXEC may be not available
if (netlink_socket == -1) {
qWarning("error getting socket: %s", strerror(errno));
return false;
}
/* set receive buffersize */
setsockopt(netlink_socket, SOL_SOCKET, SO_RCVBUFFORCE, &buffersize, sizeof(buffersize));
retval = bind(netlink_socket, (struct sockaddr*) &snl, sizeof(struct sockaddr_nl));
if (retval < 0) {
qWarning("bind failed: %s", strerror(errno));
close(netlink_socket);
netlink_socket = -1;
return false;
} else if (retval == 0) {
//from libudev-monitor.c
struct sockaddr_nl _snl;
socklen_t _addrlen;
/*
* get the address the kernel has assigned us
* it is usually, but not necessarily the pid
*/
_addrlen = sizeof(struct sockaddr_nl);
retval = getsockname(netlink_socket, (struct sockaddr *)&_snl, &_addrlen);
if (retval == 0)
snl.nl_pid = _snl.nl_pid;
}
#if CONFIG_SOCKETNOTIFIER
socket_notifier = new QSocketNotifier(netlink_socket, QSocketNotifier::Read, this);
connect(socket_notifier, SIGNAL(activated(int)), SLOT(parseDeviceInfo())); //will always active
socket_notifier->setEnabled(false);
#elif CONFIG_TCPSOCKET
//QAbstractSocket *socket = new QAbstractSocket(QAbstractSocket::UnknownSocketType, this); //will not detect "remove", why?
tcp_socket = new QTcpSocket(this); //works too
if (!tcp_socket->setSocketDescriptor(netlink_socket, QAbstractSocket::ConnectedState)) {
qWarning("Failed to assign native socket to QAbstractSocket: %s", qPrintable(tcp_socket->errorString()));
delete tcp_socket;
return false;
}
#endif
return true;
}
void QDeviceWatcherPrivate::parseLine(const QByteArray &line)
{
zDebug("%s", line.constData());
#define USE_REGEXP 0
#if USE_REGEXP
QRegExp rx("(\\w+)(?:@/.*/block/.*/)(\\w+)\\W*");
//QRegExp rx("(add|remove|change)@/.*/block/.*/(\\w+)\\W*");
if (rx.indexIn(line) == -1)
return;
QString action_str = rx.cap(1).toLower();
QString dev = "/dev/" + rx.cap(2);
#else
if (!line.contains("/block/")) //hotplug
return;
QString action_str = line.left(line.indexOf('@')).toLower();
QString dev = "/dev/" + line.right(line.length() - line.lastIndexOf('/') - 1);
#endif //USE_REGEXP
QDeviceChangeEvent *event = 0;
if (action_str==QLatin1String("add")) {
emitDeviceAdded(dev);
event = new QDeviceChangeEvent(QDeviceChangeEvent::Add, dev);
} else if (action_str==QLatin1String("remove")) {
emitDeviceRemoved(dev);
event = new QDeviceChangeEvent(QDeviceChangeEvent::Remove, dev);
} else if (action_str==QLatin1String("change")) {
emitDeviceChanged(dev);
event = new QDeviceChangeEvent(QDeviceChangeEvent::Change, dev);
}
zDebug("%s %s", qPrintable(action_str), qPrintable(dev));
if (event != 0 && !event_receivers.isEmpty()) {
foreach(QObject* obj, event_receivers) {
QCoreApplication::postEvent(obj, event, Qt::HighEventPriority);
}
}
}
#endif //Q_OS_LINUX

@ -0,0 +1,117 @@
/******************************************************************************
QDeviceWatcherPrivate: watching depends on platform
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef QDEVICEWATCHER_P_H
#define QDEVICEWATCHER_P_H
/*!
Usually we use CONFIG_SOCKETNOTIFIER. CONFIG_TCPSOCKET and CONFIG_THREAD are test case
*/
#include <QtCore/qglobal.h>
#define CONFIG_SOCKETNOTIFIER 1
#define CONFIG_TCPSOCKET 0 //QtNetwork
#if defined(Q_OS_WINCE)
#define CONFIG_THREAD 1
#elif defined(Q_OS_LINUX)
#define CONFIG_THREAD (!CONFIG_SOCKETNOTIFIER && !CONFIG_TCPSOCKET)
#else
#define CONFIG_THREAD 0
#endif
//#define QT_NO_DEBUG_OUTPUT 0
#define CONFIG_DEBUG 1
#if CONFIG_DEBUG
#define zDebug(fmt, ...) qDebug("%s: "#fmt, __FUNCTION__, ##__VA_ARGS__)
#else
#define zDebug(fmt, ...)
#endif //CONFIG_DEBUG
#ifdef Q_OS_WIN
#include <qt_windows.h>
#else
#include <QtCore/QBuffer>
#endif //Q_OS_WIN
#include <QtCore/QList>
#include <QtCore/QThread>
class QDeviceWatcher;
class QDeviceWatcherPrivate
#if CONFIG_THREAD
: public QThread
#else
: public QObject
#endif //CONFIG_THREAD
{
Q_OBJECT
public:
QDeviceWatcherPrivate(QObject *parent = 0) :
#if CONFIG_THREAD
QThread(parent)
#else
QObject(parent)
#endif //CONFIG_THREAD
{
//init();
}
~QDeviceWatcherPrivate();
void setWatcher(QDeviceWatcher *w) {watcher=w;}
bool start();
bool stop();
//Do not use Qt::DirectConnection. this thread is not watcher's thread!
void emitDeviceAdded(const QString& dev);
void emitDeviceChanged(const QString& dev); //Linux: when umounting the device
void emitDeviceRemoved(const QString& dev);
void emitDeviceAction(const QString& dev, const QString& action);
QList<QObject*> event_receivers;
private slots:
void parseDeviceInfo();
private:
QDeviceWatcher *watcher;
bool init();
#if CONFIG_THREAD
virtual void run();
#endif //CONFIG_THREAD
#if defined(Q_OS_LINUX)
QBuffer buffer;
void parseLine(const QByteArray& line);
# if CONFIG_TCPSOCKET
class QTcpSocket *tcp_socket;
# elif CONFIG_SOCKETNOTIFIER
class QSocketNotifier *socket_notifier;
# endif
QString bus_name;
int netlink_socket;
#elif defined(Q_OS_WIN32)
HWND hwnd;
#elif defined(Q_OS_WINCE)
HANDLE mQueueHandle;
HANDLE mNotificationHandle;
#endif
};
#endif // QDEVICEWATCHER_P_H

@ -0,0 +1,385 @@
/******************************************************************************
QDeviceWatcherPrivate: watching depends on platform
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include "qdevicewatcher_p.h"
//TODO: If wince works, use Q_OS_WIN
#ifdef Q_OS_WIN32
#include <QtCore/QStringList>
#include <QtCore/QCoreApplication>
#include "qdevicechangeevent.h"
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
#include <dbt.h>
#ifndef DBT_CUSTOMEVENT
# define DBT_CUSTOMEVENT 0x8006
#endif
#define CONFIG_NOTIFICATION 0
/*
*http://www.codeproject.com/Articles/14500/Detecting-Hardware-Insertion-and-or-Removal
*http://blog.csdn.net/sxbluebird/article/details/2445145
*/
#if CONFIG_NOTIFICATION
static HDEVNOTIFY hDevNotify = 0;
#define HID_CLASSGUID {0x4d1e55b2, 0xf16f, 0x11cf,{ 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}}
static const GUID WceusbshGUID = { 0x25dbce51, 0x6c8f, 0x4a72, 0x8a,0x6d,0xb5,0x4c,0x2b,0x4f,0xc8,0x35 };
static const GUID GUID_DEVINTERFACE_USBSTOR = { 0xA5DCBF10L, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } };
static const GUID InterfaceClassGuid = GUID_DEVINTERFACE_USBSTOR;//(GUID)HID_CLASSGUID; //GUID_DEVINTERFACE_USBSTOR
#endif //CONFIG_NOTIFICATION
Q_CORE_EXPORT HINSTANCE qWinAppInst();
static inline QStringList drivesFromMask(quint32 driveBits) //driveBits ->unitmask
{
QStringList ret;
#if 1 //a disk with multiple partitions removed
char driveName[] = "A:/";
driveBits &= 0x3ffffff;
while (driveBits) {
if (driveBits & 0x1)
ret.append(QString::fromLatin1(driveName));
++driveName[0];
driveBits >>= 1;
}
return ret;
#else
char i = 0;
for (; i<26; ++i) {
if (driveBits & 0x1)
break;
driveBits >>= 1;
}
QChar c(i + 'A');
return ret << QString(c) + ":";
#endif
}
void static UpdateDevice(PDEV_BROADCAST_DEVICEINTERFACE pDevInf, WPARAM wParam)
{
/*
// dbcc_name:
// \\?\USB#Vid_04e8&Pid_503b#0002F9A9828E0F06#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
// convert to
// USB\Vid_04e8&Pid_503b\0002F9A9828E0F06
ASSERT(lstrlen(pDevInf->dbcc_name) > 4);
wchar_t *szDevId = pDevInf->dbcc_name+4;
int idx = szDevId.ReverseFind(_T('#'));
ASSERT( -1 != idx );
szDevId.Truncate(idx);
szDevId.Replace(_T('#'), _T('\\'));
szDevId.MakeUpper();
CString szClass;
idx = szDevId.Find(_T('\\'));
ASSERT(-1 != idx );
szClass = szDevId.Left(idx);
// if we are adding device, we only need present devices
// otherwise, we need all devices
DWORD dwFlag = DBT_DEVICEARRIVAL != wParam
? DIGCF_ALLCLASSES : (DIGCF_ALLCLASSES | DIGCF_PRESENT);
HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, szClass, NULL, dwFlag);
if( INVALID_HANDLE_VALUE == hDevInfo )
{
zDebug("SetupDiGetClassDevs(): " + _com_error(GetLastError()).ErrorMessage());
return;
}
SP_DEVINFO_DATA* pspDevInfoData = (SP_DEVINFO_DATA*)HeapAlloc(GetProcessHeap(), 0, sizeof(SP_DEVINFO_DATA));
pspDevInfoData->cbSize = sizeof(SP_DEVINFO_DATA);
for(int i=0; SetupDiEnumDeviceInfo(hDevInfo,i,pspDevInfoData); ++i) {
DWORD DataT ;
DWORD nSize=0 ;
TCHAR buf[MAX_PATH];
if (!SetupDiGetDeviceInstanceId(hDevInfo, pspDevInfoData, buf, sizeof(buf), &nSize)) {
zDebug("SetupDiGetDeviceInstanceId(): " + _com_error(GetLastError()).ErrorMessage());
break;
}
if (szDevId == buf) {
// device found
if (SetupDiGetDeviceRegistryProperty(hDevInfo, pspDevInfoData,
SPDRP_FRIENDLYNAME, &DataT, (PBYTE)buf, sizeof(buf), &nSize)) {
// do nothing
} else if (SetupDiGetDeviceRegistryProperty(hDevInfo, pspDevInfoData,
SPDRP_DEVICEDESC, &DataT, (PBYTE)buf, sizeof(buf), &nSize)) {
// do nothing
} else {
lstrcpy(buf, _T("Unknown"));
}
// update UI
break;
}
}
if (pspDevInfoData)
HeapFree(GetProcessHeap(), 0, pspDevInfoData);
SetupDiDestroyDeviceInfoList(hDevInfo);
*/
}
/*
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363246%28v=vs.85%29.aspx
typedef struct _DEV_BROADCAST_HDR {
DWORD dbch_size;
DWORD dbch_devicetype;
DWORD dbch_reserved;
} DEV_BROADCAST_HDR, *PDEV_BROADCAST_HDR;
dbch_size:
The size of this structure, in bytes.
If this is a user-defined event, this member must be the size of this header, plus the size of the variable-length data in the _DEV_BROADCAST_USERDEFINED structure.
dbch_devicetype:
The device type, which determines the event-specific information that follows the first three members. This member can be one of the following values.
Value Meaning
DBT_DEVTYP_DEVICEINTERFACE 0x00000005
Class of devices. This structure is a DEV_BROADCAST_DEVICEINTERFACE structure.
DBT_DEVTYP_HANDLE 0x00000006
File system handle. This structure is a DEV_BROADCAST_HANDLE structure.
DBT_DEVTYP_OEM 0x00000000
OEM- or IHV-defined device type. This structure is a DEV_BROADCAST_OEM structure.
DBT_DEVTYP_PORT 0x00000003
Port device (serial or parallel). This structure is a DEV_BROADCAST_PORT structure.
DBT_DEVTYP_VOLUME 0x00000002
Logical volume. This structure is a DEV_BROADCAST_VOLUME structure.
dbch_reserved:
Reserved; do not use.
WM_DEVICECHANGE:
1
2 广
*/
LRESULT CALLBACK dw_internal_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_DEVICECHANGE) {
DEV_BROADCAST_HDR *lpdb = (DEV_BROADCAST_HDR *)lParam;
zDebug("Device type address: %#x", lpdb);
if (lpdb) {
if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) {
zDebug("DBT_DEVTYP_VOLUME");
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) {
zDebug("DBT_DEVTYP_PORT");
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
zDebug("DBT_DEVTYP_DEVICEINTERFACE");
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_OEM) {
zDebug("DBT_DEVTYP_OEM");
} else {
zDebug("Unknow device type");
}
}
switch (wParam) {
case DBT_DEVNODES_CHANGED:
zDebug("DBT_DEVNODES_CHANGED message received, no extended info.");
break;
case DBT_QUERYCHANGECONFIG:
zDebug("DBT_QUERYCHANGECONFIG message received, no extended info.");
break;
case DBT_CONFIGCHANGED:
zDebug("DBT_CONFIGCHANGED message received, no extended info.");
break;
case DBT_CONFIGCHANGECANCELED:
zDebug("DBT_CONFIGCHANGECANCELED message received, no extended info.");
break;
case DBT_DEVICEARRIVAL:
case DBT_DEVICEQUERYREMOVE:
case DBT_DEVICEQUERYREMOVEFAILED:
case DBT_DEVICEREMOVEPENDING:
case DBT_DEVICEREMOVECOMPLETE:
if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME) {
DEV_BROADCAST_VOLUME *db_volume = (DEV_BROADCAST_VOLUME *)lpdb;
QStringList drives = drivesFromMask(db_volume->dbcv_unitmask);
#ifdef GWLP_USERDATA
QDeviceWatcherPrivate *watcher = (QDeviceWatcherPrivate *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
#else
QDeviceWatcherPrivate *watcher = (QDeviceWatcherPrivate *)GetWindowLong(hwnd, GWL_USERDATA);
#endif
QList<QDeviceChangeEvent *> events;
QString action_str("add");
QDeviceChangeEvent::Action action = QDeviceChangeEvent::Add;
if (wParam == DBT_DEVICEARRIVAL) {
} else if (wParam == DBT_DEVICEQUERYREMOVE) {
} else if (wParam == DBT_DEVICEQUERYREMOVEFAILED) {
} else if (wParam == DBT_DEVICEREMOVEPENDING) {
} else if (wParam == DBT_DEVICEREMOVECOMPLETE) {
action_str = "remove";
action = QDeviceChangeEvent::Remove;
}
foreach (const QString &drive, drives) {
if (db_volume->dbcv_flags & DBTF_MEDIA)
zDebug("Drive %c: Media has been removed.", drive.at(0).toLatin1());
else if (db_volume->dbcv_flags & DBTF_NET)
zDebug("Drive %c: Network share has been removed.", drive.at(0).toLatin1());
else
zDebug("Drive %c: Device has been removed.", drive.at(0).toLatin1());
watcher->emitDeviceAction(drive, action_str);
if (!watcher->event_receivers.isEmpty())
events.append(new QDeviceChangeEvent(action, drive));
}
if (!events.isEmpty() && !watcher->event_receivers.isEmpty()) {
foreach(QObject* obj, watcher->event_receivers) {
foreach(QDeviceChangeEvent* event, events) {
QCoreApplication::postEvent(obj, event, Qt::HighEventPriority);
}
}
}
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_PORT) {
zDebug("DBT_DEVTYP_PORT");
PDEV_BROADCAST_PORT pDevPort = (PDEV_BROADCAST_PORT)lpdb;
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
//RegisterDeviceNotification()
zDebug("DBT_DEVTYP_DEVICEINTERFACE");
PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)lpdb;
UpdateDevice(pDevInf, wParam);
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_OEM) {
zDebug("DBT_DEVTYP_OEM");
DEV_BROADCAST_OEM *pDevOem = (DEV_BROADCAST_OEM*)lpdb;
} else if (lpdb->dbch_devicetype == DBT_DEVTYP_HANDLE) {
zDebug("DBT_DEVTYP_HANDLE");
PDEV_BROADCAST_HANDLE pDevHnd = (PDEV_BROADCAST_HANDLE)lpdb;
}
break;
case DBT_DEVICETYPESPECIFIC:
zDebug("DBT_DEVICETYPESPECIFIC message received, may contain an extended info.");
break;
case DBT_CUSTOMEVENT:
zDebug("DBT_CUSTOMEVENT message received, contains an extended info.");
break;
case DBT_USERDEFINED:
zDebug("WM_DEVICECHANGE user defined message received, can not handle.");
break;
default:
qWarning("WM_DEVICECHANGE message received, unhandled value %d.", wParam);
break;
}
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
static inline QString className()
{
return QLatin1String("QDeviceWatcherPrivateWin32_Internal_Widget") + QString::number(quintptr(dw_internal_proc));
}
static inline HWND dw_create_internal_window(const void* userData)
{
QString className = ::className();
HINSTANCE hi = qWinAppInst();
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = dw_internal_proc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hi;
wc.hIcon = 0;
wc.hCursor = 0;
wc.hbrBackground = 0;
wc.lpszMenuName = NULL;
wc.lpszClassName = reinterpret_cast<const wchar_t *>(className.utf16());
RegisterClass(&wc);
HWND hwnd = CreateWindow(wc.lpszClassName, // classname
wc.lpszClassName, // window name
0, // style
0, 0, 0, 0, // geometry
0, // parent
0, // menu handle
hi, // application
0); // windows creation data.
if (!hwnd) {
qWarning("QDeviceWatcherPrivate: Failed to create internal window: %d", (int)GetLastError());
#if CONFIG_NOTIFICATION
} else {
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter ;
ZeroMemory(&NotificationFilter, sizeof(NotificationFilter)) ;
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = InterfaceClassGuid;
//3rd param with DEVICE_NOTIFY_ALL_INTERFACE_CLASSES and dbcc_classguid will be ignored
//http://msdn.microsoft.com/en-us/library/windows/desktop/aa363431(v=vs.85).aspx
hDevNotify = RegisterDeviceNotification(hwnd, &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
if (!hDevNotify) {
zDebug("");
}
}
#else
} else if (userData) {
#ifdef GWLP_USERDATA
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)userData);
#else
SetWindowLong(hwnd, GWL_USERDATA, (LONG)userData);
#endif
}
#endif //CONFIG_NOTIFICATION
return hwnd;
}
static inline void dw_destroy_internal_window(HWND hwnd)
{
if (hwnd)
DestroyWindow(hwnd);
#if CONFIG_NOTIFICATION
UnregisterDeviceNotification(hDevNotify);
#endif
UnregisterClass(reinterpret_cast<const wchar_t *>(className().utf16()), qWinAppInst());
}
QDeviceWatcherPrivate::~QDeviceWatcherPrivate()
{
stop();
}
bool QDeviceWatcherPrivate::start()
{
init();
hwnd = dw_create_internal_window(this);
if (!hwnd) {
dw_destroy_internal_window(hwnd);
}
return hwnd;
}
bool QDeviceWatcherPrivate::stop()
{
dw_destroy_internal_window(hwnd);
return true;
}
bool QDeviceWatcherPrivate::init()
{
return true;
}
void QDeviceWatcherPrivate::parseDeviceInfo()
{
}
#endif //Q_OS_WIN32

@ -0,0 +1,137 @@
/******************************************************************************
qdevicewatcher_wince.cpp: for wince. TO BE TESTED
Copyright (C) 2012 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
/*!
* http://msdn.microsoft.com/en-us/library/aa447466.aspx
*/
#include "qdevicewatcher_p.h"
#ifdef Q_OS_WINCE
#include <msgqueue.h>
#include <pnp.h>
#include <Storemgr.h> //BLOCK_DRIVER_GUID
#include <QtCore/QCoreApplication>
#include "qdevicechangeevent.h"
#ifdef UNICODE
# if QT_VERSION >= 0x040000
# define TCHAR2QString(x) QString::fromUtf16(x)
# else
# define TCHAR2QString(x) QString::fromUcs2(x)
# endif
#else
# define TCHAR2QString(x) QString::fromLocal8Bit((x))
#endif //UNICODE
typedef union {
DEVDETAIL d;
char pad[sizeof(DEVDETAIL)+MAX_DEVCLASS_NAMELEN]; //BYTE pad[sizeof(DEVDETAIL) + (MAX_PATH * sizeof(TCHAR))];
} Q_DEVDETAIL;
QDeviceWatcherPrivate::~QDeviceWatcherPrivate()
{
}
bool QDeviceWatcherPrivate::start()
{
if (!init())
return false;
this->QThread::start();
return true;
}
bool QDeviceWatcherPrivate::stop()
{
quit();
if (!StopDeviceNotifications(mNotificationHandle)) {
qWarning("StopDeviceNotifications() error: %d", GetLastError());
return false;
}
if (!CloseMsgQueue(mQueueHandle)) {
qWarning("CloseMsgQueue() error: %d", GetLastError());
return false;
}
return true;
}
bool QDeviceWatcherPrivate::init()
{
MSGQUEUEOPTIONS msgopts;
msgopts.dwSize = sizeof(MSGQUEUEOPTIONS);
msgopts.dwFlags = 0; //MSGQUEUE_VARIABLESIZE | MSGQUEUE_MSGSIZE; /*msdn*/ //MSGQUEUE_NOPRECOMMIT | MSGQUEUE_ALLOW_BROKEN
msgopts.dwMaxMessages = 0;
msgopts.cbMaxMessage = sizeof(Q_DEVDETAIL);
msgopts.bReadAccess = TRUE;
msgopts.dwMaxMessages = 0; //?
//msgopts.cbMaxMsgQueue = 0; //?
//msgopts.dwDesiredAccess = GENERIC_READ;
//msgopts.dwShareMode = 0;
//msgopts.dwCreationDisposition = CREATE_NEW;
mQueueHandle = CreateMsgQueue(NULL, &msgopts);
if (mQueueHandle == NULL) {
qWarning("CreateMsgQueue() error: %d", GetLastError());
return false;
}
mNotificationHandle = RequestDeviceNotifications(&BLOCK_DRIVER_GUID, mQueueHandle, TRUE);
if (mNotificationHandle == NULL) {
qWarning("RequestDeviceNotifications() error: %d", GetLastError());
return false;
}
return true;
}
void QDeviceWatcherPrivate::run()
{
DWORD flags;
DWORD size;
Q_DEVDETAIL detail;
SetLastError(0); //?
while (true) {
if(WaitForSingleObject(mQueueHandle, 3000) == WAIT_OBJECT_0) {
while(ReadMsgQueue(mQueueHandle, &detail, sizeof(detail), &size, 1, &flags)) {
QString dev = TCHAR2QString(detail.d.szName);
QDeviceChangeEvent *event = 0;
if (detail.d.fAttached) {
emitDeviceAdded(dev);
event = new QDeviceChangeEvent(QDeviceChangeEvent::Add, dev);
} else {
emitDeviceRemoved(dev);
event = new QDeviceChangeEvent(QDeviceChangeEvent::Remove, dev);
}
if (event != 0 && !event_receivers.isEmpty()) {
foreach(QObject* obj, event_receivers) {
QCoreApplication::postEvent(obj, event, Qt::HighEventPriority);
}
}
}
}
}
}
void QDeviceWatcherPrivate::parseDeviceInfo()
{
}
#endif //Q_OS_WINCE

@ -0,0 +1,97 @@
/******************************************************************************
Name: description
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef HOTPLUGWATCHER_H
#define HOTPLUGWATCHER_H
#include <QtCore/QObject>
#include <QtCore/QThread>
#include "qdevicewatcher.h"
#include "qdevicechangeevent.h"
#include <QPainter>
#include <QFileDialog>
#include <QTextEdit>
#include <QCoreApplication>
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QStringList>
#ifndef __GNUC__
#define __PRETTY_FUNCTION__ __FUNCTION__
#endif
class HotplugWatcher : public QThread
{
Q_OBJECT
public:
HotplugWatcher(QObject *parent = 0):QThread(parent) {
qDebug("tid=%#x %s", (unsigned int)QThread::currentThreadId(), __PRETTY_FUNCTION__);
start();
moveToThread(this); //Let bool event(QEvent *e) be in another thread
watcher = new QDeviceWatcher;
watcher->moveToThread(this);
watcher->appendEventReceiver(this);
connect(watcher, SIGNAL(deviceAdded(QString)), this, SLOT(slotDeviceAdded(QString)), Qt::DirectConnection);
connect(watcher, SIGNAL(deviceChanged(QString)), this, SLOT(slotDeviceChanged(QString)), Qt::DirectConnection);
connect(watcher, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString)), Qt::DirectConnection);
watcher->start();
}
public slots:
void slotDeviceAdded(const QString& dev)
{
QFile file_write("/home/data/usb_file_path");//文件路径
qDebug("tid=%#x %s: add %s", (unsigned int) QThread::currentThreadId(), __PRETTY_FUNCTION__, qPrintable(dev));
if(file_write.open(QFile::WriteOnly))
{
QTextStream usb_file_path(&file_write);
usb_file_path<<qPrintable(dev);
}
file_write.close();
}
void slotDeviceRemoved(const QString& dev) { qDebug("tid=%#x %s: remove %s", (unsigned int)QThread::currentThreadId(), __PRETTY_FUNCTION__, qPrintable(dev));}
void slotDeviceChanged(const QString& dev) { qDebug("tid=%#x %s: change %s", (unsigned int)QThread::currentThreadId(), __PRETTY_FUNCTION__, qPrintable(dev));}
protected:
virtual bool event(QEvent *e) {
if (e->type() == QDeviceChangeEvent::registeredType()) {
QDeviceChangeEvent *event = (QDeviceChangeEvent*)e;
QString action("Change");
if (event->action() == QDeviceChangeEvent::Add)
action = "Add";
else if (event->action() == QDeviceChangeEvent::Remove)
action = "Remove";
qDebug("tid=%#x event=%d %s: %s %s", (unsigned int)QThread::currentThreadId(), e->type(), __PRETTY_FUNCTION__, qPrintable(action), qPrintable(event->device()));
event->accept();
return true;
}
return QObject::event(e);
}
private:
QDeviceWatcher *watcher;
};
#endif // HOTPLUGWATCHER_H

@ -0,0 +1,26 @@
TEMPLATE = app
QT -= gui
CONFIG += console
CONFIG -= app_bundle
QT += core gui
TARGET = hotplugwatcher
include(../src/libQDeviceWatcher.pri)
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS
win32:!wince*:LIBS += -lUser32
SOURCES += main.cpp
HEADERS += hotplugwatcher.h
contains(MEEGO_EDITION,harmattan) {
target.path = /opt/hotplugwatcher/bin
INSTALLS += target
}
maemo5 {
target.path = /opt/hotplugwatcher/bin
INSTALLS += target
}

@ -0,0 +1,729 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="hotplugwatcher"
ProjectGUID="{BA130713-13E3-3612-ACFE-629A9C00089E}"
RootNamespace="hotplugwatcher"
Keyword="Qt4VSv1.0"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
<Platform
Name="STANDARDSDK_500 (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\lib_win32\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="1"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="1"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="1"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\bin\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,NDEBUG"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="../lib_win32\QDeviceWatcher2.lib User32.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="1"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="..\bin"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;_WINDOWS;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="true"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\qtmain.lib ../lib_wince\QDeviceWatcher2.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(QTDIR)\lib&quot;;../lib_wince"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
TargetMachine="16"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\QDeviceWatcher"
RegisterOutput="0"
AdditionalFiles="msvcr90.dll|$(BINDIR)\$(INSTRUCTIONSET)|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0;QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;_WINDOWS;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="true"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_CONSOLE,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\qtmain.lib ../lib_wince\QDeviceWatcher2.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\hotplugwatcher.exe"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(QTDIR)\lib&quot;;../lib_wince"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher|0"
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="main.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="hotplugwatcher.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_CONSOLE -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_CONSOLE -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_CONSOLE -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -D_CONSOLE -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DNDEBUG &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -DNDEBUG &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DUNDER_CE -DWINCE -D_WINDOWS -D_USRDLL &quot;-D$(ARCHFAM)\.&quot; &quot;-D$(_ARCHFAM_)\.&quot; -D_UNICODE -DUNICODE &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot; -DNDEBUG &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DUNDER_CE -DWINCE -D_WINDOWS -D_USRDLL &quot;-D$(ARCHFAM)\.&quot; &quot;-D$(_ARCHFAM_)\.&quot; -D_UNICODE -DUNICODE &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\GeneratedFiles&quot; &quot;-I.\..\.moc&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Generated Files"
Filter="cpp;c;cxx;moc;h;def;odl;idl;res;"
UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
>
<File
RelativePath="..\.moc\moc_hotplugwatcher.cpp"
>
</File>
</Filter>
</Files>
<Globals>
<Global
Name="MocDir"
Value=".\..\.moc"
/>
<Global
Name="QtVersion STANDARDSDK_500 (ARMV4I)"
Value="wince50std-armv4i-msvc2008"
/>
<Global
Name="QtVersion Win32"
Value="4.8.0 x86"
/>
<Global
Name="QtVersion Windows Mobile 6 Professional SDK (ARMV4I)"
Value="wincewm60pro-vc9"
/>
<Global
Name="RccDir"
Value=".\..\.rcc"
/>
<Global
Name="UicDir"
Value=".\..\.uic"
/>
</Globals>
</VisualStudioProject>

@ -0,0 +1,124 @@
/******************************************************************************
hotplugwatcher_gui.cpp: gui application to watch hotplug event
Copyright (C) 2012 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include "hotplugwatcher_gui.h"
#include <QtCore/QThread>
#include <QVBoxLayout>
#include <QLabel>
#include <QPushButton>
#include <QTextBrowser>
#include <QToolButton>
#include <QSystemTrayIcon>
#include <QMessageBox>
#include "qdevicewatcher.h"
HotplugWatcher_GUI::HotplugWatcher_GUI(QWidget *parent) :
QWidget(parent)
{
QVBoxLayout *vbl = new QVBoxLayout(this);
setLayout(vbl);
state = new QLabel(this);
button = new QPushButton(tr("Start"), this);
detail_button = new QToolButton(this);
detail_button->setText(tr("Detail"));
detail_button->setCheckable(true);
detail_button->setChecked(true);
msg_view = new QTextBrowser(this);
msg_view->setLineWrapMode(QTextEdit::NoWrap);
QHBoxLayout *hbl = new QHBoxLayout(this);
hbl->addWidget(button);
hbl->addWidget(detail_button);
vbl->addWidget(state);
vbl->addLayout(hbl);
vbl->addWidget(msg_view);
tray = new QSystemTrayIcon(this);
tray->show();
watcher = new QDeviceWatcher;
watcher->appendEventReceiver(this);
connect(watcher, SIGNAL(deviceAdded(QString)), this, SLOT(slotDeviceAdded(QString)), Qt::DirectConnection);
connect(watcher, SIGNAL(deviceChanged(QString)), this, SLOT(slotDeviceChanged(QString)), Qt::DirectConnection);
connect(watcher, SIGNAL(deviceRemoved(QString)), this, SLOT(slotDeviceRemoved(QString)), Qt::DirectConnection);
connect(button, SIGNAL(clicked()), SLOT(toggleWatch()));
connect(detail_button, SIGNAL(toggled(bool)), SLOT(showDetail(bool)));
}
HotplugWatcher_GUI::~HotplugWatcher_GUI()
{
}
void HotplugWatcher_GUI::appendMessage(const QString &msg)
{
msg_view->append(msg);
}
void HotplugWatcher_GUI::toggleWatch()
{
if (watcher->isRunning()) {
if (!watcher->stop()) {
QMessageBox::warning(0, tr("WARNGING"), tr("Failed to stop"));
}
button->setText(tr("Start"));
} else {
if (!watcher->start()) {
QMessageBox::warning(0, tr("WARNGING"), tr("Failed to start"));
}
button->setText(tr("Stop"));
}
}
void HotplugWatcher_GUI::showDetail(bool show)
{
msg_view->setVisible(show);
int w = width();
adjustSize(); //width changes
resize(w, height());
}
void HotplugWatcher_GUI::slotDeviceAdded(const QString &dev)
{
qDebug("tid=%#x: add %s", (unsigned int) QThread::currentThreadId(), qPrintable(dev));
state->setText("<font color=#0000ff>Add: </font>" + dev);
tray->showMessage(tr("New device"), dev);
}
void HotplugWatcher_GUI::slotDeviceChanged(const QString &dev)
{
qDebug("tid=%#x: change %s", (unsigned int) QThread::currentThreadId(), qPrintable(dev));
state->setText("<font color=#0000ff>Change: </font>" + dev);
tray->showMessage(tr("Change device"), dev);
}
void HotplugWatcher_GUI::slotDeviceRemoved(const QString &dev)
{
qDebug("tid=%#x: remove %s", (unsigned int) QThread::currentThreadId(), qPrintable(dev));
state->setText("<font color=#0000ff>Remove: </font>" + dev);
tray->showMessage(tr("Remove device"), dev);
}

@ -0,0 +1,58 @@
/******************************************************************************
hotplugwatcher_gui.h: gui application to watch hotplug event
Copyright (C) 2012 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#ifndef HOTPLUGWATCHER_GUI_H
#define HOTPLUGWATCHER_GUI_H
#include <QWidget>
class QTextBrowser;
class QSystemTrayIcon;
class QLabel;
class QPushButton;
class QToolButton;
class QDeviceWatcher;
class HotplugWatcher_GUI : public QWidget
{
Q_OBJECT
public:
explicit HotplugWatcher_GUI(QWidget *parent = 0);
~HotplugWatcher_GUI();
void appendMessage(const QString& msg);
public slots:
void toggleWatch();
void showDetail(bool show);
void slotDeviceAdded(const QString& dev);
void slotDeviceRemoved(const QString& dev);
void slotDeviceChanged(const QString& dev);
private:
QDeviceWatcher *watcher;
QLabel *state;
QTextBrowser *msg_view;
QPushButton *button;
QToolButton *detail_button;
QSystemTrayIcon *tray;
};
#endif // HOTPLUGWATCHER_GUI_H

@ -0,0 +1,25 @@
QT += core gui
TARGET = hotplugwatcher_gui
include(../src/libQDeviceWatcher.pri)
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
QT += widgets
win32:!wince*:LIBS += -lUser32
HEADERS += \
hotplugwatcher_gui.h
SOURCES += \
hotplugwatcher_gui.cpp \
main_gui.cpp
contains(MEEGO_EDITION,harmattan) {
target.path = /opt/hotplugwatcher_gui/bin
INSTALLS += target
}
maemo5 {
target.path = /opt/hotplugwatcher_gui/bin
INSTALLS += target
}

@ -0,0 +1,740 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9.00"
Name="hotplugwatcher_gui"
ProjectGUID="{5A2B2B4A-E7DA-39D2-A890-C1800B40FCEE}"
Keyword="Qt4VSv1.0"
TargetFrameworkVersion="0"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
<Platform
Name="STANDARDSDK_500 (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="..\lib_win32\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="$(QTDIR)\lib\qtmaind.lib ../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtGuid4.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher_gui.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="2"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="$(QTDIR)\lib\qtmaind.lib ../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtGuid4.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher_gui.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="2"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtGuid4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0;QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="4"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="3"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,_DEBUG"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="$(QTDIR)\lib\qtmaind.lib ../lib_win32\QDeviceWatcherd2.lib User32.lib $(QTDIR)\lib\QtGuid4.lib $(QTDIR)\lib\QtCored4.lib"
OutputFile="$(OutDir)\hotplugwatcher_gui.exe"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="true"
ProgramDatabaseFile=""
SubSystem="2"
LinkTimeCodeGeneration="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtGuid4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0;QtCored4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="..\bin\"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="-Zm200 -w34100 -w34189"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;.\..\.moc\4.8.0&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT,NDEBUG"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="true"
AssemblerListingLocation="..\.obj\_win32\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="true"
AdditionalOptions="&quot;/MANIFESTDEPENDENCY:type=&apos;win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos; processorArchitecture=&apos;*&apos;&quot;"
AdditionalDependencies="$(QTDIR)\lib\qtmain.lib ../lib_win32\QDeviceWatcher2.lib User32.lib $(QTDIR)\lib\QtGui4.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\hotplugwatcher_gui.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="$(QTDIR)\lib,$(QTDIR)\lib,../lib_win32"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="2"
LinkTimeCodeGeneration="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="..\bin"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="NDEBUG;QT_NO_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;QT_CORE_LIB;QT_GUI_LIB;ARMV4I;_ARMV4I_;armv4i;_ARM_;ARM;_M_ARM;__arm__;Q_OS_WINCE_WM;_WIN32;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;$(NOINHERIT)"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="false"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\qtmain.lib ../lib_wince\QDeviceWatcher2.lib $(QTDIR)\lib\QtGui4.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(QTDIR)\lib&quot;;../lib_wince"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
OptimizeReferences="0"
EnableCOMDATFolding="0"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="2"
DataExecutionPrevention="2"
TargetMachine="16"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\QDeviceWatcher"
RegisterOutput="0"
AdditionalFiles="msvcr90.dll|$(BINDIR)\$(INSTRUCTIONSET)|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0;QtGui4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0;QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\QDeviceWatcher|0"
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|STANDARDSDK_500 (ARMV4I)"
OutputDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="STANDARDSDK_500 (ARMV4I)\$(ConfigurationName)"
ConfigurationType="1"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
WarningLevel="0"
DefaultCharType="0"
TargetEnvironment="1"
EnableErrorChecks="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
AdditionalIncludeDirectories="&quot;$(QTDIR)\include\QtCore&quot;;&quot;$(QTDIR)\include\QtGui&quot;;&quot;$(QTDIR)\include&quot;;&quot;.\..\src&quot;;&quot;$(QTDIR)\mkspecs\default&quot;;&quot;.\..\.moc&quot;;&quot;.\..\.uic&quot;;&quot;.\..\.rcc&quot;"
PreprocessorDefinitions="NDEBUG;QT_NO_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;WINCE;QT_CORE_LIB;QT_GUI_LIB;ARMV4I;_ARMV4I_;armv4i;_ARM_;ARM;_M_ARM;__arm__;Q_OS_WINCE_WM;_WIN32;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;$(NOINHERIT)"
GeneratePreprocessedFile="0"
ExceptionHandling="1"
RuntimeLibrary="2"
BufferSecurityCheck="false"
TreatWChar_tAsBuiltInType="false"
RuntimeTypeInfo="false"
AssemblerListingLocation="..\.obj\_wince\"
ObjectFile="$(IntDir)\"
ProgramDataBaseFileName="$(IntDir)\vc90.pdb"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_WINDOWS,UNICODE,WIN32,QT_LARGEFILE_SUPPORT,_CRT_SECURE_NO_WARNINGS,QT_DLL,QT_NO_DEBUG,QT_GUI_LIB,QT_CORE_LIB,QT_HAVE_MMX,QT_HAVE_3DNOW,QT_HAVE_SSE,QT_HAVE_MMXEXT,QT_HAVE_SSE2,QT_THREAD_SUPPORT"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
IgnoreImportLibrary="false"
AdditionalOptions="/SUBSYSTEM:WINDOWSCE,5.02"
AdditionalDependencies="$(QTDIR)\lib\qtmain.lib ../lib_wince\QDeviceWatcher2.lib $(QTDIR)\lib\QtGui4.lib $(QTDIR)\lib\QtCore4.lib"
OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="0"
SuppressStartupBanner="true"
AdditionalLibraryDirectories="&quot;$(QTDIR)\lib&quot;;../lib_wince"
GenerateDebugInformation="false"
ProgramDatabaseFile=""
SubSystem="0"
OptimizeReferences="0"
EnableCOMDATFolding="0"
LinkTimeCodeGeneration="0"
RandomizedBaseAddress="2"
DataExecutionPrevention="2"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
AuthenticodeSignature="false"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles="QtGui4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0;QtCore4.dll|$(QTDIR)\lib|%CSIDL_PROGRAM_FILES%\hotplugwatcher_gui|0"
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="hotplugwatcher_gui.cpp"
>
</File>
<File
RelativePath="main_gui.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="hotplugwatcher_gui.h"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -D_WINDOWS -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -D_CRT_SECURE_NO_WARNINGS -DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DNDEBUG &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I.\..\.moc\4.8.0&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DNDEBUG -DQT_NO_DEBUG &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DUNDER_CE -DWINCE -DQT_CORE_LIB -DQT_GUI_LIB -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM -D_WIN32 &quot;-D$(ARCHFAM)\.&quot; &quot;-D$(_ARCHFAM_)\.&quot; -D_UNICODE -DUNICODE &quot;-D$(NOINHERIT)\.&quot; &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|STANDARDSDK_500 (ARMV4I)"
>
<Tool
Name="VCCustomBuildTool"
Description="Moc&apos;ing hotplugwatcher_gui.h..."
CommandLine="&quot;$(QTDIR)\bin\moc.exe&quot; -DNDEBUG -DQT_NO_DEBUG &quot;-D_WIN32_WCE=$(CEVER)\.&quot; -DUNDER_CE -DWINCE -DQT_CORE_LIB -DQT_GUI_LIB -DARMV4I -D_ARMV4I_ -Darmv4i -D_ARM_ -DARM -D_M_ARM -D__arm__ -DQ_OS_WINCE_WM -D_WIN32 &quot;-D$(ARCHFAM)\.&quot; &quot;-D$(_ARCHFAM_)\.&quot; -D_UNICODE -DUNICODE &quot;-D$(NOINHERIT)\.&quot; &quot;-I.&quot; &quot;-I$(QTDIR)\include\QtCore&quot; &quot;-I$(QTDIR)\include\QtGui&quot; &quot;-I$(QTDIR)\include&quot; &quot;-I.\..\src&quot; &quot;-I$(QTDIR)\mkspecs\default&quot; &quot;-I.\..\.moc&quot; &quot;-I.\..\.uic&quot; &quot;-I.\..\.rcc&quot; &quot;$(InputPath)&quot; -o &quot;.\..\.moc\moc_$(InputName).cpp&quot;&#x0D;&#x0A;"
AdditionalDependencies="&quot;$(QTDIR)\bin\moc.exe&quot;;$(InputPath)"
Outputs="&quot;.\..\.moc\moc_$(InputName).cpp&quot;"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Generated Files"
Filter="cpp;c;cxx;moc;h;def;odl;idl;res;"
UniqueIdentifier="{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}"
>
<File
RelativePath="..\.moc\moc_hotplugwatcher_gui.cpp"
>
</File>
</Filter>
</Files>
<Globals>
<Global
Name="MocDir"
Value=".\..\.moc"
/>
<Global
Name="QtVersion STANDARDSDK_500 (ARMV4I)"
Value="wince50std-armv4i-msvc2008"
/>
<Global
Name="QtVersion Win32"
Value="4.8.0 x86"
/>
<Global
Name="QtVersion Windows Mobile 6 Professional SDK (ARMV4I)"
Value="wincewm60pro-vc9"
/>
<Global
Name="RccDir"
Value=".\..\.rcc"
/>
<Global
Name="UicDir"
Value=".\..\.uic"
/>
</Globals>
</VisualStudioProject>

@ -0,0 +1,30 @@
/******************************************************************************
Watcher: example
Copyright (C) 2011 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include <QtCore/QCoreApplication>
#include "hotplugwatcher.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
HotplugWatcher hotplug;
//qDebug("Hotplug watcher(libQDeviceWatcher test app)\nwbsecg1@gmail.com\n");
return a.exec();
}

@ -0,0 +1,44 @@
/******************************************************************************
main_gui.cpp: gui application to watch hotplug event
Copyright (C) 2012 Wang Bin <wbsecg1@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
******************************************************************************/
#include <QtWidgets/QApplication>
#include "hotplugwatcher_gui.h"
static HotplugWatcher_GUI *gui = 0;
void MsgOuput(QtMsgType type, const char* msg)
{
Q_UNUSED(type);
if (gui)
gui->appendMessage(msg);
}
int main(int argc, char *argv[])
{
//qInstallMsgHandler(MsgOuput);
QApplication a(argc, argv);
HotplugWatcher_GUI hotplug;
gui = &hotplug;
hotplug.show();
qDebug("Hotplug watcher(libQDeviceWatcher test app)\nwbsecg1@gmail.com\n");
return a.exec();
}

@ -0,0 +1,12 @@
CONFIG += c++11
#DEFINES += QS_LOG_LINE_NUMBERS # automatically writes the file and line for each log message
#DEFINES += QS_LOG_DISABLE # logging code is replaced with a no-op
HEADERS += \
$$PWD/include/QsLog.h \
$$PWD/include/QsLogDest.h \
$$PWD/include/QsLogDisableForThisFile.h \
$$PWD/include/QsLogLevel.h
LIBS += -L$$PWD/bin -lQsLog2

@ -0,0 +1,146 @@
// Copyright (c) 2013, Razvan Petru
// All rights reserved.
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this
// list of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
// * The name of the contributors may not be used to endorse or promote products
// derived from this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef QSLOG_H
#define QSLOG_H
#include "QsLogLevel.h"
#include "QsLogDest.h"
#include <QDebug>
#include <QString>
#define QS_LOG_VERSION "2.0b3"
namespace QsLogging
{
class Destination;
class LoggerImpl; // d pointer
class QSLOG_SHARED_OBJECT Logger
{
public:
static Logger& instance();
static void destroyInstance();
static Level levelFromLogMessage(const QString& logMessage, bool* conversionSucceeded = 0);
~Logger();
//! Adds a log message destination. Don't add null destinations.
void addDestination(DestinationPtr destination);
//! Logging at a level < 'newLevel' will be ignored
void setLoggingLevel(Level newLevel);
//! The default level is INFO
Level loggingLevel() const;
//! Set to false to disable timestamp inclusion in log messages
void setIncludeTimestamp(bool e);
//! Default value is true.
bool includeTimestamp() const;
//! Set to false to disable log level inclusion in log messages
void setIncludeLogLevel(bool l);
//! Default value is true.
bool includeLogLevel() const;
//! The helper forwards the streaming to QDebug and builds the final
//! log message.
class QSLOG_SHARED_OBJECT Helper
{
public:
explicit Helper(Level logLevel) :
level(logLevel),
qtDebug(&buffer)
{}
~Helper();
QDebug& stream(){ return qtDebug; }
private:
void writeToLog();
Level level;
QString buffer;
QDebug qtDebug;
};
private:
Logger();
Logger(const Logger&); // not available
Logger& operator=(const Logger&); // not available
void enqueueWrite(const QString& message, Level level);
void write(const QString& message, Level level);
LoggerImpl* d;
friend class LogWriterRunnable;
};
} // end namespace
//! Logging macros: define QS_LOG_LINE_NUMBERS to get the file and line number
//! in the log output.
#ifndef QS_LOG_LINE_NUMBERS
#define QLOG_TRACE() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::TraceLevel) {} \
else QsLogging::Logger::Helper(QsLogging::TraceLevel).stream()
#define QLOG_DEBUG() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::DebugLevel) {} \
else QsLogging::Logger::Helper(QsLogging::DebugLevel).stream()
#define QLOG_INFO() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::InfoLevel) {} \
else QsLogging::Logger::Helper(QsLogging::InfoLevel).stream()
#define QLOG_WARN() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::WarnLevel) {} \
else QsLogging::Logger::Helper(QsLogging::WarnLevel).stream()
#define QLOG_ERROR() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::ErrorLevel) {} \
else QsLogging::Logger::Helper(QsLogging::ErrorLevel).stream()
#define QLOG_FATAL() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::FatalLevel) {} \
else QsLogging::Logger::Helper(QsLogging::FatalLevel).stream()
#else
#define QLOG_TRACE() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::TraceLevel) {} \
else QsLogging::Logger::Helper(QsLogging::TraceLevel).stream() << __FILE__ << '@' << __LINE__
#define QLOG_DEBUG() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::DebugLevel) {} \
else QsLogging::Logger::Helper(QsLogging::DebugLevel).stream() << __FILE__ << '@' << __LINE__
#define QLOG_INFO() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::InfoLevel) {} \
else QsLogging::Logger::Helper(QsLogging::InfoLevel).stream() << __FILE__ << '@' << __LINE__
#define QLOG_WARN() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::WarnLevel) {} \
else QsLogging::Logger::Helper(QsLogging::WarnLevel).stream() << __FILE__ << '@' << __LINE__
#define QLOG_ERROR() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::ErrorLevel) {} \
else QsLogging::Logger::Helper(QsLogging::ErrorLevel).stream() << __FILE__ << '@' << __LINE__
#define QLOG_FATAL() \
if (QsLogging::Logger::instance().loggingLevel() > QsLogging::FatalLevel) {} \
else QsLogging::Logger::Helper(QsLogging::FatalLevel).stream() << __FILE__ << '@' << __LINE__
#endif
#ifdef QS_LOG_DISABLE
#include "QsLogDisableForThisFile.h"
#endif
#endif // QSLOG_H

@ -0,0 +1,99 @@
// Copyright (c) 2013, Razvan Petru
// All rights reserved.
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this
// list of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
// * The name of the contributors may not be used to endorse or promote products
// derived from this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef QSLOGDEST_H
#define QSLOGDEST_H
#include "QsLogLevel.h"
#include <QSharedPointer>
#include <QtGlobal>
class QString;
class QObject;
#ifdef QSLOG_IS_SHARED_LIBRARY
#define QSLOG_SHARED_OBJECT Q_DECL_EXPORT
#elif QSLOG_IS_SHARED_LIBRARY_IMPORT
#define QSLOG_SHARED_OBJECT Q_DECL_IMPORT
#else
#define QSLOG_SHARED_OBJECT
#endif
namespace QsLogging
{
class QSLOG_SHARED_OBJECT Destination
{
public:
typedef void (*LogFunction)(const QString &message, Level level);
public:
virtual ~Destination();
virtual void write(const QString& message, Level level) = 0;
virtual bool isValid() = 0; // returns whether the destination was created correctly
};
typedef QSharedPointer<Destination> DestinationPtr;
// a series of "named" paramaters, to make the file destination creation more readable
enum LogRotationOption
{
DisableLogRotation = 0,
EnableLogRotation = 1
};
struct QSLOG_SHARED_OBJECT MaxSizeBytes
{
MaxSizeBytes() : size(0) {}
explicit MaxSizeBytes(qint64 size_) : size(size_) {}
qint64 size;
};
struct QSLOG_SHARED_OBJECT MaxOldLogCount
{
MaxOldLogCount() : count(0) {}
explicit MaxOldLogCount(int count_) : count(count_) {}
int count;
};
//! Creates logging destinations/sinks. The caller shares ownership of the destinations with the logger.
//! After being added to a logger, the caller can discard the pointers.
class QSLOG_SHARED_OBJECT DestinationFactory
{
public:
static DestinationPtr MakeFileDestination(const QString& filePath,
LogRotationOption rotation = DisableLogRotation,
const MaxSizeBytes &sizeInBytesToRotateAfter = MaxSizeBytes(),
const MaxOldLogCount &oldLogsToKeep = MaxOldLogCount());
static DestinationPtr MakeDebugOutputDestination();
// takes a pointer to a function
static DestinationPtr MakeFunctorDestination(Destination::LogFunction f);
// takes a QObject + signal/slot
static DestinationPtr MakeFunctorDestination(QObject *receiver, const char *member);
};
} // end namespace
#endif // QSLOGDEST_H

@ -0,0 +1,22 @@
#ifndef QSLOGDISABLEFORTHISFILE_H
#define QSLOGDISABLEFORTHISFILE_H
#include <QtDebug>
// When included AFTER QsLog.h, this file will disable logging in that C++ file. When included
// before, it will lead to compiler warnings or errors about macro redefinitions.
#undef QLOG_TRACE
#undef QLOG_DEBUG
#undef QLOG_INFO
#undef QLOG_WARN
#undef QLOG_ERROR
#undef QLOG_FATAL
#define QLOG_TRACE() if (1) {} else qDebug()
#define QLOG_DEBUG() if (1) {} else qDebug()
#define QLOG_INFO() if (1) {} else qDebug()
#define QLOG_WARN() if (1) {} else qDebug()
#define QLOG_ERROR() if (1) {} else qDebug()
#define QLOG_FATAL() if (1) {} else qDebug()
#endif // QSLOGDISABLEFORTHISFILE_H

@ -0,0 +1,45 @@
// Copyright (c) 2013, Razvan Petru
// All rights reserved.
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this
// list of conditions and the following disclaimer in the documentation and/or other
// materials provided with the distribution.
// * The name of the contributors may not be used to endorse or promote products
// derived from this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef QSLOGLEVEL_H
#define QSLOGLEVEL_H
namespace QsLogging
{
enum Level
{
TraceLevel = 0,
DebugLevel,
InfoLevel,
WarnLevel,
ErrorLevel,
FatalLevel,
OffLevel
};
}
#endif // QSLOGLEVEL_H

@ -0,0 +1,144 @@
/********************************************************************************
** Form generated from reading UI file 'canshupeizhi.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_CANSHUPEIZHI_H
#define UI_CANSHUPEIZHI_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_canshupeizhi
{
public:
QPushButton *pushButton_zhujiemian;
QLabel *label_1;
QLabel *label_zhongduan;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_4;
QLabel *label_6;
QLabel *label_2;
QPushButton *pushButton_xitongshezhi;
QLabel *label_5;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *canshupeizhi)
{
if (canshupeizhi->objectName().isEmpty())
canshupeizhi->setObjectName(QString::fromUtf8("canshupeizhi"));
canshupeizhi->resize(800, 480);
pushButton_zhujiemian = new QPushButton(canshupeizhi);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
label_1 = new QLabel(canshupeizhi);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_zhongduan = new QLabel(canshupeizhi);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
pushButton_wangluoxinxi = new QPushButton(canshupeizhi);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_4 = new QLabel(canshupeizhi);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_6 = new QLabel(canshupeizhi);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 781, 301));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(canshupeizhi);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_xitongshezhi = new QPushButton(canshupeizhi);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_5 = new QLabel(canshupeizhi);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_canshushezhi = new QPushButton(canshupeizhi);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(canshupeizhi);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit = new QTextEdit(canshupeizhi);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
label = new QLabel(canshupeizhi);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->raise();
label_5->raise();
label_1->raise();
label_2->raise();
label_3->raise();
pushButton_zhujiemian->raise();
label_zhongduan->raise();
pushButton_wangluoxinxi->raise();
label_4->raise();
label_6->raise();
pushButton_xitongshezhi->raise();
pushButton_canshushezhi->raise();
textEdit->raise();
retranslateUi(canshupeizhi);
QMetaObject::connectSlotsByName(canshupeizhi);
} // setupUi
void retranslateUi(QWidget *canshupeizhi)
{
canshupeizhi->setWindowTitle(QApplication::translate("canshupeizhi", "Form", nullptr));
pushButton_zhujiemian->setText(QString());
label_1->setText(QString());
label_zhongduan->setText(QApplication::translate("canshupeizhi", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
pushButton_wangluoxinxi->setText(QString());
label_4->setText(QString());
label_6->setText(QApplication::translate("canshupeizhi", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_5->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class canshupeizhi: public Ui_canshupeizhi {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_CANSHUPEIZHI_H

@ -0,0 +1,232 @@
/********************************************************************************
** Form generated from reading UI file 'keyboard.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_KEYBOARD_H
#define UI_KEYBOARD_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_KeyBoard
{
public:
QLabel *label;
QLabel *showLb;
QWidget *layoutWidget;
QGridLayout *gridLayout;
QPushButton *closeBt;
QPushButton *delBt;
QPushButton *num_0_Bt;
QPushButton *num_5_Bt;
QPushButton *dian;
QPushButton *num_7_Bt;
QPushButton *num_9_Bt;
QPushButton *num_6_Bt;
QPushButton *num_1_Bt;
QPushButton *num_2_Bt;
QPushButton *num_8_Bt;
QPushButton *num_4_Bt;
QPushButton *num_3_Bt;
void setupUi(QDialog *KeyBoard)
{
if (KeyBoard->objectName().isEmpty())
KeyBoard->setObjectName(QString::fromUtf8("KeyBoard"));
KeyBoard->setEnabled(true);
KeyBoard->resize(240, 178);
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(KeyBoard->sizePolicy().hasHeightForWidth());
KeyBoard->setSizePolicy(sizePolicy);
KeyBoard->setStyleSheet(QString::fromUtf8(""));
label = new QLabel(KeyBoard);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 240, 180));
label->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 35, 53);\n"
"color: rgb(67, 135, 203);"));
label->setFrameShape(QFrame::Box);
showLb = new QLabel(KeyBoard);
showLb->setObjectName(QString::fromUtf8("showLb"));
showLb->setEnabled(true);
showLb->setGeometry(QRect(31, 21, 16, 32));
QFont font;
font.setFamily(QString::fromUtf8("Times New Roman"));
font.setPointSize(20);
showLb->setFont(font);
showLb->setStyleSheet(QString::fromUtf8(""));
showLb->setAlignment(Qt::AlignCenter);
layoutWidget = new QWidget(KeyBoard);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(10, 10, 221, 161));
gridLayout = new QGridLayout(layoutWidget);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
gridLayout->setContentsMargins(0, 0, 0, 0);
closeBt = new QPushButton(layoutWidget);
closeBt->setObjectName(QString::fromUtf8("closeBt"));
closeBt->setEnabled(true);
QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(closeBt->sizePolicy().hasHeightForWidth());
closeBt->setSizePolicy(sizePolicy1);
closeBt->setFont(font);
gridLayout->addWidget(closeBt, 0, 1, 1, 2);
delBt = new QPushButton(layoutWidget);
delBt->setObjectName(QString::fromUtf8("delBt"));
delBt->setEnabled(true);
sizePolicy1.setHeightForWidth(delBt->sizePolicy().hasHeightForWidth());
delBt->setSizePolicy(sizePolicy1);
delBt->setFont(font);
gridLayout->addWidget(delBt, 0, 0, 2, 1);
num_0_Bt = new QPushButton(layoutWidget);
num_0_Bt->setObjectName(QString::fromUtf8("num_0_Bt"));
num_0_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_0_Bt->sizePolicy().hasHeightForWidth());
num_0_Bt->setSizePolicy(sizePolicy1);
num_0_Bt->setFont(font);
gridLayout->addWidget(num_0_Bt, 1, 2, 1, 1);
num_5_Bt = new QPushButton(layoutWidget);
num_5_Bt->setObjectName(QString::fromUtf8("num_5_Bt"));
num_5_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_5_Bt->sizePolicy().hasHeightForWidth());
num_5_Bt->setSizePolicy(sizePolicy1);
num_5_Bt->setFont(font);
gridLayout->addWidget(num_5_Bt, 3, 1, 1, 1);
dian = new QPushButton(layoutWidget);
dian->setObjectName(QString::fromUtf8("dian"));
sizePolicy1.setHeightForWidth(dian->sizePolicy().hasHeightForWidth());
dian->setSizePolicy(sizePolicy1);
dian->setFont(font);
gridLayout->addWidget(dian, 1, 1, 1, 1);
num_7_Bt = new QPushButton(layoutWidget);
num_7_Bt->setObjectName(QString::fromUtf8("num_7_Bt"));
num_7_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_7_Bt->sizePolicy().hasHeightForWidth());
num_7_Bt->setSizePolicy(sizePolicy1);
num_7_Bt->setFont(font);
gridLayout->addWidget(num_7_Bt, 2, 0, 1, 1);
num_9_Bt = new QPushButton(layoutWidget);
num_9_Bt->setObjectName(QString::fromUtf8("num_9_Bt"));
num_9_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_9_Bt->sizePolicy().hasHeightForWidth());
num_9_Bt->setSizePolicy(sizePolicy1);
num_9_Bt->setFont(font);
gridLayout->addWidget(num_9_Bt, 2, 2, 1, 1);
num_6_Bt = new QPushButton(layoutWidget);
num_6_Bt->setObjectName(QString::fromUtf8("num_6_Bt"));
num_6_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_6_Bt->sizePolicy().hasHeightForWidth());
num_6_Bt->setSizePolicy(sizePolicy1);
num_6_Bt->setFont(font);
gridLayout->addWidget(num_6_Bt, 3, 2, 1, 1);
num_1_Bt = new QPushButton(layoutWidget);
num_1_Bt->setObjectName(QString::fromUtf8("num_1_Bt"));
num_1_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_1_Bt->sizePolicy().hasHeightForWidth());
num_1_Bt->setSizePolicy(sizePolicy1);
num_1_Bt->setFont(font);
gridLayout->addWidget(num_1_Bt, 4, 0, 1, 1);
num_2_Bt = new QPushButton(layoutWidget);
num_2_Bt->setObjectName(QString::fromUtf8("num_2_Bt"));
num_2_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_2_Bt->sizePolicy().hasHeightForWidth());
num_2_Bt->setSizePolicy(sizePolicy1);
num_2_Bt->setFont(font);
gridLayout->addWidget(num_2_Bt, 4, 1, 1, 1);
num_8_Bt = new QPushButton(layoutWidget);
num_8_Bt->setObjectName(QString::fromUtf8("num_8_Bt"));
num_8_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_8_Bt->sizePolicy().hasHeightForWidth());
num_8_Bt->setSizePolicy(sizePolicy1);
num_8_Bt->setFont(font);
gridLayout->addWidget(num_8_Bt, 2, 1, 1, 1);
num_4_Bt = new QPushButton(layoutWidget);
num_4_Bt->setObjectName(QString::fromUtf8("num_4_Bt"));
num_4_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_4_Bt->sizePolicy().hasHeightForWidth());
num_4_Bt->setSizePolicy(sizePolicy1);
num_4_Bt->setFont(font);
gridLayout->addWidget(num_4_Bt, 3, 0, 1, 1);
num_3_Bt = new QPushButton(layoutWidget);
num_3_Bt->setObjectName(QString::fromUtf8("num_3_Bt"));
num_3_Bt->setEnabled(true);
sizePolicy1.setHeightForWidth(num_3_Bt->sizePolicy().hasHeightForWidth());
num_3_Bt->setSizePolicy(sizePolicy1);
num_3_Bt->setFont(font);
gridLayout->addWidget(num_3_Bt, 4, 2, 1, 1);
retranslateUi(KeyBoard);
QMetaObject::connectSlotsByName(KeyBoard);
} // setupUi
void retranslateUi(QDialog *KeyBoard)
{
KeyBoard->setWindowTitle(QApplication::translate("KeyBoard", "Dialog", nullptr));
label->setText(QString());
showLb->setText(QString());
closeBt->setText(QApplication::translate("KeyBoard", "close", nullptr));
delBt->setText(QApplication::translate("KeyBoard", "Del", nullptr));
num_0_Bt->setText(QApplication::translate("KeyBoard", "0", nullptr));
num_5_Bt->setText(QApplication::translate("KeyBoard", "5", nullptr));
dian->setText(QApplication::translate("KeyBoard", ".", nullptr));
num_7_Bt->setText(QApplication::translate("KeyBoard", "7", nullptr));
num_9_Bt->setText(QApplication::translate("KeyBoard", "9", nullptr));
num_6_Bt->setText(QApplication::translate("KeyBoard", "6", nullptr));
num_1_Bt->setText(QApplication::translate("KeyBoard", "1", nullptr));
num_2_Bt->setText(QApplication::translate("KeyBoard", "2", nullptr));
num_8_Bt->setText(QApplication::translate("KeyBoard", "8", nullptr));
num_4_Bt->setText(QApplication::translate("KeyBoard", "4", nullptr));
num_3_Bt->setText(QApplication::translate("KeyBoard", "3", nullptr));
} // retranslateUi
};
namespace Ui {
class KeyBoard: public Ui_KeyBoard {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_KEYBOARD_H

@ -0,0 +1,531 @@
/********************************************************************************
** Form generated from reading UI file 'keyboard_ABC.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_KEYBOARD_ABC_H
#define UI_KEYBOARD_ABC_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_KeyBoard_ABC
{
public:
QLabel *label;
QLabel *showLb;
QWidget *layoutWidget;
QGridLayout *gridLayout;
QPushButton *y_Bt;
QPushButton *e_Bt;
QPushButton *n_Bt;
QPushButton *d_Bt;
QPushButton *num_1_Bt;
QPushButton *o_Bt;
QPushButton *v_Bt;
QPushButton *b_Bt;
QPushButton *p_Bt;
QPushButton *num_8_Bt;
QPushButton *c_Bt;
QPushButton *q_Bt;
QPushButton *x_Bt;
QPushButton *num_3_Bt;
QPushButton *caps_Bt;
QPushButton *i_Bt;
QPushButton *num_5_Bt;
QPushButton *num_4_Bt;
QPushButton *l_Bt;
QPushButton *s_Bt;
QPushButton *a_Bt;
QPushButton *num_6_Bt;
QPushButton *j_Bt;
QPushButton *z_Bt;
QPushButton *num_2_Bt;
QPushButton *g_Bt;
QPushButton *spaceBt;
QPushButton *k_Bt;
QPushButton *m_Bt;
QPushButton *h_Bt;
QPushButton *u_Bt;
QPushButton *num_7_Bt;
QPushButton *w_Bt;
QPushButton *f_Bt;
QPushButton *r_Bt;
QPushButton *num_0_Bt;
QPushButton *t_Bt;
QPushButton *num_9_Bt;
QPushButton *delBt;
QPushButton *closeBt;
void setupUi(QDialog *KeyBoard_ABC)
{
if (KeyBoard_ABC->objectName().isEmpty())
KeyBoard_ABC->setObjectName(QString::fromUtf8("KeyBoard_ABC"));
KeyBoard_ABC->setEnabled(true);
KeyBoard_ABC->resize(780, 154);
KeyBoard_ABC->setStyleSheet(QString::fromUtf8(""));
label = new QLabel(KeyBoard_ABC);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(1, 1, 781, 153));
label->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 62, 91);"));
showLb = new QLabel(KeyBoard_ABC);
showLb->setObjectName(QString::fromUtf8("showLb"));
showLb->setEnabled(true);
showLb->setGeometry(QRect(119, 1, 16, 16));
QFont font;
font.setFamily(QString::fromUtf8("Times New Roman"));
font.setPointSize(20);
showLb->setFont(font);
showLb->setStyleSheet(QString::fromUtf8(""));
showLb->setAlignment(Qt::AlignCenter);
layoutWidget = new QWidget(KeyBoard_ABC);
layoutWidget->setObjectName(QString::fromUtf8("layoutWidget"));
layoutWidget->setGeometry(QRect(10, 10, 761, 141));
gridLayout = new QGridLayout(layoutWidget);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
gridLayout->setHorizontalSpacing(3);
gridLayout->setVerticalSpacing(1);
gridLayout->setContentsMargins(0, 0, 0, 0);
y_Bt = new QPushButton(layoutWidget);
y_Bt->setObjectName(QString::fromUtf8("y_Bt"));
y_Bt->setEnabled(true);
QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(y_Bt->sizePolicy().hasHeightForWidth());
y_Bt->setSizePolicy(sizePolicy);
y_Bt->setFont(font);
gridLayout->addWidget(y_Bt, 1, 5, 1, 1);
e_Bt = new QPushButton(layoutWidget);
e_Bt->setObjectName(QString::fromUtf8("e_Bt"));
e_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(e_Bt->sizePolicy().hasHeightForWidth());
e_Bt->setSizePolicy(sizePolicy);
e_Bt->setFont(font);
gridLayout->addWidget(e_Bt, 1, 2, 1, 1);
n_Bt = new QPushButton(layoutWidget);
n_Bt->setObjectName(QString::fromUtf8("n_Bt"));
n_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(n_Bt->sizePolicy().hasHeightForWidth());
n_Bt->setSizePolicy(sizePolicy);
n_Bt->setFont(font);
gridLayout->addWidget(n_Bt, 3, 6, 1, 1);
d_Bt = new QPushButton(layoutWidget);
d_Bt->setObjectName(QString::fromUtf8("d_Bt"));
d_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(d_Bt->sizePolicy().hasHeightForWidth());
d_Bt->setSizePolicy(sizePolicy);
d_Bt->setFont(font);
gridLayout->addWidget(d_Bt, 2, 3, 1, 1);
num_1_Bt = new QPushButton(layoutWidget);
num_1_Bt->setObjectName(QString::fromUtf8("num_1_Bt"));
num_1_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_1_Bt->sizePolicy().hasHeightForWidth());
num_1_Bt->setSizePolicy(sizePolicy);
num_1_Bt->setFont(font);
gridLayout->addWidget(num_1_Bt, 1, 10, 1, 1);
o_Bt = new QPushButton(layoutWidget);
o_Bt->setObjectName(QString::fromUtf8("o_Bt"));
o_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(o_Bt->sizePolicy().hasHeightForWidth());
o_Bt->setSizePolicy(sizePolicy);
o_Bt->setFont(font);
gridLayout->addWidget(o_Bt, 1, 8, 1, 1);
v_Bt = new QPushButton(layoutWidget);
v_Bt->setObjectName(QString::fromUtf8("v_Bt"));
v_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(v_Bt->sizePolicy().hasHeightForWidth());
v_Bt->setSizePolicy(sizePolicy);
v_Bt->setFont(font);
gridLayout->addWidget(v_Bt, 3, 4, 1, 1);
b_Bt = new QPushButton(layoutWidget);
b_Bt->setObjectName(QString::fromUtf8("b_Bt"));
b_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(b_Bt->sizePolicy().hasHeightForWidth());
b_Bt->setSizePolicy(sizePolicy);
b_Bt->setFont(font);
gridLayout->addWidget(b_Bt, 3, 5, 1, 1);
p_Bt = new QPushButton(layoutWidget);
p_Bt->setObjectName(QString::fromUtf8("p_Bt"));
p_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(p_Bt->sizePolicy().hasHeightForWidth());
p_Bt->setSizePolicy(sizePolicy);
p_Bt->setFont(font);
gridLayout->addWidget(p_Bt, 1, 9, 1, 1);
num_8_Bt = new QPushButton(layoutWidget);
num_8_Bt->setObjectName(QString::fromUtf8("num_8_Bt"));
num_8_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_8_Bt->sizePolicy().hasHeightForWidth());
num_8_Bt->setSizePolicy(sizePolicy);
num_8_Bt->setFont(font);
gridLayout->addWidget(num_8_Bt, 3, 11, 1, 1);
c_Bt = new QPushButton(layoutWidget);
c_Bt->setObjectName(QString::fromUtf8("c_Bt"));
c_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(c_Bt->sizePolicy().hasHeightForWidth());
c_Bt->setSizePolicy(sizePolicy);
c_Bt->setFont(font);
gridLayout->addWidget(c_Bt, 3, 3, 1, 1);
q_Bt = new QPushButton(layoutWidget);
q_Bt->setObjectName(QString::fromUtf8("q_Bt"));
q_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(q_Bt->sizePolicy().hasHeightForWidth());
q_Bt->setSizePolicy(sizePolicy);
q_Bt->setFont(font);
gridLayout->addWidget(q_Bt, 1, 0, 1, 1);
x_Bt = new QPushButton(layoutWidget);
x_Bt->setObjectName(QString::fromUtf8("x_Bt"));
x_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(x_Bt->sizePolicy().hasHeightForWidth());
x_Bt->setSizePolicy(sizePolicy);
x_Bt->setFont(font);
gridLayout->addWidget(x_Bt, 3, 2, 1, 1);
num_3_Bt = new QPushButton(layoutWidget);
num_3_Bt->setObjectName(QString::fromUtf8("num_3_Bt"));
num_3_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_3_Bt->sizePolicy().hasHeightForWidth());
num_3_Bt->setSizePolicy(sizePolicy);
num_3_Bt->setFont(font);
gridLayout->addWidget(num_3_Bt, 1, 12, 1, 1);
caps_Bt = new QPushButton(layoutWidget);
caps_Bt->setObjectName(QString::fromUtf8("caps_Bt"));
caps_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(caps_Bt->sizePolicy().hasHeightForWidth());
caps_Bt->setSizePolicy(sizePolicy);
QFont font1;
font1.setFamily(QString::fromUtf8("Times New Roman"));
font1.setPointSize(15);
caps_Bt->setFont(font1);
gridLayout->addWidget(caps_Bt, 2, 0, 1, 1);
i_Bt = new QPushButton(layoutWidget);
i_Bt->setObjectName(QString::fromUtf8("i_Bt"));
i_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(i_Bt->sizePolicy().hasHeightForWidth());
i_Bt->setSizePolicy(sizePolicy);
i_Bt->setFont(font);
gridLayout->addWidget(i_Bt, 1, 7, 1, 1);
num_5_Bt = new QPushButton(layoutWidget);
num_5_Bt->setObjectName(QString::fromUtf8("num_5_Bt"));
num_5_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_5_Bt->sizePolicy().hasHeightForWidth());
num_5_Bt->setSizePolicy(sizePolicy);
num_5_Bt->setFont(font);
gridLayout->addWidget(num_5_Bt, 2, 11, 1, 1);
num_4_Bt = new QPushButton(layoutWidget);
num_4_Bt->setObjectName(QString::fromUtf8("num_4_Bt"));
num_4_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_4_Bt->sizePolicy().hasHeightForWidth());
num_4_Bt->setSizePolicy(sizePolicy);
num_4_Bt->setFont(font);
gridLayout->addWidget(num_4_Bt, 2, 10, 1, 1);
l_Bt = new QPushButton(layoutWidget);
l_Bt->setObjectName(QString::fromUtf8("l_Bt"));
l_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(l_Bt->sizePolicy().hasHeightForWidth());
l_Bt->setSizePolicy(sizePolicy);
l_Bt->setFont(font);
gridLayout->addWidget(l_Bt, 2, 9, 1, 1);
s_Bt = new QPushButton(layoutWidget);
s_Bt->setObjectName(QString::fromUtf8("s_Bt"));
s_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(s_Bt->sizePolicy().hasHeightForWidth());
s_Bt->setSizePolicy(sizePolicy);
s_Bt->setFont(font);
gridLayout->addWidget(s_Bt, 2, 2, 1, 1);
a_Bt = new QPushButton(layoutWidget);
a_Bt->setObjectName(QString::fromUtf8("a_Bt"));
a_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(a_Bt->sizePolicy().hasHeightForWidth());
a_Bt->setSizePolicy(sizePolicy);
a_Bt->setFont(font);
gridLayout->addWidget(a_Bt, 2, 1, 1, 1);
num_6_Bt = new QPushButton(layoutWidget);
num_6_Bt->setObjectName(QString::fromUtf8("num_6_Bt"));
num_6_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_6_Bt->sizePolicy().hasHeightForWidth());
num_6_Bt->setSizePolicy(sizePolicy);
num_6_Bt->setFont(font);
gridLayout->addWidget(num_6_Bt, 2, 12, 1, 1);
j_Bt = new QPushButton(layoutWidget);
j_Bt->setObjectName(QString::fromUtf8("j_Bt"));
j_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(j_Bt->sizePolicy().hasHeightForWidth());
j_Bt->setSizePolicy(sizePolicy);
j_Bt->setFont(font);
gridLayout->addWidget(j_Bt, 2, 7, 1, 1);
z_Bt = new QPushButton(layoutWidget);
z_Bt->setObjectName(QString::fromUtf8("z_Bt"));
z_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(z_Bt->sizePolicy().hasHeightForWidth());
z_Bt->setSizePolicy(sizePolicy);
z_Bt->setFont(font);
gridLayout->addWidget(z_Bt, 3, 1, 1, 1);
num_2_Bt = new QPushButton(layoutWidget);
num_2_Bt->setObjectName(QString::fromUtf8("num_2_Bt"));
num_2_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_2_Bt->sizePolicy().hasHeightForWidth());
num_2_Bt->setSizePolicy(sizePolicy);
num_2_Bt->setFont(font);
gridLayout->addWidget(num_2_Bt, 1, 11, 1, 1);
g_Bt = new QPushButton(layoutWidget);
g_Bt->setObjectName(QString::fromUtf8("g_Bt"));
g_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(g_Bt->sizePolicy().hasHeightForWidth());
g_Bt->setSizePolicy(sizePolicy);
g_Bt->setFont(font);
gridLayout->addWidget(g_Bt, 2, 5, 1, 1);
spaceBt = new QPushButton(layoutWidget);
spaceBt->setObjectName(QString::fromUtf8("spaceBt"));
spaceBt->setEnabled(true);
sizePolicy.setHeightForWidth(spaceBt->sizePolicy().hasHeightForWidth());
spaceBt->setSizePolicy(sizePolicy);
spaceBt->setFont(font);
gridLayout->addWidget(spaceBt, 3, 8, 1, 2);
k_Bt = new QPushButton(layoutWidget);
k_Bt->setObjectName(QString::fromUtf8("k_Bt"));
k_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(k_Bt->sizePolicy().hasHeightForWidth());
k_Bt->setSizePolicy(sizePolicy);
k_Bt->setFont(font);
gridLayout->addWidget(k_Bt, 2, 8, 1, 1);
m_Bt = new QPushButton(layoutWidget);
m_Bt->setObjectName(QString::fromUtf8("m_Bt"));
m_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(m_Bt->sizePolicy().hasHeightForWidth());
m_Bt->setSizePolicy(sizePolicy);
m_Bt->setFont(font);
gridLayout->addWidget(m_Bt, 3, 7, 1, 1);
h_Bt = new QPushButton(layoutWidget);
h_Bt->setObjectName(QString::fromUtf8("h_Bt"));
h_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(h_Bt->sizePolicy().hasHeightForWidth());
h_Bt->setSizePolicy(sizePolicy);
h_Bt->setFont(font);
gridLayout->addWidget(h_Bt, 2, 6, 1, 1);
u_Bt = new QPushButton(layoutWidget);
u_Bt->setObjectName(QString::fromUtf8("u_Bt"));
u_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(u_Bt->sizePolicy().hasHeightForWidth());
u_Bt->setSizePolicy(sizePolicy);
u_Bt->setFont(font);
gridLayout->addWidget(u_Bt, 1, 6, 1, 1);
num_7_Bt = new QPushButton(layoutWidget);
num_7_Bt->setObjectName(QString::fromUtf8("num_7_Bt"));
num_7_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_7_Bt->sizePolicy().hasHeightForWidth());
num_7_Bt->setSizePolicy(sizePolicy);
num_7_Bt->setFont(font);
gridLayout->addWidget(num_7_Bt, 3, 10, 1, 1);
w_Bt = new QPushButton(layoutWidget);
w_Bt->setObjectName(QString::fromUtf8("w_Bt"));
w_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(w_Bt->sizePolicy().hasHeightForWidth());
w_Bt->setSizePolicy(sizePolicy);
w_Bt->setFont(font);
gridLayout->addWidget(w_Bt, 1, 1, 1, 1);
f_Bt = new QPushButton(layoutWidget);
f_Bt->setObjectName(QString::fromUtf8("f_Bt"));
f_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(f_Bt->sizePolicy().hasHeightForWidth());
f_Bt->setSizePolicy(sizePolicy);
f_Bt->setFont(font);
gridLayout->addWidget(f_Bt, 2, 4, 1, 1);
r_Bt = new QPushButton(layoutWidget);
r_Bt->setObjectName(QString::fromUtf8("r_Bt"));
r_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(r_Bt->sizePolicy().hasHeightForWidth());
r_Bt->setSizePolicy(sizePolicy);
r_Bt->setFont(font);
gridLayout->addWidget(r_Bt, 1, 3, 1, 1);
num_0_Bt = new QPushButton(layoutWidget);
num_0_Bt->setObjectName(QString::fromUtf8("num_0_Bt"));
num_0_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_0_Bt->sizePolicy().hasHeightForWidth());
num_0_Bt->setSizePolicy(sizePolicy);
num_0_Bt->setFont(font);
gridLayout->addWidget(num_0_Bt, 0, 12, 1, 1);
t_Bt = new QPushButton(layoutWidget);
t_Bt->setObjectName(QString::fromUtf8("t_Bt"));
t_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(t_Bt->sizePolicy().hasHeightForWidth());
t_Bt->setSizePolicy(sizePolicy);
t_Bt->setFont(font);
gridLayout->addWidget(t_Bt, 1, 4, 1, 1);
num_9_Bt = new QPushButton(layoutWidget);
num_9_Bt->setObjectName(QString::fromUtf8("num_9_Bt"));
num_9_Bt->setEnabled(true);
sizePolicy.setHeightForWidth(num_9_Bt->sizePolicy().hasHeightForWidth());
num_9_Bt->setSizePolicy(sizePolicy);
num_9_Bt->setFont(font);
gridLayout->addWidget(num_9_Bt, 3, 12, 1, 1);
delBt = new QPushButton(layoutWidget);
delBt->setObjectName(QString::fromUtf8("delBt"));
delBt->setEnabled(true);
sizePolicy.setHeightForWidth(delBt->sizePolicy().hasHeightForWidth());
delBt->setSizePolicy(sizePolicy);
delBt->setFont(font);
gridLayout->addWidget(delBt, 0, 11, 1, 1);
closeBt = new QPushButton(layoutWidget);
closeBt->setObjectName(QString::fromUtf8("closeBt"));
closeBt->setEnabled(true);
sizePolicy.setHeightForWidth(closeBt->sizePolicy().hasHeightForWidth());
closeBt->setSizePolicy(sizePolicy);
closeBt->setFont(font);
gridLayout->addWidget(closeBt, 0, 9, 1, 2);
showLb->raise();
label->raise();
layoutWidget->raise();
retranslateUi(KeyBoard_ABC);
QMetaObject::connectSlotsByName(KeyBoard_ABC);
} // setupUi
void retranslateUi(QDialog *KeyBoard_ABC)
{
KeyBoard_ABC->setWindowTitle(QApplication::translate("KeyBoard_ABC", "Dialog", nullptr));
label->setText(QString());
showLb->setText(QString());
y_Bt->setText(QApplication::translate("KeyBoard_ABC", "y", nullptr));
e_Bt->setText(QApplication::translate("KeyBoard_ABC", "e", nullptr));
n_Bt->setText(QApplication::translate("KeyBoard_ABC", "n", nullptr));
d_Bt->setText(QApplication::translate("KeyBoard_ABC", "d", nullptr));
num_1_Bt->setText(QApplication::translate("KeyBoard_ABC", "1", nullptr));
o_Bt->setText(QApplication::translate("KeyBoard_ABC", "o", nullptr));
v_Bt->setText(QApplication::translate("KeyBoard_ABC", "v", nullptr));
b_Bt->setText(QApplication::translate("KeyBoard_ABC", "b", nullptr));
p_Bt->setText(QApplication::translate("KeyBoard_ABC", "p", nullptr));
num_8_Bt->setText(QApplication::translate("KeyBoard_ABC", "8", nullptr));
c_Bt->setText(QApplication::translate("KeyBoard_ABC", "c", nullptr));
q_Bt->setText(QApplication::translate("KeyBoard_ABC", "q", nullptr));
x_Bt->setText(QApplication::translate("KeyBoard_ABC", "x", nullptr));
num_3_Bt->setText(QApplication::translate("KeyBoard_ABC", "3", nullptr));
caps_Bt->setText(QApplication::translate("KeyBoard_ABC", "Caps", nullptr));
i_Bt->setText(QApplication::translate("KeyBoard_ABC", "i", nullptr));
num_5_Bt->setText(QApplication::translate("KeyBoard_ABC", "5", nullptr));
num_4_Bt->setText(QApplication::translate("KeyBoard_ABC", "4", nullptr));
l_Bt->setText(QApplication::translate("KeyBoard_ABC", "l", nullptr));
s_Bt->setText(QApplication::translate("KeyBoard_ABC", "s", nullptr));
a_Bt->setText(QApplication::translate("KeyBoard_ABC", "a", nullptr));
num_6_Bt->setText(QApplication::translate("KeyBoard_ABC", "6", nullptr));
j_Bt->setText(QApplication::translate("KeyBoard_ABC", "j", nullptr));
z_Bt->setText(QApplication::translate("KeyBoard_ABC", "z", nullptr));
num_2_Bt->setText(QApplication::translate("KeyBoard_ABC", "2", nullptr));
g_Bt->setText(QApplication::translate("KeyBoard_ABC", "g", nullptr));
spaceBt->setText(QApplication::translate("KeyBoard_ABC", "space", nullptr));
k_Bt->setText(QApplication::translate("KeyBoard_ABC", "k", nullptr));
m_Bt->setText(QApplication::translate("KeyBoard_ABC", "m", nullptr));
h_Bt->setText(QApplication::translate("KeyBoard_ABC", "h", nullptr));
u_Bt->setText(QApplication::translate("KeyBoard_ABC", "u", nullptr));
num_7_Bt->setText(QApplication::translate("KeyBoard_ABC", "7", nullptr));
w_Bt->setText(QApplication::translate("KeyBoard_ABC", "w", nullptr));
f_Bt->setText(QApplication::translate("KeyBoard_ABC", "f", nullptr));
r_Bt->setText(QApplication::translate("KeyBoard_ABC", "r", nullptr));
num_0_Bt->setText(QApplication::translate("KeyBoard_ABC", "0", nullptr));
t_Bt->setText(QApplication::translate("KeyBoard_ABC", "t", nullptr));
num_9_Bt->setText(QApplication::translate("KeyBoard_ABC", "9", nullptr));
delBt->setText(QApplication::translate("KeyBoard_ABC", "Del", nullptr));
closeBt->setText(QApplication::translate("KeyBoard_ABC", "close", nullptr));
} // retranslateUi
};
namespace Ui {
class KeyBoard_ABC: public Ui_KeyBoard_ABC {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_KEYBOARD_ABC_H

@ -0,0 +1,240 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralwidget;
QPushButton *pushButton_zhujiemian;
QPushButton *pushButton_wangluoxinxi;
QPushButton *pushButton_canshushezhi;
QPushButton *pushButton_xitongshezhi;
QLabel *label_6;
QLabel *label_zhongduan;
QLabel *label_tubiao_wifi;
QLabel *label_tubiao_4g;
QLabel *label_tubiao_lora;
QLabel *label_Awendu;
QLabel *label_1;
QTextEdit *textEdit_wendu;
QLabel *label_Bwendu;
QLabel *label_Cwendu;
QTextEdit *textEdit_zhujiemian;
QLabel *label_tiexinwendu;
QLabel *label_tubiao_yunxing;
QLabel *label_tubiao_lan;
QTextEdit *textEdit_tubiao;
QLabel *label_2;
QLabel *label_3;
QLabel *label_4;
QLabel *label_5;
QLabel *label;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(800, 480);
MainWindow->setStyleSheet(QString::fromUtf8("color: rgb(244, 244, 244);"));
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
pushButton_zhujiemian = new QPushButton(centralwidget);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
pushButton_wangluoxinxi = new QPushButton(centralwidget);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
pushButton_canshushezhi = new QPushButton(centralwidget);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
pushButton_xitongshezhi = new QPushButton(centralwidget);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_6 = new QLabel(centralwidget);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 780, 300));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_zhongduan = new QLabel(centralwidget);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, -10, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
label_tubiao_wifi = new QLabel(centralwidget);
label_tubiao_wifi->setObjectName(QString::fromUtf8("label_tubiao_wifi"));
label_tubiao_wifi->setGeometry(QRect(758, 4, 31, 31));
label_tubiao_wifi->setStyleSheet(QString::fromUtf8("image: url(:/image/image/WIFI2-disconnect.png);"));
label_tubiao_4g = new QLabel(centralwidget);
label_tubiao_4g->setObjectName(QString::fromUtf8("label_tubiao_4g"));
label_tubiao_4g->setGeometry(QRect(720, 4, 31, 31));
label_tubiao_4g->setStyleSheet(QString::fromUtf8("image: url(:/image/image/4G.png);"));
label_tubiao_lora = new QLabel(centralwidget);
label_tubiao_lora->setObjectName(QString::fromUtf8("label_tubiao_lora"));
label_tubiao_lora->setGeometry(QRect(682, 4, 31, 31));
label_tubiao_lora->setStyleSheet(QString::fromUtf8("image: url(:/image/image/LORA.png);"));
label_Awendu = new QLabel(centralwidget);
label_Awendu->setObjectName(QString::fromUtf8("label_Awendu"));
label_Awendu->setGeometry(QRect(23, 150, 181, 31));
label_Awendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_Awendu->setAlignment(Qt::AlignCenter);
label_1 = new QLabel(centralwidget);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit_wendu = new QTextEdit(centralwidget);
textEdit_wendu->setObjectName(QString::fromUtf8("textEdit_wendu"));
textEdit_wendu->setGeometry(QRect(20, 140, 761, 51));
textEdit_wendu->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_Bwendu = new QLabel(centralwidget);
label_Bwendu->setObjectName(QString::fromUtf8("label_Bwendu"));
label_Bwendu->setGeometry(QRect(210, 150, 181, 31));
label_Bwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_Cwendu = new QLabel(centralwidget);
label_Cwendu->setObjectName(QString::fromUtf8("label_Cwendu"));
label_Cwendu->setGeometry(QRect(410, 150, 181, 31));
label_Cwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(0, 171, 171);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
textEdit_zhujiemian = new QTextEdit(centralwidget);
textEdit_zhujiemian->setObjectName(QString::fromUtf8("textEdit_zhujiemian"));
textEdit_zhujiemian->setGeometry(QRect(10, 200, 780, 41));
textEdit_zhujiemian->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_tiexinwendu = new QLabel(centralwidget);
label_tiexinwendu->setObjectName(QString::fromUtf8("label_tiexinwendu"));
label_tiexinwendu->setGeometry(QRect(600, 150, 181, 31));
label_tiexinwendu->setStyleSheet(QString::fromUtf8("\n"
"color: rgb(145, 145, 145);\n"
"font: 9pt \"\351\232\266\344\271\246\";"));
label_tubiao_yunxing = new QLabel(centralwidget);
label_tubiao_yunxing->setObjectName(QString::fromUtf8("label_tubiao_yunxing"));
label_tubiao_yunxing->setGeometry(QRect(596, 4, 31, 31));
label_tubiao_yunxing->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yunxing.png);"));
label_tubiao_lan = new QLabel(centralwidget);
label_tubiao_lan->setObjectName(QString::fromUtf8("label_tubiao_lan"));
label_tubiao_lan->setGeometry(QRect(639, 4, 31, 31));
label_tubiao_lan->setStyleSheet(QString::fromUtf8("image: url(:/image/image/yitaiyang.png);"));
textEdit_tubiao = new QTextEdit(centralwidget);
textEdit_tubiao->setObjectName(QString::fromUtf8("textEdit_tubiao"));
textEdit_tubiao->setGeometry(QRect(584, 2, 210, 36));
textEdit_tubiao->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label_2 = new QLabel(centralwidget);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_3 = new QLabel(centralwidget);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(584, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_4 = new QLabel(centralwidget);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_5 = new QLabel(centralwidget);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label = new QLabel(centralwidget);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
MainWindow->setCentralWidget(centralwidget);
label->raise();
label_4->raise();
label_3->raise();
label_2->raise();
label_1->raise();
label_5->raise();
label_6->raise();
textEdit_tubiao->raise();
pushButton_zhujiemian->raise();
pushButton_wangluoxinxi->raise();
pushButton_canshushezhi->raise();
pushButton_xitongshezhi->raise();
label_zhongduan->raise();
textEdit_wendu->raise();
label_Awendu->raise();
label_Bwendu->raise();
label_Cwendu->raise();
textEdit_zhujiemian->raise();
label_tiexinwendu->raise();
label_tubiao_yunxing->raise();
label_tubiao_lan->raise();
label_tubiao_lora->raise();
label_tubiao_4g->raise();
label_tubiao_wifi->raise();
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", nullptr));
pushButton_zhujiemian->setText(QString());
pushButton_wangluoxinxi->setText(QString());
pushButton_canshushezhi->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_6->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_zhongduan->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
label_tubiao_wifi->setText(QString());
label_tubiao_4g->setText(QString());
label_tubiao_lora->setText(QString());
label_Awendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">A</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">52</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_1->setText(QString());
label_Bwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">B</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">45</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_Cwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">C</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\347\233\270\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">47</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_tiexinwendu->setText(QApplication::translate("MainWindow", "<html><head/><body><p align=\"center\"><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\351\223\201\350\212\257\346\270\251\345\272\246\357\274\232</span><span style=\" font-family:'\345\256\213\344\275\223','Calibri'; font-size:16pt; font-weight:600;\">67</span><span style=\" font-family:'\345\256\213\344\275\223'; font-size:16pt; font-weight:600;\">\342\204\203</span></p></body></html>", nullptr));
label_tubiao_yunxing->setText(QString());
label_tubiao_lan->setText(QString());
label_2->setText(QString());
label_3->setText(QString());
label_4->setText(QString());
label_5->setText(QString());
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H

@ -0,0 +1,46 @@
/********************************************************************************
** Form generated from reading UI file 'net_thread.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_NET_THREAD_H
#define UI_NET_THREAD_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_net_Thread
{
public:
void setupUi(QWidget *net_Thread)
{
if (net_Thread->objectName().isEmpty())
net_Thread->setObjectName(QString::fromUtf8("net_Thread"));
net_Thread->resize(400, 300);
retranslateUi(net_Thread);
QMetaObject::connectSlotsByName(net_Thread);
} // setupUi
void retranslateUi(QWidget *net_Thread)
{
net_Thread->setWindowTitle(QApplication::translate("net_Thread", "Form", nullptr));
} // retranslateUi
};
namespace Ui {
class net_Thread: public Ui_net_Thread {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_NET_THREAD_H

@ -0,0 +1,149 @@
/********************************************************************************
** Form generated from reading UI file 'wangluo.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_WANGLUO_H
#define UI_WANGLUO_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_wangluo
{
public:
QLabel *label_zhongduan;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_5;
QPushButton *pushButton_zhujiemian;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QPushButton *pushButton_xitongshezhi;
QLabel *label_4;
QLabel *label_6;
QLabel *label_2;
QLabel *label_1;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *wangluo)
{
if (wangluo->objectName().isEmpty())
wangluo->setObjectName(QString::fromUtf8("wangluo"));
wangluo->resize(800, 480);
label_zhongduan = new QLabel(wangluo);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
pushButton_wangluoxinxi = new QPushButton(wangluo);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_5 = new QLabel(wangluo);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_zhujiemian = new QPushButton(wangluo);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
pushButton_canshushezhi = new QPushButton(wangluo);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(588, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(wangluo);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_xitongshezhi = new QPushButton(wangluo);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_4 = new QLabel(wangluo);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_6 = new QLabel(wangluo);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 780, 300));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(wangluo);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_1 = new QLabel(wangluo);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit = new QTextEdit(wangluo);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(textEdit->sizePolicy().hasHeightForWidth());
textEdit->setSizePolicy(sizePolicy);
label = new QLabel(wangluo);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->raise();
label_4->raise();
label_3->raise();
label_2->raise();
label_1->raise();
label_5->raise();
label_6->raise();
label_zhongduan->raise();
pushButton_wangluoxinxi->raise();
pushButton_zhujiemian->raise();
pushButton_canshushezhi->raise();
pushButton_xitongshezhi->raise();
textEdit->raise();
retranslateUi(wangluo);
QMetaObject::connectSlotsByName(wangluo);
} // setupUi
void retranslateUi(QWidget *wangluo)
{
wangluo->setWindowTitle(QApplication::translate("wangluo", "Form", nullptr));
label_zhongduan->setText(QApplication::translate("wangluo", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
pushButton_wangluoxinxi->setText(QString());
label_5->setText(QString());
pushButton_zhujiemian->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_4->setText(QString());
label_6->setText(QApplication::translate("wangluo", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
label_1->setText(QString());
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class wangluo: public Ui_wangluo {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_WANGLUO_H

@ -0,0 +1,145 @@
/********************************************************************************
** Form generated from reading UI file 'xitongshezhi.ui'
**
** Created by: Qt User Interface Compiler version 5.12.9
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_XITONGSHEZHI_H
#define UI_XITONGSHEZHI_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_xitongshezhi
{
public:
QPushButton *pushButton_zhujiemian;
QLabel *label_1;
QLabel *label_zhongduan;
QPushButton *pushButton_wangluoxinxi;
QLabel *label_4;
QLabel *label_6;
QLabel *label_2;
QPushButton *pushButton_xitongshezhi;
QLabel *label_5;
QPushButton *pushButton_canshushezhi;
QLabel *label_3;
QTextEdit *textEdit;
QLabel *label;
void setupUi(QWidget *xitongshezhi)
{
if (xitongshezhi->objectName().isEmpty())
xitongshezhi->setObjectName(QString::fromUtf8("xitongshezhi"));
xitongshezhi->resize(800, 480);
pushButton_zhujiemian = new QPushButton(xitongshezhi);
pushButton_zhujiemian->setObjectName(QString::fromUtf8("pushButton_zhujiemian"));
pushButton_zhujiemian->setEnabled(true);
pushButton_zhujiemian->setGeometry(QRect(363, 44, 91, 81));
pushButton_zhujiemian->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/1.png);"));
label_1 = new QLabel(xitongshezhi);
label_1->setObjectName(QString::fromUtf8("label_1"));
label_1->setGeometry(QRect(358, 40, 100, 131));
label_1->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_zhongduan = new QLabel(xitongshezhi);
label_zhongduan->setObjectName(QString::fromUtf8("label_zhongduan"));
label_zhongduan->setGeometry(QRect(20, 30, 321, 101));
label_zhongduan->setStyleSheet(QString::fromUtf8("font: 9pt \"\351\232\266\344\271\246\";\n"
"font: 9pt \"\351\232\266\344\271\246\";\n"
"color: rgb(0, 50, 75);"));
label_zhongduan->setScaledContents(false);
pushButton_wangluoxinxi = new QPushButton(xitongshezhi);
pushButton_wangluoxinxi->setObjectName(QString::fromUtf8("pushButton_wangluoxinxi"));
pushButton_wangluoxinxi->setGeometry(QRect(476, 44, 91, 81));
pushButton_wangluoxinxi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/2.png);"));
label_4 = new QLabel(xitongshezhi);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setGeometry(QRect(695, 40, 100, 131));
label_4->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
label_6 = new QLabel(xitongshezhi);
label_6->setObjectName(QString::fromUtf8("label_6"));
label_6->setEnabled(false);
label_6->setGeometry(QRect(10, 136, 781, 301));
label_6->setAutoFillBackground(false);
label_6->setStyleSheet(QString::fromUtf8("background-color: rgb(145, 145, 145);\n"
"color: rgb(8, 8, 13);"));
label_2 = new QLabel(xitongshezhi);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setGeometry(QRect(471, 40, 100, 131));
label_2->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_xitongshezhi = new QPushButton(xitongshezhi);
pushButton_xitongshezhi->setObjectName(QString::fromUtf8("pushButton_xitongshezhi"));
pushButton_xitongshezhi->setGeometry(QRect(700, 44, 91, 81));
pushButton_xitongshezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/4.png);"));
label_5 = new QLabel(xitongshezhi);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setGeometry(QRect(5, 130, 790, 311));
label_5->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
pushButton_canshushezhi = new QPushButton(xitongshezhi);
pushButton_canshushezhi->setObjectName(QString::fromUtf8("pushButton_canshushezhi"));
pushButton_canshushezhi->setGeometry(QRect(589, 44, 91, 81));
pushButton_canshushezhi->setStyleSheet(QString::fromUtf8("border-image: url(:/image/image/3.png);"));
label_3 = new QLabel(xitongshezhi);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setGeometry(QRect(585, 40, 100, 131));
label_3->setStyleSheet(QString::fromUtf8("background-color: rgb(0, 171, 171);"));
textEdit = new QTextEdit(xitongshezhi);
textEdit->setObjectName(QString::fromUtf8("textEdit"));
textEdit->setGeometry(QRect(10, 145, 780, 41));
label = new QLabel(xitongshezhi);
label->setObjectName(QString::fromUtf8("label"));
label->setGeometry(QRect(0, 0, 800, 480));
label->setStyleSheet(QString::fromUtf8("background-color: rgb(244, 244, 244);"));
label->raise();
label_5->raise();
label_3->raise();
label_2->raise();
label_1->raise();
pushButton_zhujiemian->raise();
label_zhongduan->raise();
pushButton_wangluoxinxi->raise();
label_4->raise();
label_6->raise();
pushButton_xitongshezhi->raise();
pushButton_canshushezhi->raise();
textEdit->raise();
retranslateUi(xitongshezhi);
QMetaObject::connectSlotsByName(xitongshezhi);
} // setupUi
void retranslateUi(QWidget *xitongshezhi)
{
xitongshezhi->setWindowTitle(QApplication::translate("xitongshezhi", "Form", nullptr));
pushButton_zhujiemian->setText(QString());
label_1->setText(QString());
label_zhongduan->setText(QApplication::translate("xitongshezhi", "<html><head/><body><p align=\"center\"><span style=\" font-size:48pt; font-weight:600; font-style:italic;\">\346\231\272\350\203\275\347\273\210\347\253\257</span></p></body></html>", nullptr));
pushButton_wangluoxinxi->setText(QString());
label_4->setText(QString());
label_6->setText(QApplication::translate("xitongshezhi", "<html><head/><body><p align=\"center\"><br/></p></body></html>", nullptr));
label_2->setText(QString());
pushButton_xitongshezhi->setText(QString());
label_5->setText(QString());
pushButton_canshushezhi->setText(QString());
label_3->setText(QString());
label->setText(QString());
} // retranslateUi
};
namespace Ui {
class xitongshezhi: public Ui_xitongshezhi {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_XITONGSHEZHI_H

@ -0,0 +1,127 @@
//#pragma execution_character_set("utf-8")
#include "applive.h"
#include "qmutex.h"
#include "qudpsocket.h"
#include "qtcpsocket.h"
#include "qstringlist.h"
#include "qapplication.h"
#include "qdatetime.h"
#include "qdebug.h"
#include "QDebug"
#define TIMEMS qPrintable(QTime::currentTime().toString("HH:mm:ss zzz"))
QScopedPointer<AppLive> AppLive::self;
AppLive *AppLive::Instance()
{
if (self.isNull()) {
QMutex mutex;
QMutexLocker locker(&mutex);
if (self.isNull()) {
self.reset(new AppLive);
}
}
return self.data();
}
AppLive::AppLive(QObject *parent) : QObject(parent)
{
qDebug() <<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$";
qDebug() <<"$ Module: Livedemo";
qDebug() <<"$ Date:" <<__DATE__;
qDebug() <<"$ Time:" <<__TIME__;
qDebug() <<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$";
//udpServer = new QUdpSocket(this);//QUdpSocket(this);
tcpServer = new QTcpSocket(this);//QUdpSocket(this);
QString name = qApp->applicationFilePath();
QStringList list = name.split("/");
appName = list.at(list.count() - 1).split(".").at(0);
}
AppLive::~AppLive()
{
;
}
void AppLive::readData()
{
QByteArray byteArrays =tcpServer->readAll();
qDebug() <<"TcpServerLib::readyRead =" <<byteArrays;
QList<QByteArray> byteArrayList =byteArrays.split('\n');
foreach (QByteArray byteArray, byteArrayList) {
if(byteArray.isEmpty())
continue;
// QJsonArray appIdJsonArray;
// QJsonValue infos;
// QString key;
// SubAppTcpSocket::AppId fromId =SubAppTcpSocket::getInform(byteArray,
// appIdJsonArray,
// key, infos);
QString data = QLatin1String(byteArray);
qDebug() <<"RXD =" <<data;
if (data == "Hello") {
tcpServer->write(QByteArray("OK\r\n").append(qApp->applicationName()));//往守护进程发程序名
}
// qDebug() <<"key =" <<key;
// qDebug() <<"appIdJsonArray =" <<appIdJsonArray;
// qDebug() <<"infos =" <<infos;
// foreach (ProcessObject* processObject, processObjectList) {
// if(processObject->appId ==fromId) {
// if(!processObject->tcpSocket) {
// processObject->tcpSocket =tcpSocket;
// }
// processObject->timeout =0;
// }
// else if(appIdJsonArray.contains((int)processObject->appId)
// &&processObject->tcpSocket) {
// processObject->tcpSocket->write(byteArray.append('\n'));
// }
// }
}
// QByteArray tempData;
// do {
// tempData.resize(udpServer->pendingDatagramSize());
// QHostAddress sender;
// quint16 senderPort;
// udpServer->readDatagram(tempData.data(), tempData.size(), &sender, &senderPort);
// QString data = QLatin1String(tempData);
// if (data == "hello") {
// udpServer->writeDatagram(QString("%1OK").arg(appName).toLatin1(), sender, senderPort);
// }
// } while (udpServer->hasPendingDatagrams());
}
bool AppLive::start(int port)
{
// bool ok = udpServer->bind(port);
// if (ok) {
// connect(udpServer, SIGNAL(readyRead()), this, SLOT(readData()));
// qDebug() << TIMEMS << "Start AppLive Ok";
// }
// bool ok = tcpServer->bind(port);
// if (ok) {
// connect(tcpServer, SIGNAL(readyRead()), this, SLOT(readData()));
// qDebug() << TIMEMS << "Start AppLive Ok";
// }
bool ok = true;//tcpServer->bind(44555);
if (ok) {
connect(tcpServer, SIGNAL(readyRead()), this, SLOT(readData()));
tcpServer->connectToHost(QString("127.0.0.1"),port);
qDebug() << TIMEMS << "Start AppLive Ok";
}
return ok;
}
void AppLive::stop()
{
// udpServer->abort();
// disconnect(udpServer, SIGNAL(readyRead()), this, SLOT(readData()));
tcpServer->abort();
disconnect(tcpServer, SIGNAL(readyRead()), this, SLOT(readData()));
}

@ -0,0 +1,32 @@
#ifndef APPLIVE_H
#define APPLIVE_H
#include <QObject>
class QUdpSocket;
class QTcpSocket;
class AppLive : public QObject
{
Q_OBJECT
public:
static AppLive *Instance();
explicit AppLive(QObject *parent = 0);
~AppLive();
private:
static QScopedPointer<AppLive> self;
//QUdpSocket *udpServer;
QTcpSocket *tcpServer;
QString appName;
private slots:
void readData();
public slots:
bool start(int port);
void stop();
};
#endif // APPLIVE_H

File diff suppressed because it is too large Load Diff

@ -0,0 +1,364 @@
#ifndef CANSHUPEIZHI_H
#define CANSHUPEIZHI_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QComboBox>
#include <keyboard.h>
#include <keyboard_ABC.h>
#include <QFrame>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#include <QDebug>
#include <QMouseEvent>
#include <QFile>
extern bool lowpower_mode_flag1;
extern bool wlpz_flag,xtpz_flag;
extern bool KeyBoard_Code,KeyBoard_ABC_Code,keyBoard_flag,keyBoard_ABC_flag;
static QString line1,line2,line3,line4,line5,line6,line7,line8,line9,line10,line11,line12,line13,line14,line15,line16,line17,line18,line19,line20,line21,line22,line23,line24,line25,line26,line27,line28,line29,line30,line31,line32,line33,line34,line35,line36,line37,line38,line39,line40,line41,line42,line43,line44,line45,line46,line47,line48,line49,line50,line51,line52,line53,line54,line55,line56,line57,line58,line59,line60;
static QString name1,name2,name3,name4,name5,name6,name7,name8,name9,name10,name11,name12,name13,name14,name15,name16,name17,name18,name19,name20,name21,name22,name23,name24,name25,name26,name27,name28,name29,name30,name31,name32,name33,name34,name35,name36,name37,name38,name39,name40,name41,name42,name43,name44,name45,name46,name47,name48,name49,name50,name51,name52,name53,name54,name55,name56,name57,name58,name59,name60;
static QString rxy_time1,rxy_time2,rxy_time3,rxy_time4,rxy_time5,rxy_data1,rxy_data2,rxy_data3,rxy_data4,rxy_data5,rxy_data6;
namespace Ui {
class canshupeizhi;
}
class canshupeizhi : public QWidget
{
Q_OBJECT
public:
explicit canshupeizhi(QWidget *parent = nullptr);
~canshupeizhi();
KeyBoard *keyBoard1=nullptr;
KeyBoard_ABC *keyBoard_ABC1=nullptr;
QLineEdit *mimaline;
QPushButton *mimaButton;
QLabel *label_mima1;
QLabel *label_mima2;
QLabel *label_mimajiemian;
void cspz_set_back_color();
protected:
bool eventFilter(QObject *watched, QEvent *event);
void cspz_page(int a);//参数配置显示页数
private slots:
void label_cspz_0_1_clicked();
void label_cspz_0_3_clicked();
void label_cspz_0_5_clicked();
void label_cspz_0_6_clicked();
void label_cspz_0_wirenameset_clicked();
void on_pushButton_zhujiemian_clicked();
void on_pushButton_wangluoxinxi_clicked();
void on_pushButton_canshushezhi_clicked();
void on_pushButton_xitongshezhi_clicked();
void mimaButtonClicked();
void callKeyBoard(QLineEdit *a);
void callKeyBoard_ABC_Can(QLineEdit *a);
void label_cspz_1_show(int a);
void label_cspz_3_show(int a);
void label_cspz_5_show(int a);
void label_cspz_6_show(int a);
void label_cspz_0_wirenameset_show(int a);
void cspz_byqset_page();
void cspz_rxyset_page();
void cspz_fengjiset_page();
void cspz_wireless_adress_set_page();
void cspz_wireless_name_set_page();
void button_cspz_1_1_Clicked();
void button_cspz_3_1_Clicked();
void button_cspz_3_2_Clicked();
void button_cspz_rxy1_start_Clicked();
void button_cspz_rxy2_start_Clicked();
void button_cspz_5_1_Clicked();
void button_cspz_5_2_Clicked();
void button_cspz_5_3_Clicked();
void button_cspz_5_4_Clicked();
void button_cspz_5_5_Clicked();
void button_cspz_6_1_Clicked();
void button_cspz_6_2_Clicked();
void button_cspz_6_3_Clicked();
void button_cspz_6_4_Clicked();
void button_cspz_wirename_1_Clicked();
void button_cspz_wirename_2_Clicked();
void button_cspz_wirename_3_Clicked();
void button_cspz_wirename_4_Clicked();
void comboBox_cspz_3_1_IndexChanged(int);//热像仪设备选择
private:
Ui::canshupeizhi *ui;
bool cspz_wxcw_down_page_flag=true;
bool cspz_wxcw_top_page_flag=false;
bool cspz_wxcw_name_down_page_flag=true;
bool cspz_wxcw_name_top_page_flag=false;
QLabel *label_cspz_0_1;//左右滑动切换页面label变压器参数配置
QLabel *label_cspz_0_3;
QLabel *label_cspz_0_5;
QLabel *label_cspz_0_6;
QLabel *label_cspz_0_wirenameset;
QLabel *label_cspz_byq_back;
QLabel *label_cspz_rxy_back;
QLabel *label_cspz_fengji_back;
QLabel *label_cspz_wuxiancewen_back;
QLabel *label_cspz_wirenameset_back;
QLabel *label_cspz_1_1;//变压器参数修改页面label1
QLabel *label_cspz_1_2;
QLabel *label_cspz_1_3;
QLabel *label_cspz_1_4;
QLabel *label_cspz_1_5;
QLineEdit *lineEdit_cspz_1_1;
QLineEdit *lineEdit_cspz_1_2;
QLineEdit *lineEdit_cspz_1_3;
QLineEdit *lineEdit_cspz_1_1_A;
QLineEdit *lineEdit_cspz_1_2_B;
QLineEdit *lineEdit_cspz_1_3_C;
QLineEdit *lineEdit_cspz_1_3_T;
QPushButton *button_cspz_1_1;
QLabel *label_cspz_3_1;//热像仪参数修改页面label1
QLabel *label_cspz_3_2;
QLabel *label_cspz_3_3;
QLabel *label_cspz_3_4;
QLabel *label_cspz_3_5;
QLabel *label_cspz_3_6;//单位
QLabel *label_cspz_3_7;
QLabel *label_cspz_3_8;
QLabel *label_cspz_3_9;
QLabel *label_cspz_3_10;
QLabel *label_cspz_3_11;
QLabel *label_cspz_3_12;
QLabel *label_cspz_3_13;
QLabel *label_cspz_3_14;
QLabel *label_cspz_3_15;//保存提示
QLabel *label_cspz_3_16;//热像仪IP
QLabel *label_cspz_3_17;//端口号
QLabel *label_cspz_3_18;//反射温度
QLabel *label_cspz_3_19;//℃
QLabel *label_cspz_3_20;//反射率
QLabel *label_cspz_3_21;//反射距离
QLabel *label_cspz_3_22;//米
QLabel *label_cspz_3_23;//温度预警
QLabel *label_cspz_3_24;//℃
QLabel *label_cspz_3_25;//温度报警
QLabel *label_cspz_3_26;//℃
QLabel *label_cspz_3_27;//两次报警之间的时间间隔
QLabel *label_cspz_3_28;//s
QLabel *label_cspz_3_29;//设备选择
QLabel *label_cspz_3_30;//分
QLabel *label_cspz_3_31;//分
QLineEdit *lineEdit_cspz_3_1;
QLineEdit *lineEdit_cspz_3_2;
QLineEdit *lineEdit_cspz_3_3;
QLineEdit *lineEdit_cspz_3_4;
QLineEdit *lineEdit_cspz_3_5;
QLineEdit *lineEdit_cspz_3_6;
QLineEdit *lineEdit_cspz_3_7;//IP
QLineEdit *lineEdit_cspz_3_8;//端口号
QLineEdit *lineEdit_cspz_3_9;//反射温度
QLineEdit *lineEdit_cspz_3_10;//反射率
QLineEdit *lineEdit_cspz_3_11;//反射距离
QLineEdit *lineEdit_cspz_3_12;//温度预警
QLineEdit *lineEdit_cspz_3_13;//温度报警
QLineEdit *lineEdit_cspz_3_14;//两次报警之间的时间间隔
QLineEdit *lineEdit_cspz_3_15;//分钟
QLineEdit *lineEdit_cspz_3_16;//分钟
QPushButton *button_cspz_3_1;
QPushButton *button_cspz_3_2;
QComboBox *combox_cspz_3_1;
QFrame *line_cspz_3_1;
QLabel *label_cspz_rxy1_start;//热像仪1开启状态
QPushButton *button_cspz_rxy1_start;//热像仪1开启按钮
QLabel *label_cspz_rxy2_start;//热像仪2开启状态
QPushButton *button_cspz_rxy2_start;//热像仪2开启按钮
QLabel *label_cspz_5_1;//风机修改页面label1
QLabel *label_cspz_5_2;
QLabel *label_cspz_5_3;
QLabel *label_cspz_5_4;
QLabel *label_cspz_5_5;
QLabel *label_cspz_5_6;
QLabel *label_cspz_5_7;
QLabel *label_cspz_5_8;
QLabel *label_cspz_5_9;
QLabel *label_cspz_5_10;
QLabel *label_cspz_5_11;
QLabel *label_cspz_5_12;
QLabel *label_cspz_5_13;
QLabel *label_cspz_5_14;
QLabel *label_cspz_5_15;
QLabel *label_cspz_5_18;
QLabel *label_cspz_5_19;//开启铁芯温度检测
QLabel *label_cspz_5_20;//开启风机定时检测
QLineEdit *lineEdit_cspz_5_1;
QLineEdit *lineEdit_cspz_5_2;
QLineEdit *lineEdit_cspz_5_3;
QLineEdit *lineEdit_cspz_5_4;
QLineEdit *lineEdit_cspz_5_5;
QLineEdit *lineEdit_cspz_5_6;
QLineEdit *lineEdit_cspz_5_7;
QPushButton *button_cspz_5_1;
QPushButton *button_cspz_5_2;
QPushButton *button_cspz_5_3;
QPushButton *button_cspz_5_4;
QPushButton *button_cspz_5_5;
QFrame *line_cspz_5_1;
QLabel *label_cspz_6_1;//无线测温地址修改页面label1
QLabel *label_cspz_6_2;
QLabel *label_cspz_6_3;
QLabel *label_cspz_6_4;
QLabel *label_cspz_6_5;
QLabel *label_cspz_6_6;
QLabel *label_cspz_6_7;
QLabel *label_cspz_6_8;
QLabel *label_cspz_6_9;
QLabel *label_cspz_6_10;
QLabel *label_cspz_6_11;
QLabel *label_cspz_6_12;
QLabel *label_cspz_6_13;
QLabel *label_cspz_6_14;
QLabel *label_cspz_6_15;
QLabel *label_cspz_6_16;
QLabel *label_cspz_6_17;
QLabel *label_cspz_6_18;
QLabel *label_cspz_6_19;
QLabel *label_cspz_6_20;
QLabel *label_cspz_6_21;
QLabel *label_cspz_6_22;
QLabel *label_cspz_6_23;
QLabel *label_cspz_6_24;
QLabel *label_cspz_6_25;
QLabel *label_cspz_6_26;
QLabel *label_cspz_6_27;
QLabel *label_cspz_6_28;
QLabel *label_cspz_6_29;
QLabel *label_cspz_6_30;
QLabel *label_cspz_6_31;//保存成功提示
QLineEdit *lineEdit_cspz_6_1;
QLineEdit *lineEdit_cspz_6_2;
QLineEdit *lineEdit_cspz_6_3;
QLineEdit *lineEdit_cspz_6_4;
QLineEdit *lineEdit_cspz_6_5;
QLineEdit *lineEdit_cspz_6_6;
QLineEdit *lineEdit_cspz_6_7;
QLineEdit *lineEdit_cspz_6_8;
QLineEdit *lineEdit_cspz_6_9;
QLineEdit *lineEdit_cspz_6_10;
QLineEdit *lineEdit_cspz_6_11;
QLineEdit *lineEdit_cspz_6_12;
QLineEdit *lineEdit_cspz_6_13;
QLineEdit *lineEdit_cspz_6_14;
QLineEdit *lineEdit_cspz_6_15;
QLineEdit *lineEdit_cspz_6_16;
QLineEdit *lineEdit_cspz_6_17;
QLineEdit *lineEdit_cspz_6_18;
QLineEdit *lineEdit_cspz_6_19;
QLineEdit *lineEdit_cspz_6_20;
QLineEdit *lineEdit_cspz_6_21;
QLineEdit *lineEdit_cspz_6_22;
QLineEdit *lineEdit_cspz_6_23;
QLineEdit *lineEdit_cspz_6_24;
QLineEdit *lineEdit_cspz_6_25;
QLineEdit *lineEdit_cspz_6_26;
QLineEdit *lineEdit_cspz_6_27;
QLineEdit *lineEdit_cspz_6_28;
QLineEdit *lineEdit_cspz_6_29;
QLineEdit *lineEdit_cspz_6_30;
QPushButton *button_cspz_6_1;
QPushButton *button_cspz_6_2;
QPushButton *button_cspz_6_3;
QPushButton *button_cspz_6_4;
QLabel *label_cspz_wirename_1;//无线测温name修改页面
QLabel *label_cspz_wirename_2;
QLabel *label_cspz_wirename_3;
QLabel *label_cspz_wirename_4;
QLabel *label_cspz_wirename_5;
QLabel *label_cspz_wirename_6;
QLabel *label_cspz_wirename_7;
QLabel *label_cspz_wirename_8;
QLabel *label_cspz_wirename_9;
QLabel *label_cspz_wirename_10;
QLabel *label_cspz_wirename_11;
QLabel *label_cspz_wirename_12;
QLabel *label_cspz_wirename_13;
QLabel *label_cspz_wirename_14;
QLabel *label_cspz_wirename_15;
QLabel *label_cspz_wirename_16;
QLabel *label_cspz_wirename_17;
QLabel *label_cspz_wirename_18;
QLabel *label_cspz_wirename_19;
QLabel *label_cspz_wirename_20;
QLabel *label_cspz_wirename_21;
QLabel *label_cspz_wirename_22;
QLabel *label_cspz_wirename_23;
QLabel *label_cspz_wirename_24;
QLabel *label_cspz_wirename_25;
QLabel *label_cspz_wirename_26;
QLabel *label_cspz_wirename_27;
QLabel *label_cspz_wirename_28;
QLabel *label_cspz_wirename_29;
QLabel *label_cspz_wirename_30;
QLabel *label_cspz_wirename_save;//保存成功提示
QLineEdit *lineEdit_cspz_wirename_1;
QLineEdit *lineEdit_cspz_wirename_2;
QLineEdit *lineEdit_cspz_wirename_3;
QLineEdit *lineEdit_cspz_wirename_4;
QLineEdit *lineEdit_cspz_wirename_5;
QLineEdit *lineEdit_cspz_wirename_6;
QLineEdit *lineEdit_cspz_wirename_7;
QLineEdit *lineEdit_cspz_wirename_8;
QLineEdit *lineEdit_cspz_wirename_9;
QLineEdit *lineEdit_cspz_wirename_10;
QLineEdit *lineEdit_cspz_wirename_11;
QLineEdit *lineEdit_cspz_wirename_12;
QLineEdit *lineEdit_cspz_wirename_13;
QLineEdit *lineEdit_cspz_wirename_14;
QLineEdit *lineEdit_cspz_wirename_15;
QLineEdit *lineEdit_cspz_wirename_16;
QLineEdit *lineEdit_cspz_wirename_17;
QLineEdit *lineEdit_cspz_wirename_18;
QLineEdit *lineEdit_cspz_wirename_19;
QLineEdit *lineEdit_cspz_wirename_20;
QLineEdit *lineEdit_cspz_wirename_21;
QLineEdit *lineEdit_cspz_wirename_22;
QLineEdit *lineEdit_cspz_wirename_23;
QLineEdit *lineEdit_cspz_wirename_24;
QLineEdit *lineEdit_cspz_wirename_25;
QLineEdit *lineEdit_cspz_wirename_26;
QLineEdit *lineEdit_cspz_wirename_27;
QLineEdit *lineEdit_cspz_wirename_28;
QLineEdit *lineEdit_cspz_wirename_29;
QLineEdit *lineEdit_cspz_wirename_30;
QPushButton *button_cspz_wirename_1;
QPushButton *button_cspz_wirename_2;
QPushButton *button_cspz_wirename_3;
QPushButton *button_cspz_wirename_4;
};
#endif // CANSHUPEIZHI_H

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>canshupeizhi</class>
<widget class="QWidget" name="canshupeizhi">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>480</height>
</rect>
</property>
<property name="cursor">
<cursorShape>BlankCursor</cursorShape>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="pushButton_zhujiemian">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>366</x>
<y>47</y>
<width>83</width>
<height>70</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/image/image/1.png);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_1">
<property name="geometry">
<rect>
<x>358</x>
<y>40</y>
<width>100</width>
<height>131</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(0, 171, 171);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_zhongduan">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>321</width>
<height>101</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">font: 9pt &quot;隶书&quot;;
font: 9pt &quot;隶书&quot;;
color: rgb(0, 50, 75);</string>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:48pt; font-weight:600; font-style:italic;&quot;&gt;智能终端&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="scaledContents">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="pushButton_wangluoxinxi">
<property name="geometry">
<rect>
<x>480</x>
<y>47</y>
<width>83</width>
<height>70</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/image/image/2.png);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>695</x>
<y>40</y>
<width>100</width>
<height>131</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(0, 171, 171);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_6">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>10</x>
<y>130</y>
<width>781</width>
<height>311</height>
</rect>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(145, 145, 145);
color: rgb(8, 8, 13);</string>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>471</x>
<y>40</y>
<width>100</width>
<height>131</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(0, 171, 171);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QPushButton" name="pushButton_xitongshezhi">
<property name="geometry">
<rect>
<x>704</x>
<y>47</y>
<width>83</width>
<height>70</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/image/image/4.png);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>5</x>
<y>126</y>
<width>790</width>
<height>321</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(225, 132, 24);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QPushButton" name="pushButton_canshushezhi">
<property name="geometry">
<rect>
<x>592</x>
<y>47</y>
<width>83</width>
<height>70</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">border-image: url(:/image/image/3.png);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>140</y>
<width>780</width>
<height>45</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>480</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>584</x>
<y>40</y>
<width>100</width>
<height>131</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: rgb(225, 132, 24);</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<zorder>label</zorder>
<zorder>label_1</zorder>
<zorder>label_3</zorder>
<zorder>label_4</zorder>
<zorder>label_2</zorder>
<zorder>label_5</zorder>
<zorder>pushButton_zhujiemian</zorder>
<zorder>label_zhongduan</zorder>
<zorder>pushButton_wangluoxinxi</zorder>
<zorder>label_6</zorder>
<zorder>pushButton_xitongshezhi</zorder>
<zorder>pushButton_canshushezhi</zorder>
<zorder>textEdit</zorder>
</widget>
<resources/>
<connections/>
</ui>

@ -0,0 +1,244 @@
#include "communications.h"
#include <QObject>
#include <QThread>
#include <QSerialPort>
#include <QTcpSocket>
#include <QUdpSocket>
#include <QHostAddress>
#include <QMutex>
#include <QDebug>
void CommunicationBase::run()
{
while(1){
processFrameData();
forwardMutex.lock();
int size =forwardByteArrayList.count();
forwardMutex.unlock();
if(size >0){
forwardMutex.lock();
QByteArray byteArray =forwardByteArrayList.at(0);
forwardByteArrayList.removeAt(0);
forwardMutex.unlock();
forwardMsg(byteArray);
}
uploadMutex.lock();
size =uploadByteArrayList.count();
uploadMutex.unlock();
if(size >0){
uploadMutex.lock();
QByteArray byteArray =uploadByteArrayList.at(0);
uploadByteArrayList.removeAt(0);
uploadMutex.unlock();
uploadServerMsg(byteArray);
}
}
}
void CommunicationBase::forwardMsgSlot(const QByteArray& byteArray)
{
forwardMutex.lock();
forwardByteArrayList.append(byteArray);
forwardMutex.unlock();
}
void CommunicationBase::uploadServerMsgSlot(const QByteArray& byteArray)
{
uploadMutex.lock();
uploadByteArrayList.append(byteArray);
uploadMutex.unlock();
}
void CommunicationBase::restart()
{
close();
open();
}
CommunicationSerialPort::CommunicationSerialPort(const QString &name,
QSerialPort::BaudRate baud,
QObject *parent)
: CommunicationBase(parent)
{
portName =name;
m_baud =baud;
m_serialPort =NULL;
}
CommunicationSerialPort::~CommunicationSerialPort()
{
close();
}
bool CommunicationSerialPort::open()
{
bool result = true;
m_serialPort = new QSerialPort(portName);
m_serialPort->setBaudRate(m_baud);
m_serialPort->setFlowControl(QSerialPort::NoFlowControl);//FLOW_OFF//
m_serialPort->setParity(QSerialPort::EvenParity);
m_serialPort->setDataBits(QSerialPort::Data8);
m_serialPort->setStopBits(QSerialPort::OneStop);
if(!m_serialPort->isOpen()){
result = m_serialPort->open(QIODevice::ReadWrite);
m_serialPort->setTextModeEnabled(false);
}
return result;
}
QSerialPort *CommunicationSerialPort::getSerialPort(){
return m_serialPort;
}
void CommunicationSerialPort::close()
{
if(m_serialPort !=NULL){
if(m_serialPort->isOpen()){
m_serialPort->close();
}
delete m_serialPort;
m_serialPort =NULL;
}
}
bool CommunicationSerialPort::send(const QByteArray& byteArray)
{
m_serialPort->write(byteArray);
return true;
}
QByteArray CommunicationSerialPort::readAll(){
QByteArray data = m_serialPort->readAll();
return data;
}
void CommunicationSerialPort::modify(const QString &name, QSerialPort::BaudRate baud)
{
portName =name;
m_baud =baud;
}
CommunicationTcpSocket::CommunicationTcpSocket(const QString &hostIpAddress,
quint16 port,
QObject *parent)
: CommunicationBase(parent)
{
m_tcpSocket = NULL;
peekAddress =QHostAddress(hostIpAddress);
peekPort =port;
}
CommunicationTcpSocket::~CommunicationTcpSocket()
{
close();
}
bool CommunicationTcpSocket::open()
{
QDEBUG(objectName());
if(m_tcpSocket ==NULL){
m_tcpSocket = new QTcpSocket();
m_tcpSocket->bind(QHostAddress::Any);
}
m_tcpSocket->connectToHost(peekAddress, peekPort);
m_tcpSocket->waitForConnected();
connect(m_tcpSocket, SIGNAL(readyRead()), this, SLOT(received()));
connect(m_tcpSocket, SIGNAL(disconnected()), this, SLOT(disconnected()));
m_tcpSocket->write(objectName().toLocal8Bit());
m_tcpSocket->flush();
return m_tcpSocket->isValid();
}
void CommunicationTcpSocket::close()
{
if(m_tcpSocket !=NULL){
disconnect(m_tcpSocket, SIGNAL(readyRead()), this, SLOT(received()));
disconnect(m_tcpSocket, SIGNAL(disconnected()), this, SLOT(disconnected()));
m_tcpSocket->disconnectFromHost();
delete m_tcpSocket;
m_tcpSocket = NULL;
}
}
bool CommunicationTcpSocket::send(const QByteArray& byteArray)
{
m_tcpSocket->write(byteArray);
}
void CommunicationTcpSocket::modify(const QString &hostIpAddress, quint16 port)
{
peekAddress =QHostAddress(hostIpAddress);
peekPort =port;
}
void CommunicationTcpSocket::received()
{
QByteArray byteArray =m_tcpSocket->readAll();
QDEBUG(objectName() <<byteArray);
rcvByteArray.append(byteArray);
}
void CommunicationTcpSocket::disconnected()
{
restart();
}
CommunicationUdpSocket::CommunicationUdpSocket(const QString &hostIpAddress,
quint16 port,
QObject *parent)
: CommunicationBase(parent)
{
m_udpSocket = NULL;
peekAddress =QHostAddress(hostIpAddress);
peekPort =port;
}
CommunicationUdpSocket::~CommunicationUdpSocket()
{
close();
}
bool CommunicationUdpSocket::open()
{
if(m_udpSocket ==NULL){
m_udpSocket = new QUdpSocket();
m_udpSocket->bind(QHostAddress::Any);
}
return true;
}
void CommunicationUdpSocket::close()
{
if(m_udpSocket !=NULL){
delete m_udpSocket;
m_udpSocket = NULL;
}
}
bool CommunicationUdpSocket::send(const QByteArray&)
{
}
void CommunicationUdpSocket::modify(const QString &hostIpAddress, quint16 port)
{
peekAddress =QHostAddress(hostIpAddress);
peekPort =port;
}

@ -0,0 +1,146 @@
#ifndef COMMUNICATIONS_H
#define COMMUNICATIONS_H
#include <QObject>
#include <QThread>
#include <QSerialPort>
#include <QTcpSocket>
#include <QUdpSocket>
#include <QHostAddress>
#include <QMutex>
#include <QDebug>
#define QDEBUG(x) (qDebug() <<__FUNCTION__ <<x)
class ProcotolBase : public QObject
{
Q_OBJECT
public:
explicit ProcotolBase(QObject *parent = 0)
: QObject(parent)
{
}
~ProcotolBase(){
}
virtual bool setFrameData(QByteArray&);
QByteArray getByteArray(){
return(contentByteArray);
}
quint32 getTypeId(){
return(typeId);
}
public:
quint32 typeId;
QByteArray contentByteArray;
};
class CommunicationBase : public QThread
{
Q_OBJECT
public:
explicit CommunicationBase(QObject *parent = 0): QThread(parent) {}
virtual bool open() {return true;}
virtual void close();
virtual bool send(const QByteArray&) ;
virtual void run();
private:
virtual void processFrameData(){}
virtual bool forwardMsg(const QByteArray&);
virtual bool uploadServerMsg(const QByteArray&);
signals:
void emitForwardMsg(const QByteArray&);
void emitUploadServerMsg(const QByteArray&);
void emitSaveLocalMsg(const QByteArray&);
public slots:
virtual void forwardMsgSlot(const QByteArray&);
virtual void uploadServerMsgSlot(const QByteArray&);
virtual void received() {}
virtual void restart();
protected:
QMutex forwardMutex;
QMutex uploadMutex;
QByteArray rcvByteArray;
QList<QByteArray> forwardByteArrayList;
QList<QByteArray> uploadByteArrayList;
};
class CommunicationSerialPort : public CommunicationBase
{
Q_OBJECT
public:
explicit CommunicationSerialPort(const QString &name,
QSerialPort::BaudRate baud =QSerialPort::Baud115200,
QObject *parent = 0);
~CommunicationSerialPort();
virtual bool open();
virtual void close();
virtual bool send(const QByteArray&);
void modify(const QString &name, QSerialPort::BaudRate baud);
QSerialPort *getSerialPort();
signals:
public slots:
QByteArray readAll();
private:
QString portName;
QSerialPort::BaudRate m_baud;
QSerialPort* m_serialPort;
};
class CommunicationTcpSocket : public CommunicationBase
{
Q_OBJECT
public:
explicit CommunicationTcpSocket(const QString &hostIpAddress,
quint16 port,
QObject *parent = 0);
~CommunicationTcpSocket();
virtual bool open();
virtual void close();
virtual bool send(const QByteArray&);
void modify(const QString &hostIpAddress, quint16 port);
signals:
public slots:
virtual void received();
void disconnected();
private:
QTcpSocket* m_tcpSocket;
QHostAddress peekAddress;
quint16 peekPort;
};
class CommunicationUdpSocket : public CommunicationBase
{
Q_OBJECT
public:
explicit CommunicationUdpSocket(const QString &hostIpAddress,
quint16 port,
QObject *parent = 0);
~CommunicationUdpSocket();
virtual bool open();
virtual void close();
virtual bool send(const QByteArray&);
void modify(const QString &hostIpAddress, quint16 port);
signals:
public slots:
private:
QUdpSocket* m_udpSocket;
QHostAddress peekAddress;
quint16 peekPort;
};
#endif // COMMUNICATIONS_H

@ -0,0 +1,439 @@
#include "excelengine.h"
#include "qt_windows.h"
#include <QDebug>
#define QDEBUG(x) (qDebug() <<__FUNCTION__ <<x)
ExcelEngine::ExcelEngine()
{
pExcel = NULL;
pWorkbooks = NULL;
pWorkbook = NULL;
pWorksheet = NULL;
sXlsFile = "";
nRowCount = 0;
nColumnCount = 0;
nStartRow = 0;
nStartColumn = 0;
bIsOpen = false;
bIsValid = false;
bIsANewFile = false;
bIsSaveAlready = false;
HRESULT r = OleInitialize(0);
if (r != S_OK && r != S_FALSE)
{
qDebug("Qt: Could not initialize OLE (error %x)", (unsigned int)r);
}
}
ExcelEngine::ExcelEngine(QString xlsFile)
{
pExcel = NULL;
pWorkbooks = NULL;
pWorkbook = NULL;
pWorksheet = NULL;
sXlsFile = xlsFile;
nRowCount = 0;
nColumnCount = 0;
nStartRow = 0;
nStartColumn = 0;
bIsOpen = false;
bIsValid = false;
bIsANewFile = false;
bIsSaveAlready = false;
HRESULT r = OleInitialize(0);
if (r != S_OK && r != S_FALSE)
{
qDebug("Qt: Could not initialize OLE (error %x)", (unsigned int)r);
}
}
ExcelEngine::~ExcelEngine()
{
if ( bIsOpen )
{
//析构前先保存数据然后关闭workbook
Close();
}
OleUninitialize();
}
/**
*@brief sXlsFileexcel
*@return true :
* false:
*/
bool ExcelEngine::Open(UINT nSheet, bool visible)
{
if ( bIsOpen )
{
//return bIsOpen;
//Close();
}
nCurrSheet = nSheet;
bIsVisible = visible;
if ( NULL == pExcel )
{
pExcel = new QAxObject("Excel.Application");
if ( pExcel )
{
bIsValid = true;
}
else
{
bIsValid = false;
bIsOpen = false;
return bIsOpen;
}
pExcel->dynamicCall("SetVisible(bool)", bIsVisible);
}
if ( !bIsValid )
{
bIsOpen = false;
return bIsOpen;
}
if ( sXlsFile.isEmpty() )
{
bIsOpen = false;
return bIsOpen;
}
/*如果指向的文件不存在,则需要新建一个*/
QFile f(sXlsFile);
if (!f.exists())
{
bIsANewFile = true;
}
else
{
bIsANewFile = false;
}
if (!bIsANewFile)
{
pWorkbooks = pExcel->querySubObject("WorkBooks"); //获取工作簿
pWorkbook = pWorkbooks->querySubObject("Open(QString, QVariant)",sXlsFile,QVariant(0)); //打开xls对应的工作簿
QAxObject *workBook = pExcel->querySubObject("ActiveWorkBook");
pSheets =workBook->querySubObject("Sheets");
sheetcounts=pSheets->property("Count").toInt();
}
else
{
pWorkbooks = pExcel->querySubObject("WorkBooks"); //获取工作簿
pWorkbooks->dynamicCall("Add"); //添加一个新的工作薄
pWorkbook = pExcel->querySubObject("ActiveWorkBook"); //新建一个xls
}
pWorksheet = pWorkbook->querySubObject("WorkSheets(int)", nCurrSheet);//打开第一个sheet
//至此已打开,开始获取相应属性
QAxObject *usedrange = pWorksheet->querySubObject("UsedRange");//获取该sheet的使用范围对象
QAxObject *rows = usedrange->querySubObject("Rows");
QAxObject *columns = usedrange->querySubObject("Columns");
//因为excel可以从任意行列填数据而不一定是从0,0开始因此要获取首行列下标
nStartRow = usedrange->property("Row").toInt(); //第一行的起始位置
nStartColumn = usedrange->property("Column").toInt(); //第一列的起始位置
nRowCount = rows->property("Count").toInt(); //获取行数
nColumnCount = columns->property("Count").toInt(); //获取列数
bIsOpen = true;
return bIsOpen;
}
/**
*@brief Open()
*/
bool ExcelEngine::Open(QString xlsFile, UINT nSheet, bool visible)
{
sXlsFile = xlsFile;
nCurrSheet = nSheet;
bIsVisible = visible;
return Open(nCurrSheet,bIsVisible);
}
/**
*@brief
*/
void ExcelEngine::Save()
{
if ( pWorkbook )
{
if (bIsSaveAlready)
{
return ;
}
if (!bIsANewFile)
{
pWorkbook->dynamicCall("Save()");
}
else /*如果该文档是新建出来的则使用另存为COM接口*/
{
QDEBUG(sXlsFile);
pWorkbook->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",
sXlsFile,56,QString(""),QString(""),false,false);
}
bIsSaveAlready = true;
}
}
/**
*@brief Excel COM
*/
void ExcelEngine::Close()
{
//关闭前先保存数据
Save();
if ( pExcel && pWorkbook )
{
pWorkbook->dynamicCall("Close(bool)", true);
pExcel->dynamicCall("Quit()");
delete pExcel;
pExcel = NULL;
bIsOpen = false;
bIsValid = false;
bIsANewFile = false;
bIsSaveAlready = true;
}
}
/**
*@brief tableWidgetexcel
*@param tableWidget : GUItablewidget
*@return true :
* false:
*/
bool ExcelEngine::SaveDataFrTable(QTableWidget *tableWidget)
{
if ( NULL == tableWidget )
{
return false;
}
if ( !bIsOpen )
{
return false;
}
int tableR = tableWidget->rowCount();
int tableC = tableWidget->columnCount();
//获取表头写做第一行
for (int i=0; i<tableC; i++)
{
if ( tableWidget->horizontalHeaderItem(i) != NULL )
{
this->SetCellData(1,i+1,tableWidget->horizontalHeaderItem(i)->text());
}
}
//写数据
for (int i=0; i<tableR; i++)
{
for (int j=0; j<tableC; j++)
{
if ( tableWidget->item(i,j) != NULL )
{
this->SetCellData(i+2,j+1,tableWidget->item(i,j)->text());
}
}
}
//保存
Save();
return true;
}
/**
*@brief xlstableWidget
*@param tableWidget : tablewidget
*@return true :
* false:
*/
//bool ExcelEngine::ReadDataToTable(QTableWidget *tableWidget)
bool ExcelEngine::ReadDataToTable( )
{
// if ( NULL == tableWidget )
// {
// return false;
// }
// //先把table的内容清空
// int tableColumn = tableWidget->columnCount();
// tableWidget->clear();
// for (int n=0; n<tableColumn; n++)
// {
// tableWidget->removeColumn(0);
// }
int rowcnt = nStartRow + nRowCount;
int columncnt = 13;//nStartColumn + nColumnCount;
//获取excel中的第一行数据作为表头
QStringList headerList;
for(int i =nStartRow; i<rowcnt; i++)
{
QString qstring;
for (int n = nStartColumn; n<columncnt; n++ )
{
QAxObject * cell = pWorksheet->querySubObject("Cells(int,int)", i, n);//nStartRow
if ( cell )
{
headerList<<cell->dynamicCall("Value2()").toString();
qstring.append(cell->dynamicCall("Value2()").toString()).append(" ");
//qDebug()<<cell->dynamicCall("Value2()").toString();
QFile file_write("/home/data/usb_excel_data");//文件路径
if(file_write.open(QIODevice::WriteOnly|QIODevice::Append))
{
QTextStream setLORA_data(&file_write);
setLORA_data<<cell->dynamicCall("Value2()").toString()<<endl;
}
file_write.close();
}
}
// QDEBUG(qstring);
}
//重新创建表头
// tableWidget->setColumnCount(nColumnCount);
// tableWidget->setHorizontalHeaderLabels(headerList);
// //插入新数据
// for (int i = nStartRow+1, r = 0; i < rowcnt; i++, r++ ) //行
// {
// tableWidget->insertRow(r); //插入新行
// for (int j = nStartColumn, c = 0; j < columncnt; j++, c++ ) //列
// {
// QAxObject * cell = pWorksheet->querySubObject("Cells(int,int)", i, j );//获取单元格
// //在r新行中添加子项数据
// if ( cell )
// {
// tableWidget->setItem(r,c,new QTableWidgetItem(cell->dynamicCall("Value2()").toString()));
// }
// }
// }
return true;
}
/**
*@brief
*@param row :
*@param column :
*@return [row,column]
*/
QVariant ExcelEngine::GetCellData(UINT row, UINT column)
{
QVariant data;
QAxObject *cell = pWorksheet->querySubObject("Cells(int,int)",row,column);//获取单元格对象
if ( cell )
{
data = cell->dynamicCall("Value2()");
}
return data;
}
/**
*@brief
*@param row :
*@param column :
*@param data :
*@return true :
* false:
*/
bool ExcelEngine::SetCellData(UINT row, UINT column, QVariant data)
{
bool op = false;
QAxObject *cell = pWorksheet->querySubObject("Cells(int,int)",row,column);//获取单元格对象
if ( cell )
{
QString strData = data.toString(); //excel 居然只能插入字符串和整型,浮点型无法插入
cell->dynamicCall("SetValue(const QVariant&)",strData); //修改单元格的数据
op = true;
}
else
{
op = false;
}
return op;
}
/**
*@brief
*/
void ExcelEngine::Clear()
{
sXlsFile = "";
nRowCount = 0;
nColumnCount = 0;
nStartRow = 0;
nStartColumn = 0;
}
/**
*@brief excel
*@return true :
* false:
*/
bool ExcelEngine::IsOpen()
{
return bIsOpen;
}
/**
*@brief excel COMexcel
*@return true :
* false:
*/
bool ExcelEngine::IsValid()
{
return bIsValid;
}
/**
*@brief excel
*/
UINT ExcelEngine::GetRowCount()const
{
return nRowCount;
}
/**
*@brief excel
*/
UINT ExcelEngine::GetColumnCount()const
{
return nColumnCount;
}
QString ExcelEngine::GetSheetName(int i)
{
QAxObject* pWorksheettemp=pWorkbook->querySubObject("WorkSheets(int)", i);
return pWorksheettemp->property("Name").toString();
}

@ -0,0 +1,79 @@
#ifndef EXCELENGINE_H
#define EXCELENGINE_H
#include <QObject>
#include <QFile>
#include <QString>
#include <QStringList>
#include <QVariant>
#include <QAxBase>
#include <QAxObject>
#include <QTableWidget>
#include <QTableView>
#include <QTableWidgetItem>
#include <QDebug>
typedef unsigned int UINT;
/**
*@brief 便Qtexcel便excel
*excelGUI
*Qt tableWidget <--> ExcelEngine <--> xls file.
*
*@note ExcelEngine/
*@author yaoboyuan 254200341@qq.com
*@date 2012-4-12
*/
class ExcelEngine : protected QObject
{
public:
ExcelEngine();
ExcelEngine(QString xlsFile);
~ExcelEngine();
public:
bool Open(UINT nSheet = 1, bool visible = false);//打开xls文件
bool Open(QString xlsFile, UINT nSheet = 1, bool visible = false);
void Save(); //保存xls报表
void Close(); //关闭xls报表
bool SaveDataFrTable(QTableWidget *tableWidget); //保存数据到xls
//bool ReadDataToTable(QTableWidget *tableWidget); //从xls读取数据到ui
bool ReadDataToTable(); //从xls读取数据到ui
QVariant GetCellData(UINT row, UINT column); //获取指定单元数据
bool SetCellData(UINT row, UINT column, QVariant data); //修改指定单元数据
UINT GetRowCount()const;
UINT GetColumnCount()const;
QString GetSheetName(int i);
bool IsOpen();
bool IsValid();
//还有缺点
int sheetcounts;
protected:
void Clear();
private:
QAxObject *pExcel; //指向整个excel应用程序
QAxObject *pWorkbooks; //指向工作簿集,excel有很多工作簿
QAxObject *pWorkbook; //指向sXlsFile对应的工作簿
QAxObject *pWorksheet; //指向工作簿中的某个sheet表单
QAxObject *pSheets;
QString sXlsFile; //xls文件路径
UINT nCurrSheet; //当前打开的第几个sheet
bool bIsVisible; //excel是否可见
int nRowCount; //行数
int nColumnCount; //列数
int nStartRow; //开始有数据的行下标值
int nStartColumn; //开始有数据的列下标值
bool bIsOpen; //是否已打开
bool bIsValid; //是否有效
bool bIsANewFile; //是否是一个新建xls文件用来区分打开的excel是已存在文件还是有本类新建的
bool bIsSaveAlready;//防止重复保存
};
#endif // EXCELENGINE_H

@ -0,0 +1,8 @@
SUBDIRS += \
$$PWD/exceltest.pro
HEADERS += \
$$PWD/excelengine.h
SOURCES += \
$$PWD/excelengine.cpp

@ -0,0 +1,28 @@
QT -= gui
QT += axcontainer
CONFIG += c++11 console
CONFIG -= app_bundle
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked 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
# You can also make your code fail to compile if it uses 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
SOURCES += \
excelengine.cpp \
main.cpp
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
excelengine.h

@ -0,0 +1,340 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.12.2, 2022-05-23T16:09:48. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{16b8ce7a-4d8d-469a-892e-33aa4f839844}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">4</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.12.9 MinGW 32-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5129.win32_mingw73_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\QT_project\ZDBYQ\build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/QT_project/ZDBYQ/build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="int" key="QtQuickCompiler">2</value>
<value type="int" key="SeparateDebugInfo">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">2</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\QT_project\ZDBYQ\build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/QT_project/ZDBYQ/build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="bool">true</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\QT_project\ZDBYQ\build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">E:/QT_project/ZDBYQ/build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/QT_project/ZDBYQ/exceltest/exceltest.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">E:/QT_project/ZDBYQ/exceltest/exceltest.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/QT_project/ZDBYQ/build-exceltest-Desktop_Qt_5_12_9_MinGW_32_bit-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

@ -0,0 +1,29 @@
<RCC>
<qresource prefix="/image">
<file>image/4G.png</file>
<file>image/canshu.png</file>
<file>image/LORA.png</file>
<file>image/shengyin.png</file>
<file>image/shezhi.png</file>
<file>image/tubiao.jpeg</file>
<file>image/wifi.png</file>
<file>image/WIFI2.png</file>
<file>image/yitaiyang.png</file>
<file>image/yunxin.png</file>
<file>image/yunxing.png</file>
<file>image/zhujiemian.png</file>
<file>image/jingyin.png</file>
<file>image/1.png</file>
<file>image/2.png</file>
<file>image/3.png</file>
<file>image/4.png</file>
<file>ziku/ziku.qrc</file>
<file>image/WIFI2-disconnect.png</file>
<file>image/4G_disconnect.png</file>
<file>image/4G_low_quility.png</file>
<file>image/yitaiyang_disconnect.png</file>
</qresource>
<qresource prefix="/ziku1">
<file>ziku/ziku.dat</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save