Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. QML Bluetooth scanner example doesn't work
Qt 6.11 is out! See what's new in the release blog

QML Bluetooth scanner example doesn't work

Scheduled Pinned Locked Moved QML and Qt Quick
1 Posts 1 Posters 721 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • X Offline
    X Offline
    xalam
    wrote on last edited by xalam
    #1

    The Qt example to scan Bluetooth devices here or just open up Qt Creator and load it from the example there, doesn't work for me. When I run it ti gives out an error:

    qml: Error: Invalid Bluetooth Adapter Error

    Of course this is code generated error and here is the actual qml file that generates it (again same as the Qt supplied example).

    import QtQuick 2.0
    import QtBluetooth 5.2
    
    Item {
        id: top
    
        property BluetoothService currentService
    
        BluetoothDiscoveryModel {
            id: btModel
            running: true
            discoveryMode: BluetoothDiscoveryModel.DeviceDiscovery
            onDiscoveryModeChanged: console.log("Discovery mode: " + discoveryMode)
            onServiceDiscovered: console.log("Found new service " + service.deviceAddress + " " + service.deviceName + " " + service.serviceName);
            onDeviceDiscovered: console.log("New device: " + device)
            onErrorChanged: {
                    switch (btModel.error) {
                    case BluetoothDiscoveryModel.PoweredOffError:
                        console.log("Error: Bluetooth device not turned on"); break;
                    case BluetoothDiscoveryModel.InputOutputError:
                        console.log("Error: Bluetooth I/O Error"); break;
                    case BluetoothDiscoveryModel.InvalidBluetoothAdapterError:
                        console.log("Error: Invalid Bluetooth Adapter Error"); break;
                    case BluetoothDiscoveryModel.NoError:
                        break;
                    default:
                        console.log("Error: Unknown Error"); break;
                    }
            }
       }
    
        Rectangle {
            id: busy
    
            width: top.width * 0.7;
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.top: top.top;
            height: text.height*1.2;
            radius: 5
            color: "#1c56f3"
            visible: btModel.running
    
            Text {
                id: text
                text: "Scanning"
                font.bold: true
                font.pointSize: 20
                anchors.centerIn: parent
            }
    
            SequentialAnimation on color {
                id: busyThrobber
                ColorAnimation { easing.type: Easing.InOutSine; from: "#1c56f3"; to: "white"; duration: 1000; }
                ColorAnimation { easing.type: Easing.InOutSine; to: "#1c56f3"; from: "white"; duration: 1000 }
                loops: Animation.Infinite
            }
        }
    
        ListView {
            id: mainList
            width: top.width
            anchors.top: busy.bottom
            anchors.bottom: buttonGroup.top
            anchors.bottomMargin: 10
            anchors.topMargin: 10
            clip: true
    
            model: btModel
            delegate: Rectangle {
                id: btDelegate
                width: parent.width
                height: column.height + 10
    
                property bool expended: false;
                clip: true
                Image {
                    id: bticon
                    source: "qrc:/default.png";
                    width: bttext.height;
                    height: bttext.height;
                    anchors.top: parent.top
                    anchors.left: parent.left
                    anchors.margins: 5
                }
    
                Column {
                    id: column
                    anchors.left: bticon.right
                    anchors.leftMargin: 5
                    Text {
                        id: bttext
                        text: deviceName ? deviceName : name
                        font.family: "FreeSerif"
                        font.pointSize: 16
                    }
    
                    Text {
                        id: details
                        function get_details(s) {
                            if (btModel.discoveryMode == BluetoothDiscoveryModel.DeviceDiscovery) {
                                //We are doing a device discovery
                                var str = "Address: " + remoteAddress;
                                return str;
                            } else {
                                var str = "Address: " + s.deviceAddress;
                                if (s.serviceName) { str += "<br>Service: " + s.serviceName; }
                                if (s.serviceDescription) { str += "<br>Description: " + s.serviceDescription; }
                                if (s.serviceProtocol) { str += "<br>Protocol: " + s.serviceProtocol; }
                                return str;
                            }
                        }
                        visible: opacity !== 0
                        opacity: btDelegate.expended ? 1 : 0.0
                        text: get_details(service)
                        font.family: "FreeSerif"
                        font.pointSize: 14
                        Behavior on opacity {
                            NumberAnimation { duration: 200}
                        }
                    }
                }
                Behavior on height { NumberAnimation { duration: 200} }
    
                MouseArea {
                    anchors.fill: parent
                    onClicked: btDelegate.expended = !btDelegate.expended
                }
            }
            focus: true
        }
    
        Row {
            id: buttonGroup
            property var activeButton: devButton
    
            anchors.bottom: parent.bottom
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.bottomMargin: 5
            spacing: 10
    
            Button {
                id: fdButton
                width: top.width/3*0.9
                //mdButton has longest text
                height: mdButton.height
                text: "Full Discovery"
                onClicked: btModel.discoveryMode = BluetoothDiscoveryModel.FullServiceDiscovery
            }
            Button {
                id: mdButton
                width: top.width/3*0.9
                text: "Minimal Discovery"
                onClicked: btModel.discoveryMode = BluetoothDiscoveryModel.MinimalServiceDiscovery
            }
            Button {
                id: devButton
                width: top.width/3*0.9
                //mdButton has longest text
                height: mdButton.height
                text: "Device Discovery"
                onClicked: btModel.discoveryMode = BluetoothDiscoveryModel.DeviceDiscovery
            }
        }
    
    }
    
    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved