C
Event Sender: Sending Messages to Applications
// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial // This file is part of the Qt Safe Renderer module import QtQuick import QtQuick.Controls Item { id: connectionItem width: 120 height: 35 y: 325 property bool connectionState: clusterDataControl.connectionBool RegularExpressionValidator { id: ipValidator regularExpression: /^(\d{1,3}\.){3}\d{1,3}$/ } // Input field for IP TextField { id: ipField y: 10 width: connectionItem.width - 20 height: 25 font.pixelSize: 13 text: hostName === "" ? "127.0.0.1" : hostName inputMethodHints: Qt.ImhNoPredictiveText // Disable auto-correction validator: ipValidator anchors.top: parent.top // Anchor to the top of the parent rectangle } // Input field for Port TextField { id: portField y: ipField.bottom + 10 width: connectionItem.width - 20 height: 25 font.pixelSize: 13 text: "32124" inputMethodHints: Qt.ImhDigitsOnly // Only accept digits validator: IntValidator { bottom: 0; top: 65535 } // Validate port range anchors.top: ipField.bottom // Anchor to the bottom of the ipField } // Text that says the status "not connected", "connecting" or "connected" Text { id: statusValueText y: -20 width: 20 height: 20 text: "Not Connected" anchors.centerIn: parent.horizontalCenter font.pixelSize: 14 color: "red" function updateStatusTextAndColor(connectionState) { // QAbstractSocket::UnconnectedState is represented by the value of 0 if (connectionState === 0) { statusValueText.text = "Not Connected"; statusValueText.color = "red"; // QAbstractSocket::ConnectingState is represented by the value of 1 } else if (connectionState === 1) { statusValueText.text = "Connecting.."; statusValueText.color = "blue"; // QAbstractSocket::ConnectedState is represented by the value of 2 } else if (connectionState === 2) { statusValueText.text = "Connected"; statusValueText.color = "green"; } } Component.onCompleted: { clusterDataControl.connectionStateChanged.connect(updateStatusTextAndColor); } } // Connect button Button { id: connectButton x: 100 y: portField.right + 10 width: connectionItem.width - 20 height: ipField.height + portField.height text: "Connect" enabled: ipField.acceptableInput && portField.acceptableInput // Enable only if inputs are valid onClicked: { clusterDataControl.connectToServer(ipField.text, portField.text) } } // Button { // id: button // anchors.bottom: statusValueText.top // anchors.left: statusValueText // text: "Info" // ToolTip.text: "about ip and port" // Set the tool tip text for the button // ToolTip.delay: 1000 // Set the delay before the tool tip is shown (in milliseconds) // ToolTip.timeout: 3000 // Set the timeout after which the tool tip is hidden (in milliseconds) // ToolTip.visible: hovered // Show the tool tip only when the button is hovered // } }