My own investigation showed that the QtConnectivity library isn't providing the necessary API to implement this service. Specifically, I missed two key functionality: returning specific error codes to client read/write requests, and having support for control point characteristics.
We ended up writing our own BLE GATT library that interacts with BlueZ directly over D-Bus instead. The BlueZ D-Bus API offers everything needed for ACS, but I did find one critical bug in BlueZ's implementation that affects this functionality:
https://github.com/bluez/bluez/issues/460
We have the Qt BLE framework implemented, but ACS itself is planned at a later stage.