Qt / C++ integration
Integration layers
| Layer | Purpose |
|---|---|
| C ABI | Handle-based multi-instance interface for Win32, Cocoa and other hosts |
C++ DesktopSdk | C++17 facade for commands, events and snapshots |
Qt EduSdkQt | Qt wrapper and HostEffect execution |
EduSdk::UiQt | Supplied Qt Widgets classroom interface |
Desktop adapters handle native media and whiteboard operations. Low-level C/C++ hosts must implement HostEffect handling for backend HTTP, IM, RTC and whiteboards.
Platforms and dependencies
Native releases target macOS arm64, macOS x86_64 and Windows x86_64. macOS has separate architecture packages. There is no complete Linux Qt classroom distribution.
The Qt example requires Python 3.9+, CMake 3.21+, Qt 6.5+ and Qt modules including Network and Multimedia. CMake downloads and verifies DrawsKit Desktop 0.1.3. OpenIM and TRTC require official native libraries for the target OS.
macOS source example
From edu-sdks:
make build-desktop
./scripts/prepare-openim-desktop.sh
./scripts/prepare-qt-desktop.sh
cmake -S examples/desktop-qt -B build/desktop-qt
cmake --build build/desktop-qt
./build/desktop-qt/edusdk-desktop-qt-demo
Enter the sdk-api endpoint, classroom ID, eduUserId and user token in the launch screen. Alternatively set EDUSDK_BACKEND_URL, EDUSDK_CLASSROOM_ID, EDUSDK_USER_ID and EDUSDK_USER_TOKEN. Non-Release builds default to the development environment.
Windows build
Build the Windows x64 EduSDK Core and prepare OpenIM C SDK plus TRTC Windows C++ SDK, then configure:
cmake -S examples/desktop-qt -B build/desktop-qt -A x64 `
-DOPENIM_SDK_ROOT=C:\sdk\openim\win64 `
-DTENCENT_TRTC_SDK_ROOT=C:\sdk\trtc\SDK\CPlusPlus\Win64
cmake --build build/desktop-qt --config Release
Link the Windows OpenIM and TRTC native libraries, then test multi-user entry on the target system. examples/desktop-cpp uses Mock HostEffect for interface and lifecycle examples. Use examples/desktop-qt for media integration.
Use the CMake definitions in platforms/desktop and ui/desktop/qt when integrating into your own project. Follow examples/desktop-qt for HostEffect runner and adapter setup. Release UI, providers and SDK instances before unloading libraries during window exit.