You are going to have to learn what a toolchain is and what the steps involved in compiling, linking, and deployment are. You can't simply grab files from here or there whose names happen to match the ones your app is looking for and expect them to work. The basic rules for Windows are:

0 - Obviously, all binary files have to be compiled with a toolchain that targets the Windows runtime.

1 - All binary files must be compiled using the same compiler, including any third-party DLLs you use. In this case, if you are using gcc (from minGW) as your toolchain compiler, everything must be compiled using that compiler.

2 - All binary files must be compiled using the same "bitness" (32 or 64 bit)

3 - All binary files must have the same "mode" (Debug or Release)

The reasons for this are that in C++, each compiler is free to "mangle" the names and signatures of exported classes, methods, and variables as it sees fit. When you link an EXE that expects to find a method int MyMethod( int x, int y, int z ) that is a member of MyClass, and that class is exported by MyLibrary.dll, then if MyLibrary.dll was compiled using gcc, the exported name might be "MyClass__MyMethod__%%i32%%i32%%i32%%i32". But if your EXE is compiled using the Microsoft Visual Studio compiler, it might mangle the same name as "MyClass&&MyMethod&&i&i&i&i". When the linker and runtime try to match things up, it can't find a match.

You are also going to have to learn how windeployqt works. It is supposed to drag all the dependent DLLs in for you. You don't need to manually copy files yourself. If you find that you need to do that, then you are using the tool incorrectly.

YouTube is usually a pretty unreliable source of information on how to build applications. You would be better off reading the Qt documentation.