commit b14346121e5354a3b5ed07eeefe50af7b9eab51c Author: leo Date: Fri Oct 24 18:22:20 2025 +0800 Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ee17e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,817 @@ +# This file is used to ignore files which are generated + +# ---------------------------------------------------------------------------- + + + +*~ + +*.autosave + +*.a + +*.core + +*.moc + +*.o + +*.obj + +*.orig + +*.rej + +*.so + +*.so.* + +*_pch.h.cpp + +*_resource.rc + +*.qm + +.#* + +*.*# + +core + +!core/ + +tags + +.DS_Store + +.directory + +*.debug + +Makefile* + +*.prl + +*.app + +moc_*.cpp + +ui_*.h + +qrc_*.cpp + +Thumbs.db + +*.res + +*.rc + +/.qmake.cache + +/.qmake.stash + + + +# qtcreator generated files + +*.pro.user* + +*.qbs.user* + +CMakeLists.txt.user* + + + +# xemacs temporary files + +*.flc + + + +# Vim temporary files + +.*.swp + + + +# Visual Studio generated files + +*.ib_pdb_index + +*.idb + +*.ilk + +*.pdb + +*.sln + +*.suo + +*.vcproj + +*vcproj.*.*.user + +*.ncb + +*.sdf + +*.opensdf + +*.vcxproj + +*vcxproj.* + + + +# MinGW generated files + +*.Debug + +*.Release + + + +# Python byte code + +*.pyc + + + +# Binaries + +# -------- + +*.dll + +*.exe + + + +# Directories with generated files + +.moc/ + +.obj/ + +.pch/ + +.rcc/ + +.uic/ + +/build*/ + +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qmake.stash +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/Makefile +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/Makefile.Debug +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/Makefile.Release +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/ui_dialogcamset.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/ui_mainwindow.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/compile_commands.json +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_bit_utils.hpp.913E311580B1329C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_chrono.hpp.96B58A163DC37450.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_heap_algorithms.hpp.24108C346DADB8A2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_iter_core.hpp.7EE037E93B8F6B23.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_minmax.hpp.2C4602DB33F742BF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_sanitizer_annotate_container.hpp.6F393BF6432F5F9A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_string_view.hpp.018ECA431FDDF4C7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_system_error_abi.hpp.2ED9ED92C116BC79.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__msvc_threads_core.hpp.2BC2FF0C14677BB9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg___gnuc_va_list.h.72E5E2A3EDDDABE8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg___va_copy.h.D525C907C67B4BCE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg_header_macro.h.E0421E89EBB63C35.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg_va_arg.h.D101A7137CEE844A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg_va_copy.h.05BD405B6DFB0867.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stdarg_va_list.h.DF36992C3C8F2E80.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_header_macro.h.677179BC2413822C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_max_align_t.h.B8220EF5BA9D1B0C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_null.h.EEDFABA041F0D714.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_nullptr_t.h.C7C5D04D3AB95145.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_offsetof.h.58CB040ABA510397.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_ptrdiff_t.h.6CBBDFC710FB20B0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_size_t.h.C1CA6364FC108304.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__stddef_wchar_t.h.F7BD7701C6494EC2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__wmmintrin_aes.h.AB8A8D1C0FEBB08C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/__wmmintrin_pclmul.h.5ABDB7175FC6B184.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/adcintrin.h.DCF1AF4CC2A00C39.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/adxintrin.h.CE39E7F0ADEC3C88.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/algorithm.F21D90AEA5727812.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ammintrin.h.4D77DD5104CA7CD6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxavx512intrin.h.BBF2D9B3F0DAD87E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxbf16transposeintrin.h.3755BC95AAB515F0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxcomplexintrin.h.A1903029F0BBAC90.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxcomplextransposeintrin.h.0A9CBA8D824E099D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxfp8intrin.h.15297FFB9BA411FC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxfp16intrin.h.1A97BF2D01F22E97.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxfp16transposeintrin.h.0BA8EAD919A6793E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxintrin.h.563235F897964BC9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxmovrsintrin.h.E8A3C11BC1A8017C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxmovrstransposeintrin.h.DE3BBCC2FA5F35DC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxtf32intrin.h.F6D4A81EC5A0DE5F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxtf32transposeintrin.h.906CD6A228522AC4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/amxtransposeintrin.h.9AFE666F98B8A945.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/array.FEFD629224F4443D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/assert.h.4495694C56E84F62.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/atomic.3F01B0ED134DE869.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx2intrin.h.13A43A97620BBA8D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512bf16intrin.h.D9C8D14AA8C0932B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512convertintrin.h.4A95EC5142F7972E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512minmaxintrin.h.C7EC2A25337C491B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512niintrin.h.583FB38EFCF77EB3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512satcvtdsintrin.h.D2123774E4861228.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2_512satcvtintrin.h.5CE688783E4267B3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2bf16intrin.h.BE6C00245D65AF17.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2convertintrin.h.F21748F7A037A332.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2copyintrin.h.37E1E66D577796BD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2minmaxintrin.h.A40D1AE655A731BD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2niintrin.h.0D1443E61C7FEBE6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2satcvtdsintrin.h.F05320348E3AC18A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx10_2satcvtintrin.h.09252F969137EE56.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512bf16intrin.h.79C207F7BE86BF50.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512bitalgintrin.h.9768A2EADA695873.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512bwintrin.h.11C88189929BB131.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512cdintrin.h.E57027FE04DB7245.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512dqintrin.h.E70A1966FAA0C398.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512fintrin.h.57386503E16C57DF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512fp16intrin.h.F218A04E7F6EC8C2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512ifmaintrin.h.F86A89467E9531AA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512ifmavlintrin.h.5FE089DA0C2C718C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vbmi2intrin.h.9C474AFCE4094C46.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vbmiintrin.h.B54655E245E66D9C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vbmivlintrin.h.B72383F501B52588.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlbf16intrin.h.21728A255E4695E1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlbitalgintrin.h.37DC081A6C1E773C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlbwintrin.h.5AC262EEA18F73B5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlcdintrin.h.7026AEBA6FDDA644.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vldqintrin.h.8F37432E4BF174AB.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlfp16intrin.h.4A84950AC24DAED0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlintrin.h.CD7D6B4FF480CC40.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlvbmi2intrin.h.8E71E5B7D21C6824.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlvnniintrin.h.1273820FC578E4FC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vlvp2intersectintrin.h.BEC39B2C170C8536.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vnniintrin.h.B3C4E68D424455DD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vp2intersectintrin.h.6C69AB942C5B061E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vpopcntdqintrin.h.29E31C3FBDE3FC27.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avx512vpopcntdqvlintrin.h.71DD17E643FA0024.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxifmaintrin.h.7BBD7DCBF038594C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxintrin.h.4DB7E70722BE3B7C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxneconvertintrin.h.BBE801154F35611B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxvnniint8intrin.h.A765127555C29521.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxvnniint16intrin.h.FB9752F7D09CDA79.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/avxvnniintrin.h.323D31978C821324.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/bmi2intrin.h.85BD18191D9E1A44.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/bmiintrin.h.1BC7277FA0CC7BD8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/camhandler.cpp.D76656A522BAF0E3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/camhandler.h.978922633A1D589E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cctype.09FE2107CC744721.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cerrno.EF9140750A6445ED.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cetintrin.h.339DF388FC01F22D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cfloat.A3F49E498B0AFF31.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/chrono.9360FCF5B52F5624.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cldemoteintrin.h.BB2F9A847EADB6BC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/clflushoptintrin.h.CF47DA7AD3F63887.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/climits.09BE9D8CE5B25016.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/clwbintrin.h.B84268A1827E8B7C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/clzerointrin.h.4CC90A128A0D2F56.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cmath.6722B0177DA2D210.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cmpccxaddintrin.h.BD9C3E610A552603.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/concurrencysal.h.64E3674415D4090D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_malloc.h.2FC246BAE54EA85B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_math.h.F47BA8958C108B58.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_memcpy_s.h.CCE13D7A103E01AA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_memory.h.5F1894ECB07C0D3F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_search.h.5D13DF62D06F7AD9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_share.h.F4C355DF529CC87A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_stdio_config.h.6CC1006D82E2A76E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_terminate.h.B998053B011875F2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wconio.h.E3BE65D614030FC7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wctype.h.FE7554AC1DFAB589.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wdirect.h.BA01EF8EBE6BC5DA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wio.h.76B1131226A8CAF0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wprocess.h.B8DF61B6C3753589.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wstdio.h.9578E6574FE371E8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wstdlib.h.79B21B9B5E8DEBA6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wstring.h.CAEF78F6667C1903.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt_wtime.h.DA0A485F681AFDED.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/corecrt.h.AEC28EF03D0AF0B1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/crc32intrin.h.65BC7400175995EA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/crtdbg.h.631737C49256C956.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/crtdefs.h.58C6C810FA1CB132.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cstddef.5B87FFFFAAE0AC65.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cstdint.3A7187569EA06225.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cstdio.0A16F2D15B8B07AD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cstdlib.BFA6DF44CBB6EB69.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cstring.E9557407F41BEDE9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ctime.A5A490C9B86112E6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ctype.h.33FE2016834E93BA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/cwchar.A46720CF4E97BB4E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/dialogcamset.cpp.32F8BE9FAC1E8E0C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/dialogcamset.h.446A473AE5D388DF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/eh.h.714504E91963BCD3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/emmintrin.h.BACDBE8F3515774E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/enqcmdintrin.h.41DF8D32B662FC00.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/errno.h.5218F11A48B534A7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/exception.EAFE97D107264463.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/f16cintrin.h.2A1479FBF7707BFD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/float.h.36F06127F266400E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/float.h.A5ADF13588E5FFB9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/fma4intrin.h.BEF9505471FDBBE2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/fmaintrin.h.19736B63B0EDF190.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/functional.9A040946742A66EE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/fxsrintrin.h.AE99A320AC10C6E6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/gfniintrin.h.191DE1F90818E4A0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/hresetintrin.h.3139C89E698155FA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ia32intrin.h.645F4C802ACF9240.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/immintrin.h.2F91CEBAC26C9587.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/initializer_list.F454AECF4F54DEC9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/intrin.h.5A1A15505CE5AD6D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/intrin0.h.572EA65F2138C46C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/invpcidintrin.h.D8C26DC5C695C39C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/iosfwd.4CB32FC9DCE61BA2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/iterator.1A576D7B2D6C8539.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/keylockerintrin.h.2B1672C4AA8A74E7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/limits.1FE01FBC1D921496.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/limits.h.5F3781E17A8B9C58.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/limits.h.F76C102ED5A1EE8E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/list.BEA5A278E258506F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/lwpintrin.h.9EBE57F75F20A259.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/lzcntintrin.h.9EF683232D3D5CDB.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/main.cpp.FDBB2C1091F106E2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/mainwindow.cpp.D5716F9D71305E3C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/mainwindow.h.04854A07A672F571.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/malloc.h.90976375F5378F80.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/map.F46F3FFD9A657AFF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/math.h.C9C6AA89F40E3B6E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/memory.A44363C4726274F0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/mm_malloc.h.F3173B9705D36751.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/mmintrin.h.C0B1636E1F4A3901.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/movdirintrin.h.972F0736CFCCCE1D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/movrs_avx10_2_512intrin.h.E75D71E7E43147E9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/movrs_avx10_2intrin.h.20FD324DD143A287.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/movrsintrin.h.0E2DD427CE5E0327.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/mwaitxintrin.h.45D197970EE57208.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/new.08AFA5C3E8E28D7A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/numeric.5B9E7EC9064915D2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/optional.33712F45466B7D8C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/parameterhandler.cpp.60119FF2D986E02E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/parameterhandler.h.B8707AE8F734C58F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/pconfigintrin.h.7E6523CD3D701921.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/pkuintrin.h.59CF92F1C247B363.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/pmmintrin.h.E32C0F0E8F580829.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/popcntintrin.h.1FF64C342B61D5E4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/prfchiintrin.h.69FB17E5E37D55C3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/prfchwintrin.h.5C73B6B0596278F7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ptwriteintrin.h.EAC855FD768F0524.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvBaseLib.h.897774BCDA82D71F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvBuffer.h.81D00433833BDBB3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvBufferLib.h.99C79744039ABC80.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvChunkData.h.002956827101D655.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDevice.h.9B554F7CB1421FF0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceEnums.h.202578017488CA35.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceEventSink.h.578B757B3A52A5F3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceGEV.h.2B08893A4A99B2A6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceInfo.h.2E5CD18E039E6F62.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceInfoGEV.h.8E0385A9B6C44E64.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceInfoPleoraProtocol.h.508999D272256A39.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceInfoU3V.h.5E81BA9E14A00B07.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceInfoUSB.h.73BB31596BDC3020.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceLib.h.43A6417BBA346232.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvDeviceU3V.h.2A23DF7507D8098F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenApi.h.A9CDFE9A419012BE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenBoolean.h.99EF058CFC1FB353.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenCategory.h.0D273784F1648BAE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenCommand.h.6C00B9B1C0E8A5CA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenEnum.h.A130306D49C8C073.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenEnumEntry.h.263BC58C6AAAB183.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenFloat.h.507AAC6FEE3366E1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenICamLib.h.C46FB1FA16A63CEE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenInteger.h.FB53C3D7C28F2809.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenParameter.h.FE42D93A694B6245.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenParameterArray.h.E58AED6DA112D55B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenParameterList.h.E7619588C04654F0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenRegister.h.EE39C4828EE1B19F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenString.h.5E3A8C0ADF6E33DF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvGenTypes.h.A8C9BF5A2B82D5D2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvImage.h.4E32F0AC7B8E1D29.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvInterface.h.9AE38B09994FE300.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvLinkLib.h.32EDCE7521EDB8AF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvNetworkAdapter.h.68E837965B161C9F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvPayloadType.h.64BED1F989E60355.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvPixelType.h.7AE618C162692060.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvRawData.h.EACB86A2D9CE299E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvResult.h.D12F8D9FB7AC133D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvStream.h.A181D0A4F33CDE1C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvStreamEventSink.h.CECD281781DF1E62.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvStreamGEV.h.4E20562CD1A2E4DF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvStreamLib.h.48EBE2B869138305.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvStreamU3V.h.906DC209B2BA70D2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvString.h.C610DA4110D181B3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvSystem.h.31A947F6B3F777E3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvSystemEnums.h.CCC95CB198BCB720.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvSystemEventSink.h.480814C0A702C8FF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvSystemLib.h.4FFF131B8483F921.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvTypes.h.7E16A7A3A58D6B2A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/PvUSBHostController.h.6C13CB2F86D439C6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/q20memory.h.0CE33E7E01E978C8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/q20type_traits.h.09B2D9408E7C74F2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractbutton.h.CD71F1E300830A69.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractitemdelegate.h.69D25412E0B924A8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractitemmodel.h.207490011AD4D704.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractscrollarea.h.7D6FEEA4A349F4CC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractslider.h.4E58AA3001197841.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qabstractspinbox.h.B8B46BA8A459DAD6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qaction.h.1D0F2017F3A2AC2C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qalgorithms.h.C55558F900929915.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qanystringview.h.274CFE3E2723661C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QApplication.EB7A8AE3A7C9134E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qapplication.h.651853B6063DEA37.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qarraydata.h.604E8827F404D52B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qarraydataops.h.C41A9FD32BFF935B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qarraydatapointer.h.1C9E40476A4ECB5D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qassert.h.F3189ED10921AB09.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qatomic_cxx11.h.AD34648F72D51BC5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qatomic.h.2CAE129E21B05FE9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbasicatomic.h.7BCFCF7103E6A2A5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbasictimer.h.964D10B110EB480B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbindingstorage.h.FE55EEF4F60159E4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbitmap.h.96047A9D6E9EEB2F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qboxlayout.h.A292F44835F6BD13.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbrush.h.1B69C1EA62890653.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbytearray.h.8E5685EF46D7351F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbytearrayalgorithms.h.4FA528B9668BAEE2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbytearraylist.h.8E867B2FC4ACFEDA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qbytearrayview.h.5D3DA1CE39E5B415.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcalendar.h.B619276610C3EA45.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qchar.h.3BEB7ACB872B7E0C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcolor.h.998001EC30078406.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QComboBox.F8F63BACF159FE7D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcombobox.h.968AC6663DE81B38.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcompare_impl.h.EA2591818E1B81B1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcompare.h.33C52CA582B34D71.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcompilerdetection.h.412E6986C0756550.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qconfig.h.FE24F102AF4605DA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qconstructormacros.h.D69E53EE52B3B60D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcontainerfwd.h.E266F8F87D5F4E44.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcontainerinfo.h.8BE951365D0A7CCD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcontainertools_impl.h.5365FEF7F2762165.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcontiguouscache.h.A803D48A9832675D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcoreapplication_platform.h.ECCABD81B3F23B4E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcoreapplication.h.28A5FF3B57C07C59.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcoreevent.h.79E65DD650535155.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qcursor.h.66FF5D186E55E789.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qdarwinhelpers.h.FB7C4EAFFA99B52A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qdatastream.h.2E9CFEC511269DDE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QDateTime.5FA31A29A82A1760.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qdatetime.h.1B5427C8C56C4352.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QDebug.EB16F2CB9F7E6D37.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qdebug.h.B0964900B6ACDB47.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QDialog.7D9B30E43AF10F58.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qdialog.h.49233822B516EE6A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qeventloop.h.B172D3A51811101B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qexceptionhandling.h.3012160DE5878E50.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qflags.h.9DC8BBF35EEE609B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qfloat16.h.0320C6AA0647FD67.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qfont.h.531B9DF6646E902D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qfontinfo.h.AD0248DF541A38A4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qfontmetrics.h.1ED08F228BF70D70.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qforeach.h.F96B7E970E3A5451.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qframe.h.91430991CFEF5BE4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qfunctionpointer.h.552B74D7D93342F2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgenericatomic.h.CAB2D01F1843ADA1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qglobal.h.DF18C57DBE4EBEFA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qglobalstatic.h.5E20B767EFAF14C6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgraphicsitem.h.80407E18739C14EB.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QGraphicsPixmapItem.4563949359CB84AE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QGraphicsScene.2E97BF5C7752D8EF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgraphicsscene.h.1B7C36E0D4DD0187.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QGraphicsView.CA51DCCB1066DA1F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgraphicsview.h.BF12A2637417D864.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QGridLayout.C538DDB214247C2F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgridlayout.h.A02021844B56B746.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QGroupBox.BE8FC272A91BF537.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qgroupbox.h.9A25F0A5EF7BC1B0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qguiapplication_platform.h.3EEB448A378723FE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qguiapplication.h.8397822C9902B5F5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qhash.h.4C83E007B98557FC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qhashfunctions.h.F1BD08825EBC4B1E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qicon.h.7F26F86514DC2C80.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QImage.1D0B29B58D97D5ED.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qimage.h.2B48E31720812471.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qinputmethod.h.39157EE8EA10EC4D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qiodevice.h.08724C618781C992.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qiodevicebase.h.BA121A375699E1A4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qiterable.h.593B3344CDECDA30.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qiterator.h.79BACC0090625E33.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qkeysequence.h.68CD2413C273FFE1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QLabel.BDF8DC43DF1248E6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlabel.h.093879D5A3785F58.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlayout.h.60624982CE3A6E97.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlayoutitem.h.FCF973C9D13F87C3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qline.h.5481F5DECBDB2D95.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QLineEdit.B71C268B8FBEDBB4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlineedit.h.503B4B86028B0F2D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlist.h.3CFC1A37B8F9C483.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlocale.h.F22F54A687FD1493.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qlogging.h.9D2B494D6947AA87.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QMainWindow.A850B5C49B8F38E9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmainwindow.h.905A71239D8744EA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmalloc.h.68B183FBB072F6CF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmap.h.7E67081DA9D8AE6B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmargins.h.81F2A0366B8A4D76.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmath.h.1C6ACEA62FE70DAD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmenu.h.1ED4E1FBB6DCA20A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QMenuBar.A690EBC2951D187F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmenubar.h.6BF778991B38CF57.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmetacontainer.h.4FFAE0A444D96DFE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qmetatype.h.C25F850373A7C0D0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qminmax.h.F4A0AA0386DEE9BE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qnamespace.h.8C868C06D5EE6260.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qnativeinterface.h.8321ED183F1600BF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qnumeric.h.1CED5CC78C05619A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qobject_impl.h.28B1696EB0EBFEC4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QObject.FB40F3FA496FBCC9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qobject.h.1E4E6FC3137893B5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qobjectdefs_impl.h.1C486745D5C4E814.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qobjectdefs.h.90D3836B92EFA0A3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qobjectdefs.h.96D53E1D21E4D6A6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qoverload.h.34A161501CAB9688.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpaintdevice.h.E222B665C45F05EC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpainter.h.F9FBDA1C2C6E9CE1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpainterpath.h.D41B24FDD7952AA9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpair.h.286C37CF5C5BE2C1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpalette.h.FCE63479DBB20359.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpen.h.8473933EB5180D54.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpicture.h.6CCA6899BDCF084A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpixelformat.h.9D282DD6DA2D8A9F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpixmap.h.1CEEB4B1A0F536C3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpoint.h.C19F741D7DDBADBF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpolygon.h.57A9E00F22EFAAD3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qprocessordetection.h.22023744144E0D32.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QPushButton.A07825EF2B69790D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qpushbutton.h.D566321B78DFC601.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qrect.h.464A90878C27AD91.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qrefcount.h.873F2270C793E180.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qregion.h.CD7A8B780AAE1EA6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qregularexpression.h.5B3DA2BCC0D06477.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qrgb.h.C5DB318F1A957278.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qrgba64.h.B58C378F11AC21FE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qrubberband.h.70629CB3871686D3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qscopedpointer.h.66B3ABD54D003326.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qscopeguard.h.1786D3B099F4F492.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qscrollarea.h.2F9CC3F4516844C0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qset.h.5C38150A9A282C33.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qshareddata_impl.h.076AAA0652D00949.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qshareddata.h.37CDB995A764347D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsharedpointer_impl.h.A2A3180F4EAA8026.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsharedpointer.h.78904757C986D72E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsize.h.382FB2616BA4FB36.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsizepolicy.h.50173C65933E9B2D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qslider.h.19C3D13E93225A04.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QStatusBar.BB3B5A6FE66C1383.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstatusbar.h.6D0355EB2CFD6F11.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QString.B005F83FD64468D5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstring.h.F67061CDEA66A481.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringalgorithms.h.F81CB9F50A5F609D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringbuilder.h.E0B0A697AE34C285.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringconverter_base.h.D71E87E10C2F9853.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringfwd.h.7B84DC5E67D6A4BD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringlist.h.2A929FCB5C5927CA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringliteral.h.5ADACE841B5AC48E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringmatcher.h.8D643B497E58B24F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringtokenizer.h.38096EE43D93FD4C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstringview.h.6CE372F31A292E9E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstyle.h.26F2F04E52CEA943.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qstyleoption.h.99E77CE63A2CEF0A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qswap.h.CC13A07CA5D92242.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsysinfo.h.1385D9AA2DB37CA9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qsystemdetection.h.9CAA4B0F859E673C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtabbar.h.979CE501951A1804.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtabwidget.h.01B5B0B6D10A7E53.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtaggedpointer.h.5B0A9D09FC25406B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtclasshelpermacros.h.E56E98C9E160ADDC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtconfigmacros.h.7EDFFF183C18C27A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtcore-config.h.3E692AB0D4581804.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtcoreexports.h.1FE05B8952B38873.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtdeprecationmarkers.h.A5D6CDACB472364F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtenvironmentvariables.h.722E58CC85533779.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QTextBrowser.A14696F082AACE87.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextbrowser.h.A105578CBC6B6921.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextcursor.h.4E5E6D9DD46E5A7D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextdocument.h.02B9243F1BC80616.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextedit.h.7A5953FCD8F25820.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextformat.h.2B34EBFDAD151157.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextoption.h.9578C41190C06740.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtextstream.h.BDBBABD0D1C31964.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtgui-config.h.F5986997C0D2F8CC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtguiexports.h.83DDBE2AE86A41BA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtguiglobal.h.888EDD4E192618E2.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QTimer.629ADA8D4CE00575.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtimer.h.801B638C72DB0911.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtmetamacros.h.FFDEAC6038C22C5D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtnoop.h.44FD006631C778E8.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtpreprocessorsupport.h.C0121DA9BF966212.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtransform.h.B62F32B605F3E58F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtresource.h.FD431F5D27D279AF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qttranslation.h.BCD52F6A50E24653.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qttypetraits.h.D401201FE11E5BBF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtversion.h.3245013255BABC6A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtversionchecks.h.83FE2B48BD79056C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtwidgets-config.h.5F143B3C83B0B0B7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtwidgetsexports.h.639D84D490CD3C77.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtwidgetsglobal.h.D70F7938C6E31369.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtypeinfo.h.2CE81F39CF5D6EB7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qtypes.h.C657895D684E36CB.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qurl.h.7F04C429EC07D139.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qutf8stringview.h.48678693CE6FEDA0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qvalidator.h.5A18B104CFED7BEB.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QVariant.31AE4B91D1F4F8BD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qvariant.h.052EEAC54FBEE446.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qvarlengtharray.h.DD67F10FA030F4E4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qversiontagging.h.3663D8485554A43F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/QWidget.312FD864D7FA8EF1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qwidget.h.B4E909BFFC5E7A2A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qwindowdefs_win.h.A05131C06C23F00F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qwindowdefs.h.FCD104A1487298C9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/qxptype_traits.h.E6E053C72975C00E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/raointintrin.h.51D05BE01C0F82F3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ratio.3E106ADF40E7FC0F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/rdpruintrin.h.EE477043BBE0BAEE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/rdseedintrin.h.CB6B1473C78AEC1F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/rtmintrin.h.BDCEAF75D5D0E3DF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sal.h.65171F1A51D217A6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/serializeintrin.h.8F8874B2ADF11DDF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/setjmp.h.D9E6BABCBDBFAC8E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sgxintrin.h.8C22D82C2D1E8E8A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sha512intrin.h.1F35A3E9B6A27EF6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/shaintrin.h.8AB0F04FDF9DB16C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sm3intrin.h.97DF77DA0F0867D6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sm4evexintrin.h.E439C251B2A7E552.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/sm4intrin.h.9C059DFCC54EA8BE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/smmintrin.h.2B4D993D9573CC00.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stat.h.988A4454B9FB7B2B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdarg.h.FA494FF463A41B23.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdbool.h.44E60C01D1FE755E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stddef.h.4361ED25CBF08C6D.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdexcept.FD6AE6C52F07C8AF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdint.h.6DBEFFD3291885AE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdint.h.E05A5D1C87F81382.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdio.h.D4FF44446AA89196.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/stdlib.h.9BA0B43724485E38.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/string_view.CB02E96F63DD2F31.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/string.16869D00036B45C3.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/string.h.1DE18CC228BADA0C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/system_error.693BF979BB6D7149.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/tbmintrin.h.B6F09D1281EFA1EF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/time.h.84865AA4DBD4A1CD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/tmmintrin.h.583503B2CC256046.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/tsxldtrkintrin.h.AAE7F350A307A546.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/tuple.22F361417BA76902.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/type_traits.87AFB95FD5CCB3AA.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/typeinfo.490AD24A2401E15A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/types.h.B2B8E70CE2CCD063.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ui_dialogcamset.h.EFE31F525D7E4CB0.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/ui_mainwindow.h.5652AE6288CDB5E5.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/uintrintrin.h.B04705DFA8CEE5E4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/unordered_map.4256E3C64035D512.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/use_ansi.h.87F96FCE8EB27669.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/usermsrintrin.h.1DDD4538B67E8FA1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/utility.395B7E186E6A97FC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vadefs.h.7F4620724C0F2876.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vadefs.h.A4B722760C35B316.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vaesintrin.h.1A336C8486267EC1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/variant.E34E471F5A015D49.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime_exception.h.D890BB723B58A99F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime_new_debug.h.528546C3225A6A30.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime_new.h.5EF4393E68295BE9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime_string.h.FC14FDFD3302428B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime_typeinfo.h.2E07E582F8CA18A6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vcruntime.h.1E5EB6E619803DCE.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vector.83F64A73A910D674.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/version.315ED58A9C7A1700.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/vpclmulqdqintrin.h.6BD3A81FE20BC144.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/waitpkgintrin.h.74B764005DD828D6.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/wbnoinvdintrin.h.B4493E51A553AC13.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/wchar.h.A93E7AD730E53612.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/wmmintrin.h.DBB7E217951EE620.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/x86gprintrin.h.CD1E108747C800C1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/x86intrin.h.323619FFEBDFBFEF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xatomic.h.4542A58D617E1C6A.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xbit_ops.h.CA512BB47DBEB8AC.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xcall_once.h.3143992231F413E7.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xerrc.h.DA47D0A0727D1B4B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xfilesystem_abi.h.EBE72C895EF79014.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xhash.458557A0F1B13205.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xkeycheck.h.7A3143152C373DF1.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xmemory.8BEF5DED3227FF15.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xmmintrin.h.0B92EDB4E431996F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xnode_handle.h.2D5507277ACEA3DD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xopintrin.h.05B5926B97CE7F27.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xpolymorphic_allocator.h.0E53EA1A704D0A54.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xsavecintrin.h.A0A767D0E1769650.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xsaveintrin.h.6AAC7F1D2DDF2A14.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xsaveoptintrin.h.7D293E465FBB671B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xsavesintrin.h.9BF88C8499DEA6C4.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xsmf_control.h.0F019170AB68501B.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xstring.B94CC4E44483B282.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xtestintrin.h.2B32DE1D307306B9.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xthreads.h.5F85CAB234DB8445.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xtimec.h.83A351D534FC4F63.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xtr1common.71FF0CA624E7A2CF.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xtree.145C39C861598A3C.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/xutility.DABF5919A1A6DFBD.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/yvals_core.h.1DA7061BE33C2E00.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/yvals_core.h.5DC68C7C7857D16F.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/.qtc_clangd/.cache/clangd/index/yvals.h.5DC2C32B2C01259E.idx +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/CameraGrabber.exe +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/CameraGrabber.ilk +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/CameraGrabber.pdb +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/CameraGrabber.vc.pdb +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/camhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/dialogcamset.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/main.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/mainwindow.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_camhandler.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_camhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_dialogcamset.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_dialogcamset.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_mainwindow.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_mainwindow.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_parameterhandler.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_parameterhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/moc_predefs.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Debug/debug/parameterhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/.qmake.stash +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/Makefile +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/Makefile.Debug +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/Makefile.Release +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release.zip +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/ui_dialogcamset.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/ui_mainwindow.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/CameraGrabber.exe +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/camhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/D3Dcompiler_47.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/dialogcamset.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/main.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/mainwindow.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_camhandler.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_camhandler.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_dialogcamset.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_dialogcamset.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_mainwindow.cpp +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_mainwindow.obj +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/moc_predefs.h +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/opengl32sw.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Core.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Gui.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Network.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Pdf.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Svg.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/Qt6Widgets.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/generic/qtuiotouchplugin.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/iconengines/qsvgicon.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qgif.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qicns.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qico.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qjpeg.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qpdf.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qsvg.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qtga.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qtiff.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qwbmp.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/imageformats/qwebp.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/networkinformation/qnetworklistmanager.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/platforms/qwindows.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/styles/qwindowsvistastyle.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/tls/qcertonlybackend.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/tls/qopensslbackend.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/tls/qschannelbackend.dll +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_ar.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_bg.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_ca.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_cs.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_da.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_de.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_en.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_es.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_fa.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_fi.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_fr.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_gd.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_he.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_hr.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_hu.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_it.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_ja.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_ko.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_lv.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_nl.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_nn.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_pl.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_pt_BR.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_ru.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_sk.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_tr.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_uk.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_zh_CN.qm +build/Desktop_Qt_6_5_3_MSVC2019_64bit-Release/release/translations/qt_zh_TW.qm diff --git a/CameraGrabber.pro b/CameraGrabber.pro new file mode 100644 index 0000000..1b29b7e --- /dev/null +++ b/CameraGrabber.pro @@ -0,0 +1,42 @@ +QT += core gui serialport + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +CONFIG += c++17 + +# You can make your code fail to compile if it uses deprecated APIs. +# In order to do so, uncomment the following line. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +SOURCES += \ + camhandler.cpp \ + dialogcamset.cpp \ + main.cpp \ + mainwindow.cpp \ + parameterhandler.cpp \ + savetask.cpp + +HEADERS += \ + camhandler.h \ + dialogcamset.h \ + mainwindow.h \ + parameterhandler.h \ + savetask.h + +FORMS += \ + dialogcamset.ui \ + mainwindow.ui + +INCLUDEPATH += "C:/Program Files/Pleora Technologies Inc/eBUS SDK/Includes" + + +LIBS += -L"C:/Program Files/Pleora Technologies Inc/eBUS SDK/Libraries" + +LIBS += -l*64 + + + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/camhandler.cpp b/camhandler.cpp new file mode 100644 index 0000000..7df9828 --- /dev/null +++ b/camhandler.cpp @@ -0,0 +1,382 @@ +#include "CamHandler.h" + +// ---------------------------------------------------------------------------------------------------- +// 构造/析构 +// ---------------------------------------------------------------------------------------------------- + +CamHandler::CamHandler(QObject *parent) + : QObject(parent), mDevice(nullptr), mStream(nullptr), mDeviceInfo(nullptr) +{ + state = false; + saveFlag =false; + // 连接定时器的超时信号到采集槽 + connect(&mAcquireTimer, &QTimer::timeout, this, &CamHandler::onAcquireTimerTimeout); + + // 设置一个较小的间隔,让定时器尽可能快地被调用,以持续检查是否有新图像 + mAcquireTimer.setInterval(17); // 约 60FPS +} + +CamHandler::~CamHandler() +{ + // 确保在销毁对象时清理资源 + if (mStream) + { + stopAcquisition(); // 确保流和缓冲区已清理 + mStream->Close(); + PvStream::Free(mStream); + mStream = nullptr; + } + + if (mDevice) + { + mDevice->Disconnect(); + PvDevice::Free(mDevice); + mDevice = nullptr; + } + + // mDeviceInfo 由 mSystem 管理,无需手动释放 + mDeviceInfo = nullptr; + + // mSystem 是成员变量,在 CamHandler 析构时自动释放其资源 +} + +// ---------------------------------------------------------------------------------------------------- +// 公有接口实现 +// ---------------------------------------------------------------------------------------------------- + +// 修正:不再是 static,使用成员变量 mSystem +QList CamHandler::listAvailableDevices() +{ + QList deviceList; + + // 使用成员变量 mSystem 发现设备。mSystem 的生命周期与 CamHandler 一致。 + mSystem.Find(); + + // 遍历发现的设备 + for (uint32_t i = 0; i < mSystem.GetDeviceCount(); i++) + { + const PvDeviceInfo *lInfo = mSystem.GetDeviceInfo(i); + // 获取设备的显示ID (例如:型号/序列号) + QString lDisplayID = QString::fromLocal8Bit(lInfo->GetDisplayID().GetAscii()); + + deviceList.append(lDisplayID + " (ID: " + QString::fromLocal8Bit(lInfo->GetConnectionID().GetAscii()) + ")"); + } + + return deviceList; +} + +bool CamHandler::connectToDevice(const QString &aConnectionID) +{ + QString errMsg; + if (mDevice) + { + emit logMsg( "Already connected. Please disconnect first."); + return false; + } + + // 1. 选择设备 + // 确保在 selectDevice 前调用 Find() (虽然 listAvailableDevices 可能已经调用,但再次调用更安全) + mDeviceInfo = selectDevice(aConnectionID); + + if (!mDeviceInfo) + { + errMsg = "Error: Device not found for ID:" + aConnectionID; + emit logMsg(errMsg); + return false; + } + + // 2. 连接到设备 (使用静态工厂方法 PvDevice::CreateAndConnect) + // mDeviceInfo 现在是有效的,不会导致访问冲突 + PvResult lResult; + mDevice = PvDevice::CreateAndConnect(mDeviceInfo, &lResult); + + if (mDevice == nullptr) + { + emit logMsg( "Error: Unable to connect to device. Result:" + QString(lResult.GetCodeString())); + return false; + } + + // 3. 打开流 + if (!openStream()) + { + disconnectDevice(); + return false; + } + + // 4. 配置流 (例如:GigE Vision 性能) + // configureStream(); + + // 5. 创建和队列缓冲区 + // createStreamBuffers(); + + emit logMsg( "Successfully connected and configured stream."); + state = true; + return true; +} + +void CamHandler::startAcquisition() +{ + // 5. 创建和队列缓冲区 + createStreamBuffers(); + if (!mDevice || !mStream) + { + emit logMsg( "Not connected. Cannot start acquisition."); + return; + } + + // 2. 获取 AcquisitionStart 命令 + PvGenParameterArray *lDeviceParams = mDevice->GetParameters(); + PvGenCommand *lStart = dynamic_cast(lDeviceParams->Get("AcquisitionStart")); + + if (lStart != nullptr) + { + emit logMsg( "Enabling streaming and sending AcquisitionStart command."); + mDevice->StreamEnable(); // 启用流 + lStart->Execute(); // 发送命令 + + // 3. 启动定时器,驱动采集循环 + mAcquireTimer.start(); + } + else + { + emit logMsg( "Error: AcquisitionStart command not found on device."); + } +} + +void CamHandler::stopAcquisition() +{ + if (!mDevice || !mStream) + return; + + // 1. 停止计时器 + if (mAcquireTimer.isActive()) + { + mAcquireTimer.stop(); + emit logMsg( "Acquisition timer stopped."); + } + + // 2. 获取 AcquisitionStop 命令 + PvGenParameterArray *lDeviceParams = mDevice->GetParameters(); + PvGenCommand *lStop = dynamic_cast(lDeviceParams->Get("AcquisitionStop")); + + // 3. 停止采集和禁用流 + if (lStop != nullptr) + { + emit logMsg( "Sending AcquisitionStop command to the device"); + lStop->Execute(); + } + emit logMsg( "Disable streaming on the controller."); + mDevice->StreamDisable(); + + // 4. 清理缓冲区:终止队列中的所有缓冲区并将它们移到输出队列 + emit logMsg( "Aborting buffers still in stream"); + mStream->AbortQueuedBuffers(); + + // 5. 从输出队列中检索剩余的缓冲区,丢弃它们 + PvBuffer *lBuffer = NULL; + PvResult lOperationResult; + // 必须清空队列,防止下次采集时使用错误的旧缓冲区 + while (mStream->GetQueuedBufferCount() > 0) + { + mStream->RetrieveBuffer(&lBuffer, &lOperationResult); + // 注意:这里没有释放 lBuffer,因为缓冲区资源将在析构或断开时处理 + } + + emit logMsg( "Acquisition stopped and buffers cleaned up."); +} + +void CamHandler::disconnectDevice() +{ + // 停止采集,清理流资源 + if (mStream) + { + stopAcquisition(); // 确保流和缓冲区已清理 + emit logMsg( "Closing stream"); + mStream->Close(); + PvStream::Free(mStream); + mStream = nullptr; + } + + // 断开设备连接,释放设备资源 + if (mDevice) + { + emit logMsg( "Disconnecting device"); + mDevice->Disconnect(); + PvDevice::Free(mDevice); + mDevice = nullptr; + } + + // mDeviceInfo 由 mSystem 管理,置空指针 + mDeviceInfo = nullptr; + + emit logMsg( "Disconnected and resources freed."); + state =false; +} + +// ---------------------------------------------------------------------------------------------------- +// 槽函数实现 (采集循环驱动) +// ---------------------------------------------------------------------------------------------------- + +void CamHandler::onAcquireTimerTimeout() +{ + // 如果没有连接或流,直接返回 + if (!mStream) { + logMsg("Stream not active."); + return; + } + + PvBuffer *lBuffer = nullptr; + PvResult lOperationResult; + + // 尝试检索下一个缓冲区,使用较短的超时时间 (10ms) + PvResult lResult = mStream->RetrieveBuffer(&lBuffer, &lOperationResult, 10); + + if (lResult.IsOK()) + { + if (lOperationResult.IsOK()) + { + // 成功采集到有效图像 + PvPayloadType lType = lBuffer->GetPayloadType(); + + if (lType == PvPayloadTypeImage) + { + // 转换为 QImage 并发送信号 + QImage image = convertPvBufferToQImage(lBuffer); + if (!image.isNull()) + { + emit imageReady(image); + } + else + { + emit logMsg("Image conversion failed."); + } + } + else + { + emit logMsg( "Buffer retrieved, but does not contain an image payload. Requeuing."); + } + + // 重新排队缓冲区 + mStream->QueueBuffer(lBuffer); + } + else + { + // 检索到缓冲区但操作结果不成功(例如:超时、重发过多) + emit logMsg( "RetrieveBuffer operation result is not OK:" + QString(lOperationResult.GetCodeString()) + ". Requeuing."); + mStream->QueueBuffer(lBuffer); // 必须重新排队 + } + } + // else { // RetrieveBuffer 失败 (未取到缓冲区,例如超时) } +} + +// ---------------------------------------------------------------------------------------------------- +// 内部帮助函数实现 +// ---------------------------------------------------------------------------------------------------- + +// 修正:使用成员变量 mSystem 查找设备 +const PvDeviceInfo *CamHandler::selectDevice(const QString &aConnectionID) +{ + mSystem.Find(); + // mSystem.Find() 已经在 connectToDevice 中调用 + for (uint32_t i = 0; i < mSystem.GetDeviceCount(); i++) + { + const PvDeviceInfo *lInfo = mSystem.GetDeviceInfo(i); // 从成员变量 mSystem 获取 + QString tmp = QString::fromLocal8Bit(lInfo->GetConnectionID().GetAscii()); + + if (aConnectionID == tmp) + { + // 找到匹配的设备,返回的指针由 mSystem 管理,在 CamHandler 生命周期内有效 + return lInfo; + } + } + return nullptr; +} + +bool CamHandler::openStream() +{ + emit logMsg( "Opening stream to device."); + PvResult lResult; + + // 使用静态工厂方法 PvStream::CreateAndOpen + mStream = PvStream::CreateAndOpen(mDeviceInfo->GetConnectionID(), &lResult); + + if (mStream == nullptr) + { + emit logMsg( "Error: Unable to stream from device. Result:" + QString(lResult.GetCodeString())); + return false; + } + return true; +} + + +void CamHandler::createStreamBuffers() +{ + // 从设备获取 payload size (图像/数据的字节大小) + uint32_t lSize = mDevice->GetPayloadSize(); + + // 确定要创建的缓冲区数量 + uint32_t lBufferCount = (mStream->GetQueuedBufferMaximum() < BUFFER_COUNT) ? mStream->GetQueuedBufferMaximum() : BUFFER_COUNT; + + emit logMsg( "Allocating" + QString::number(lBufferCount) + " buffers of size " + QString::number(lSize) + " bytes."); + + // 分配 PvBuffer 数组 + // 注意:在析构函数或 disconnectDevice 中需要释放这个内存! + PvBuffer *lBuffers = new PvBuffer[lBufferCount]; + + // **重要提示:您的原始代码没有在析构函数中释放 lBuffers 指针!** // 这是一个内存泄漏风险。要解决这个问题,您需要将 lBuffers 存储为一个成员变量 (例如 QList) + // 或者只在析构函数/disconnectDevice 中确保释放它们。 + + for (uint32_t i = 0; i < lBufferCount; i++) + { + // 为每个缓冲区分配内存 + (lBuffers + i)->Alloc(static_cast(lSize)); + + // 将缓冲区排队到流的输入队列 + mStream->QueueBuffer(lBuffers + i); + } +} + +QImage CamHandler::convertPvBufferToQImage(PvBuffer *aBuffer) +{ + // 获取图像信息 + PvImage *lImage = aBuffer->GetImage(); + uint32_t lWidth = lImage->GetWidth(); + uint32_t lHeight = lImage->GetHeight(); + + + + + // 使用全局线程池启动任务 (异步执行) + // 简化实现:仅支持 Mono8 (8位灰度) 格式 + if (lImage->GetPixelType() == PvPixelMono8) + { + if(saveFlag){ + const void *lDataPointer = lImage->GetDataPointer(); + quint32 lDataSize = lImage->GetImageSize(); + // 3. 复制原始数据到 QByteArray(线程安全的关键) + QByteArray rawDataCopy( + reinterpret_cast(lDataPointer), + lDataSize + ); + + // 4. 创建 SaveTask 并提交给全局线程池 + SaveTask *task = new SaveTask( + rawDataCopy + ); + + QThreadPool::globalInstance()->start(task); + } + + // 直接使用图像数据创建 QImage + return QImage( + (uchar *)lImage->GetDataPointer(), + lWidth, + lHeight, + lWidth, // 步长/字节数 + QImage::Format_Grayscale8 + ).copy(); // .copy() 确保 QImage 拥有数据,安全地在 Qt 环境中使用 + } + + emit logMsg( "Unsupported pixel format" ); + return QImage(); +} diff --git a/camhandler.h b/camhandler.h new file mode 100644 index 0000000..7566e4d --- /dev/null +++ b/camhandler.h @@ -0,0 +1,82 @@ +#ifndef CAMHANDLER_H +#define CAMHANDLER_H + +#include +#include +#include +#include // 用于在信号中传输图像数据 +#include // 用于驱动采集循环 + +// eBUS SDK 核心头文件 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "savetask.h" +#include // 需要包含 QThreadPool + +// 用于流缓冲区数量的定义 (参考例程) +#define BUFFER_COUNT 16 + +class CamHandler : public QObject +{ + Q_OBJECT + +public: + explicit CamHandler(QObject *parent = nullptr); + ~CamHandler(); + + // 公有接口:连接/断开/发现 + // 注意:已移除 static 关键字,以便使用成员变量 mSystem 进行设备发现 + QList listAvailableDevices(); + bool connectToDevice(const QString &aConnectionID); + void disconnectDevice(); + + // 公有接口:采集控制 + void startAcquisition(); + void stopAcquisition(); + bool state; + bool saveFlag; + + + // ------------------- 信号 (Signals) ------------------- +signals: + void imageReady(const QImage &image); // 发送采集到的图像数据 + void logMsg(const QString &msg); + + // ------------------- 槽 (Slots) ------------------- +public slots: + void onAcquireTimerTimeout(); // 驱动图像采集循环的槽 + +private: + // eBUS SDK 对象 + PvDevice *mDevice; + PvStream *mStream; + + // 关键修正:PvSystem 实例作为成员变量,其生命周期与 CamHandler 相同 + PvSystem mSystem; + + // mDeviceInfo 指针,指向 mSystem 内部的有效数据 + const PvDeviceInfo *mDeviceInfo; + + // 计时和帧控制 + QTimer mAcquireTimer; + + // 内部帮助函数 + const PvDeviceInfo *selectDevice(const QString &aConnectionID); + bool openStream(); + void createStreamBuffers(); + + // 图像采集和转换函数 + // 简化:onAcquireTimerTimeout 中直接调用 RetrieveBuffer + // bool acquireSingleBuffer(PvBuffer **aBuffer, PvResult *aOperationResult); + QImage convertPvBufferToQImage(PvBuffer *aBuffer); +}; + +#endif // CAMHANDLER_H diff --git a/dialogcamset.cpp b/dialogcamset.cpp new file mode 100644 index 0000000..32de6fb --- /dev/null +++ b/dialogcamset.cpp @@ -0,0 +1,27 @@ +#include "dialogcamset.h" +#include "ui_dialogcamset.h" + +DialogCamSet::DialogCamSet(QWidget *parent) + : QDialog(parent) + , ui(new Ui::DialogCamSet) +{ + ui->setupUi(this); + ph = new ParameterHandler(this); + ui->comboBox->addItems(ParameterHandler::getAvailablePortNames()); +} + +DialogCamSet::~DialogCamSet() +{ + delete ui; +} + +void DialogCamSet::on_pushButton_2_clicked() +{ + QString portName = ui->comboBox->currentText(); + if(ph->openPort(portName)){ + QMessageBox::critical(this,"Error","Connect "+portName +" failed"); + } + + +} + diff --git a/dialogcamset.h b/dialogcamset.h new file mode 100644 index 0000000..f6f427b --- /dev/null +++ b/dialogcamset.h @@ -0,0 +1,28 @@ +#ifndef DIALOGCAMSET_H +#define DIALOGCAMSET_H + +#include +#include "parameterhandler.h" +#include "QMessageBox" + +namespace Ui { +class DialogCamSet; +} + +class DialogCamSet : public QDialog +{ + Q_OBJECT + +public: + explicit DialogCamSet(QWidget *parent = nullptr); + ~DialogCamSet(); + +private slots: + void on_pushButton_2_clicked(); + +private: + Ui::DialogCamSet *ui; + ParameterHandler *ph; +}; + +#endif // DIALOGCAMSET_H diff --git a/dialogcamset.ui b/dialogcamset.ui new file mode 100644 index 0000000..72eaee1 --- /dev/null +++ b/dialogcamset.ui @@ -0,0 +1,58 @@ + + + DialogCamSet + + + + 0 + 0 + 360 + 555 + + + + Dialog + + + + + + + + + + + + Connect + + + + + + + Camera Choose: + + + + + + + Exposure : + + + + + + + Gain: + + + + + + + + + + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..fd3e533 --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..69293cc --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,155 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); + cam1 = new CamHandler(); + cam2 = new CamHandler(); + connect(cam1,&CamHandler::logMsg,this,&MainWindow::onLogPrint1); + connect(cam1,&CamHandler::imageReady,this,&MainWindow::picUpdate1); + + + connect(cam2,&CamHandler::logMsg,this,&MainWindow::onLogPrint2); + + m_scene1 = new QGraphicsScene(this); + ui->graphicsView->setScene(m_scene1); + m_imageItem1 = nullptr; // 初始化图像项指针 + +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::onLogPrint1(const QString &msg) +{ + QDateTime currentDateTime = QDateTime::currentDateTime(); + QString dateTimeString = currentDateTime.toString("yyyy--MM--dd HH-mm-ss"); + ui->textBrowser->append(dateTimeString+" [cam1] --> " +msg); + +} + +void MainWindow::onLogPrint2(const QString &msg) +{ + QDateTime currentDateTime = QDateTime::currentDateTime(); + QString dateTimeString = currentDateTime.toString("yyyy--MM--dd HH-mm-ss"); + ui->textBrowser->append(dateTimeString+" [cam2] --> " +msg); + +} + +void MainWindow::picUpdate1(const QImage &image) +{ + // onLogPrint1("here rev"); + if (image.isNull()) + { + qWarning() << "Received null image."; + return; + } + + // 1. QImage 转换为 QPixmap + // 注意:如果 QImage 引用了外部数据(例如:使用 CamHandler 中的 GetDataPointer()), + // 务必使用 .copy() 或 QPixmap::fromImage() 来确保数据安全。 + // 在您 CamHandler 的 convertPvBufferToQImage 中,您已经使用了 .copy(),这很好。 + QPixmap pixmap = QPixmap::fromImage(image); + + // 2. 将 QPixmap 放入 QGraphicsPixmapItem 中 + if (m_imageItem1 == nullptr) + { + // 第一次显示图像:创建 QGraphicsPixmapItem 并添加到 Scene + m_imageItem1 = m_scene1->addPixmap(pixmap); + + // 可选:设置 Scene 的边界以匹配图像大小 + m_scene1->setSceneRect(m_imageItem1->boundingRect()); + + // 可选:调整 QGraphicsView 视口以适应图像 + // 如果您希望图像完整显示在 View 中,可以调用 fitInView + ui->graphicsView->fitInView(m_scene1->sceneRect(), Qt::KeepAspectRatio); + } + else + { + // 更新现有图像(更高效):直接更新 QGraphicsPixmapItem 的 QPixmap + m_imageItem1->setPixmap(pixmap); + } + + // 强制 View 刷新,以防更新不及时 + ui->graphicsView->viewport()->update(); +} + +void MainWindow::on_pushButton_2_clicked() +{ + dc = new DialogCamSet(this); + dc->show(); + +} + + +void MainWindow::on_pushButton_3_clicked() + +{ + // QList tmp; + // tmp = CamHandler::listAvailableDevices(); + // for(auto i: tmp){ + // onLogPrint1(i); + // } + // cam1->connectToDevice("28B702523408"); + + if(!cam1->connectToDevice("28B702523408")){ + onLogPrint1("open failed"); + return; + } + + // if(!cam2->connectToDevice("1")){ + // onLogPrint2("open failed"); + // return; + // } + + + + + // cam2->startAcquisition(); +} + + +void MainWindow::on_pushButton_4_clicked() +{ + if(cam1->state){ + cam1->stopAcquisition(); + }else{ + onLogPrint1("Please connect firstly"); + } + // cam2->stopAcquisition(); +} + + +void MainWindow::on_pushButton_5_clicked() +{ + ui->textBrowser->clear(); +} + + +void MainWindow::on_pushButton_6_clicked() +{ + if(cam1->state){ + cam1->startAcquisition(); + }else{ + onLogPrint1("Please connect firstly"); + } +} + + +void MainWindow::on_pushButton_clicked() +{ + cam1->saveFlag=true; + +} + + +void MainWindow::on_pushButton_7_clicked() +{ + cam1->saveFlag=false; +} + diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..4c0148a --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,57 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include "dialogcamset.h" +#include "camhandler.h" +#include "QDateTime" +#include +#include + + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +public slots: + void onLogPrint1(const QString &msg); + void onLogPrint2(const QString &msg); + void picUpdate1(const QImage &image); + + +private slots: + void on_pushButton_2_clicked(); + + void on_pushButton_3_clicked(); + + void on_pushButton_4_clicked(); + + void on_pushButton_5_clicked(); + + void on_pushButton_6_clicked(); + + void on_pushButton_clicked(); + + void on_pushButton_7_clicked(); + +private: + Ui::MainWindow *ui; + DialogCamSet *dc; + CamHandler *cam1; + CamHandler *cam2; + + QGraphicsScene *m_scene1; + QGraphicsPixmapItem *m_imageItem1; // 用于保存图像项的指针 + +}; +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..4a543c8 --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,173 @@ + + + MainWindow + + + + 0 + 0 + 1050 + 903 + + + + MainWindow + + + + + + + Clear + + + + + + + Set Camera Parameters + + + + + + + Camera 3 + + + + + + + + + + + + Camera 4 + + + + + + + + + + + + Open + + + + + + + + + + Camera 5 + + + + + + + + + + + + Camera 6 + + + + + + + + + + + + Connect + + + + + + + Camera 2 + + + + + + + + + + + + Close + + + + + + + Camera 1 + + + + + + + + + + + + Save + + + + + + Stop + + + + + + + + 0 + 0 + + + + Start + + + + + + + + + + + + 0 + 0 + 1050 + 21 + + + + + + + + diff --git a/parameterhandler.cpp b/parameterhandler.cpp new file mode 100644 index 0000000..7ae9410 --- /dev/null +++ b/parameterhandler.cpp @@ -0,0 +1,176 @@ +#include "ParameterHandler.h" +#include +#include +#include + +ParameterHandler::ParameterHandler(QObject *parent) + : QObject(parent), m_serialPort(new QSerialPort(this)) +{ + // 将 QSerialPort 的 readyRead 信号连接到槽函数,用于数据接收 + connect(m_serialPort, &QSerialPort::readyRead, + this, &ParameterHandler::handleReadyRead); + + // 将 QSerialPort 的 errorOccurred 信号连接到槽函数,用于错误处理 + // 使用 QOverload 确保连接到正确的重载函数 + connect(m_serialPort, QOverload::of(&QSerialPort::errorOccurred), + this, &ParameterHandler::handleError); +} + + +ParameterHandler::~ParameterHandler() +{ + // 析构时确保串口关闭 + closePort(); + // m_serialPort 的父对象是 ParameterHandler (this),所以它会被 QObject 机制自动删除。 +} + +/** + * @brief 静态函数实现:获取系统上所有可用串口的名称列表 + * @return 包含所有可用串口名称的 QStringList + */ +QStringList ParameterHandler::getAvailablePortNames() +{ + QStringList portNames; + // 使用 QSerialPortInfo::availablePorts() 获取可用串口列表 + const auto serialPortInfos = QSerialPortInfo::availablePorts(); + for (const QSerialPortInfo &portInfo : serialPortInfos) { + portNames << portInfo.portName(); + } + + return portNames; +} + +bool ParameterHandler::openPort(const QString &portName) +{ + // 如果串口已打开,先关闭 + if (m_serialPort->isOpen()) { + m_serialPort->close(); + } + + m_serialPort->setPortName(portName); + + // 1. 尝试打开串口,以读写模式 + if (!m_serialPort->open(QIODevice::ReadWrite)) { + QString errorMsg = QString("无法打开串口 %1: %2").arg(portName).arg(m_serialPort->errorString()); + qWarning() << errorMsg; + emit errorOccurred(errorMsg); + return false; + } + + // --- 2. 串口配置(根据您的要求) --- + // 波特率: 115200 + if (!m_serialPort->setBaudRate(QSerialPort::Baud115200)) { + qWarning() << "设置波特率失败:" << m_serialPort->errorString(); + goto config_error; + } + + // 数据位: 8 bit + if (!m_serialPort->setDataBits(QSerialPort::Data8)) { + qWarning() << "设置数据位失败:" << m_serialPort->errorString(); + goto config_error; + } + + // 校验位: 无校验 (No Parity)。 忽略“1bit校验位”而采用“无校验” + if (!m_serialPort->setParity(QSerialPort::NoParity)) { + qWarning() << "设置校验位失败:" << m_serialPort->errorString(); + goto config_error; + } + + // 停止位: 1 bit + if (!m_serialPort->setStopBits(QSerialPort::OneStop)) { + qWarning() << "设置停止位失败:" << m_serialPort->errorString(); + goto config_error; + } + + // 流量控制: 无流量控制 (No Flow Control) + if (!m_serialPort->setFlowControl(QSerialPort::NoFlowControl)) { + qWarning() << "设置流控制失败:" << m_serialPort->errorString(); + goto config_error; + } + + qDebug() << "串口" << portName << "成功打开并配置为 115200/8/N/1"; + return true; + +config_error: + // 配置失败时的错误处理 + QString errMsg = QString("串口配置失败: %1").arg(m_serialPort->errorString()); + qCritical() << errMsg; + m_serialPort->close(); // 配置失败则关闭串口 + emit errorOccurred(errMsg); + return false; +} + +void ParameterHandler::closePort() +{ + if (m_serialPort->isOpen()) { + m_serialPort->close(); + qDebug() << "串口" << m_serialPort->portName() << "已关闭"; + } +} + +bool ParameterHandler::isPortOpen() const +{ + return m_serialPort->isOpen(); +} + +qint64 ParameterHandler::writeData(const QByteArray &data) +{ + if (!m_serialPort->isOpen()) { + qWarning() << "写入失败: 串口未打开"; + emit errorOccurred("写入失败: 串口未打开。"); + return -1; + } + + qint64 bytesWritten = m_serialPort->write(data); + + if (bytesWritten == -1) { + // 写入操作本身出错 + QString errorMsg = QString("写入数据时出错: %1").arg(m_serialPort->errorString()); + qWarning() << errorMsg; + emit errorOccurred(errorMsg); + } else if (bytesWritten != data.size()) { + // 写入的数据量不完整 + qWarning() << "警告: 仅写入了部分数据。期望:" << data.size() << "实际:" << bytesWritten; + } else { + qDebug() << "成功写入" << bytesWritten << "字节数据:" << data.toHex().toUpper(); + } + + // 等待数据发送完成,防止在主线程中阻塞太久,设置一个较短的超时 + m_serialPort->waitForBytesWritten(10); + + return bytesWritten; +} + +QString ParameterHandler::portName() const +{ + return m_serialPort->portName(); +} + +void ParameterHandler::handleReadyRead() +{ + // 读取所有等待中的数据 + QByteArray data = m_serialPort->readAll(); + + qDebug() << "接收到数据,字节数:" << data.size() << "数据(Hex):" << data.toHex().toUpper(); + + // 发出信号通知外部有新数据 + emit dataReceived(data); +} + +void ParameterHandler::handleError(QSerialPort::SerialPortError error) +{ + // 忽略 NoError,只处理实际错误 + if (error != QSerialPort::NoError && m_serialPort->isOpen()) { + QString errorString = m_serialPort->errorString(); + qCritical() << "串口发生错误:" << errorString << "(错误码:" << error << ")"; + + // 发出信号通知外部错误 + emit errorOccurred(errorString); + + // 如果是资源错误(例如设备被拔出),则自动关闭串口 + if (error == QSerialPort::ResourceError) { + qCritical() << "资源错误,自动关闭串口。"; + m_serialPort->close(); + } + } +} diff --git a/parameterhandler.h b/parameterhandler.h new file mode 100644 index 0000000..d361337 --- /dev/null +++ b/parameterhandler.h @@ -0,0 +1,69 @@ +#ifndef PARAMETERHANDLER_H +#define PARAMETERHANDLER_H + +#include +#include +#include +#include +#include // <-- 增加此头文件 + +class ParameterHandler : public QObject +{ + Q_OBJECT + +public: + // 构造函数:接受父对象 + explicit ParameterHandler(QObject *parent = nullptr); + + // 析构函数 + ~ParameterHandler(); + + static QStringList getAvailablePortNames(); // <-- 新增的静态函数声明 + /** + * @brief 尝试打开并配置串口 + * @param portName 要打开的串口名称 (例如 "COM3" 或 "/dev/ttyUSB0") + * @return 成功返回 true,失败返回 false + */ + bool openPort(const QString &portName); + + // 关闭串口 + void closePort(); + + // 检查串口是否已打开 + bool isPortOpen() const; + + /** + * @brief 写入数据到串口 + * @param data 要发送的 QByteArray 数据 + * @return 成功写入的字节数,失败返回 -1 + */ + qint64 writeData(const QByteArray &data); + + // 获取当前串口名称 + QString portName() const; + +signals: + /** + * @brief 接收到新数据时发出的信号 + * @param data 接收到的数据 + */ + void dataReceived(const QByteArray &data); + + /** + * @brief 串口出错时发出的信号 + * @param errorString 错误描述字符串 + */ + void errorOccurred(const QString &errorString); + +private slots: + // 处理串口发出的 readyRead 信号,读取数据 + void handleReadyRead(); + + // 处理串口发出的 errorOccurred 信号,报告错误 + void handleError(QSerialPort::SerialPortError error); + +private: + QSerialPort *m_serialPort; +}; + +#endif // PARAMETERHANDLER_H diff --git a/savetask.cpp b/savetask.cpp new file mode 100644 index 0000000..c5c7f02 --- /dev/null +++ b/savetask.cpp @@ -0,0 +1,54 @@ +#include "SaveTask.h" + +// 实际的 run() 方法在 SaveTask.cpp 中实现 +void SaveTask::run() +{ + if (m_rawData.isEmpty()) + { + qWarning("SaveTask received empty raw data. Aborting save."); + return; + } + + // --- 耗时的文件 I/O 操作在此处执行,不阻塞主线程 --- + + QString timestamp = QDateTime::currentDateTime().toString("yyyyMMdd_hhmmsszzz"); + + // 构造文件名:时间戳_宽度x高度_像素类型.raw + QString filename = QString("%1.raw") + .arg(timestamp); + + + // 设置保存路径 + QString savePath = QDir::currentPath() + "/RawSavedImages/"; + + QDir dir(savePath); + if (!dir.exists()) + { + dir.mkpath("."); + } + + QString fullPath = savePath + filename; + + QFile file(fullPath); + if (file.open(QIODevice::WriteOnly)) + { + // 直接将 QByteArray 中的原始字节写入文件 + qint64 bytesWritten = file.write(m_rawData); + file.close(); + + if (bytesWritten == m_rawData.size()) + { + // 保存成功,可以发送日志或简单地使用 qInfo() + // qInfo() << "Raw data saved successfully to:" << fullPath; + } + else + { + qWarning() << QString("Error: Only %1 of %2 bytes written to %3") + .arg(bytesWritten).arg(m_rawData.size()).arg(fullPath); + } + } + else + { + qWarning() << "Error opening file for writing:" << fullPath; + } +} diff --git a/savetask.h b/savetask.h new file mode 100644 index 0000000..8ee8265 --- /dev/null +++ b/savetask.h @@ -0,0 +1,42 @@ +#ifndef SAVETASK_H +#define SAVETASK_H + +#include +#include +#include +#include +#include +#include + +/** + * @brief SaveTask 封装了将原始图像字节数据异步保存到文件的任务。 + * 继承自 QRunnable,以便提交给 QThreadPool 运行。 + */ +class SaveTask : public QRunnable +{ +public: + /** + * @brief 构造函数。接收需要保存的原始图像数据的副本及元数据。 + * @param data 原始图像数据的字节副本。 + * @param width 图像宽度。 + * @param height 图像高度。 + * @param pixelType 图像的原始像素格式(例如 PvPixelMono8 的整数值)。 + */ + SaveTask(const QByteArray &data) + : m_rawData(data) + { + // 设置为 true,以便任务执行完成后,QThreadPool 自动清理内存 + setAutoDelete(true); + } + + /** + * @brief 任务的实际执行入口,将在一个线程池线程中运行。 + */ + void run() override; + +private: + QByteArray m_rawData; + +}; + +#endif // SAVETASK_H