C

Qt VNC Server - VncChat Example

Demonstrates how to make a simple application that uses Qt VNC Server.

VncChat demonstrates the use of the Qt VNC Server module.

The example is a very basic and disorganized chat application, which consists of a text editor that is exposed to VNC®-compatible clients and can be edited by anyone at any time.

The text editor and its frame is wrapped by a VncItem which causes it to automatically be shared over the connection:

VncItem {
    id: grabber
    anchors.fill: parent

    vncPort: -1

    serverName: "Qt Vnc Chat Server"

    Rectangle {
        id: editorFrame
        anchors.fill: parent
        anchors.margins: window.width * 0.1
        radius: window.width * 0.1

        color: "gainsboro"
        TextArea {
            id: textArea
            anchors.fill: parent
            anchors.margins: window.width * 0.1
            background: null
            placeholderText: "Say something nice"
            placeholderTextColor: "darkslategrey"
        }
    }
}

Only the contents of the VncItem will be shared, so the colored frame around it and application title will only be visible locally.

The requested port of the VncItem is set to -1.

vncPort: -1

This means the server will be cycling through ports 5900 to 5999 until it finds an available port. Automatically selecting a port can be convenient if the server is running on a machine where the default 5900 port may already be in use by other applications, such as a remote desktop sharing mechanism. Information about the actually selected port is displayed, so that it can be shared with the clients.

Label {
    id: portLabel
    anchors.top: titleLabel.bottom
    anchors.horizontalCenter: activeRect.horizontalCenter
    text: grabber.serverState === VncItem.Connected
          || grabber.serverState === VncItem.Listening
          ? "(Port " + grabber.vncPort + " is open for business)"
          : (grabber.serverState === VncItem.InitializationFailed ? "(Error initializing server)" : "")
    font.pixelSize: window.height * 0.015
}

Finally, the locally running application has a frame around the VncItem which changes color depending on whether a client is connected or not. In the screenshot, this is dark sea green, indicating that a client has connected. When no client is connected, it will be the color 'salmon':

color: grabber.serverState === VncItem.Connected ? "darkseagreen" : "salmon"

Files:

Available under certain Qt licenses.
Find out more.