In Windows, you can not open a single port simultaneously by multiple applications.
It is impossible, it is a "feature" Windows.

For these purposes, you can use this solution:
1. There are some single application(manager/server), which opens / closes the necessary ports by requests from other applications, and returns for this applications a open ports descriptors.
(ie provides an interface for queries like:
bool openPort (portName)
bool closePort (portName or descriptor)
HANDLE getDescriptor (portName)
and etc)

2. There are some applications(clients) that make requests to the server-application with a command to open/close port descriptor and perform I / O through these received descriptors.
(ie provides an interface for I/O like:
write(descriptor, ...)
read(descriptor, ...)
and etc)

3. Exchange of data between applications (client-server) or by a QLocalSocket or etc.
4. Must somehow take into account all the nuances associated with simultaneous access to I / O from clients, or to repeated requests for opening / closing.
In general, you have to think everything through very well.

To get a descriptor using libraries QextSerialPort or QSerialDevice need to patch/modify and add a new method of type getDescriptor().

Library QSerialDevice provide only exclusive access to a port to all platforms. This is done on purpose for typization/unification.