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. [Solved]Lost Wifi settings after reboot
Forum Updated to NodeBB v4.3 + New Features

[Solved]Lost Wifi settings after reboot

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
14 Posts 3 Posters 2.1k 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.
  • K Offline
    K Offline
    Kuzma30
    wrote on last edited by
    #3

    I add this code to my class for system parameters

    class MySystem : public QObject
    {
        Q_OBJECT
    ....
    Q_PROPERTY 
    ......
    public:
        void connectWiFi()
            {
                auto wifiManager = new QNetworkSettingsManager(this);
                QString ssid = "mySSID";
                QString password = "myPassword";
                wifiManager->connectBySsid(ssid,password);
            }
    

    and get error during linking

    :-1: error: CMakeFiles/Ferti.dir/main.cpp.o: in function MySystem::connectWiFi()': /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:-1: error: undefined reference to QNetworkSettingsManager::QNetworkSettingsManager(QObject*)'
    :-1: error: /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:47:(.text._ZN8MySystem11connectWiFiEv[_ZN8MySystem11connectWiFiEv]+0x58): undefined reference to `QNetworkSettingsManager::connectBySsid(QString const&, QString const&)'

    JoeCFDJ 1 Reply Last reply
    0
    • K Kuzma30

      I add this code to my class for system parameters

      class MySystem : public QObject
      {
          Q_OBJECT
      ....
      Q_PROPERTY 
      ......
      public:
          void connectWiFi()
              {
                  auto wifiManager = new QNetworkSettingsManager(this);
                  QString ssid = "mySSID";
                  QString password = "myPassword";
                  wifiManager->connectBySsid(ssid,password);
              }
      

      and get error during linking

      :-1: error: CMakeFiles/Ferti.dir/main.cpp.o: in function MySystem::connectWiFi()': /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:-1: error: undefined reference to QNetworkSettingsManager::QNetworkSettingsManager(QObject*)'
      :-1: error: /home/qtemb/FertiGUI/cpp/MySystem/mysystem.h:47:(.text._ZN8MySystem11connectWiFiEv[_ZN8MySystem11connectWiFiEv]+0x58): undefined reference to `QNetworkSettingsManager::connectBySsid(QString const&, QString const&)'

      JoeCFDJ Offline
      JoeCFDJ Offline
      JoeCFD
      wrote on last edited by JoeCFD
      #4

      @Kuzma30 said in Lost Wifi settings after reboot:

      QNetworkSettingsManager

      You can not find the class QNetworkSettingsManager From here
      https://doc.qt.io/qt-6/classes.html
      Was it dropped in Qt6? I guess you are running Qt6 example.
      What are your Qt version and OS?

      K 1 Reply Last reply
      0
      • JoeCFDJ JoeCFD

        @Kuzma30 said in Lost Wifi settings after reboot:

        QNetworkSettingsManager

        You can not find the class QNetworkSettingsManager From here
        https://doc.qt.io/qt-6/classes.html
        Was it dropped in Qt6? I guess you are running Qt6 example.
        What are your Qt version and OS?

        K Offline
        K Offline
        Kuzma30
        wrote on last edited by
        #5

        @JoeCFD said in Lost Wifi settings after reboot:

        QNetworkSettingsManager

        Qt 6.7.0 (boot2qt distro), OS linux

        Axel SpoerlA 1 Reply Last reply
        0
        • K Kuzma30

          @JoeCFD said in Lost Wifi settings after reboot:

          QNetworkSettingsManager

          Qt 6.7.0 (boot2qt distro), OS linux

          Axel SpoerlA Online
          Axel SpoerlA Online
          Axel Spoerl
          Moderators
          wrote on last edited by
          #6

          @Kuzma30
          But there's no QNetworkSettingsManagerin 6.7....

          Software Engineer
          The Qt Company, Oslo

          K 1 Reply Last reply
          0
          • Axel SpoerlA Axel Spoerl

            @Kuzma30
            But there's no QNetworkSettingsManagerin 6.7....

            K Offline
            K Offline
            Kuzma30
            wrote on last edited by
            #7

            @Axel-Spoerl
            Agree (I don't know from where I get this files in my bsp). Now I rolling back to 6.6.
            How to connect to WiFI nbetwork with SSID and password in v6.6?

            Axel SpoerlA 1 Reply Last reply
            0
            • K Kuzma30

              @Axel-Spoerl
              Agree (I don't know from where I get this files in my bsp). Now I rolling back to 6.6.
              How to connect to WiFI nbetwork with SSID and password in v6.6?

              Axel SpoerlA Online
              Axel SpoerlA Online
              Axel Spoerl
              Moderators
              wrote on last edited by
              #8

              @Kuzma30
              It was removed.
              The reason, in a nutshell, is that the OS typically takes care of that and an application shouldn't manage its own network settings.

              Software Engineer
              The Qt Company, Oslo

              K 1 Reply Last reply
              0
              • Axel SpoerlA Axel Spoerl

                @Kuzma30
                It was removed.
                The reason, in a nutshell, is that the OS typically takes care of that and an application shouldn't manage its own network settings.

                K Offline
                K Offline
                Kuzma30
                wrote on last edited by
                #9

                @Axel-Spoerl
                But this code works in QML 6.6 (Set button for enter password for SSID)

                                QtButton{
                                    id: setButton
                                    text: qsTr("SET")
                                    height: GUIParam.dialogButtonSize
                                    onClicked: {
                                        if (showSsid) {
                                            NetworkSettingsManager.connectBySsid(ssidField.text, passField.text)
                                            showSsid = false
                                        } else {
                                            NetworkSettingsManager.userAgent.setPassphrase(passField.text)
                                        }
                                        passphrasePopup.visible = false;
                                    }
                                }
                
                Axel SpoerlA 1 Reply Last reply
                0
                • K Kuzma30

                  @Axel-Spoerl
                  But this code works in QML 6.6 (Set button for enter password for SSID)

                                  QtButton{
                                      id: setButton
                                      text: qsTr("SET")
                                      height: GUIParam.dialogButtonSize
                                      onClicked: {
                                          if (showSsid) {
                                              NetworkSettingsManager.connectBySsid(ssidField.text, passField.text)
                                              showSsid = false
                                          } else {
                                              NetworkSettingsManager.userAgent.setPassphrase(passField.text)
                                          }
                                          passphrasePopup.visible = false;
                                      }
                                  }
                  
                  Axel SpoerlA Online
                  Axel SpoerlA Online
                  Axel Spoerl
                  Moderators
                  wrote on last edited by
                  #10

                  @Kuzma30
                  Can you post a screenshot of what it does, when it runs?

                  Software Engineer
                  The Qt Company, Oslo

                  K 1 Reply Last reply
                  0
                  • Axel SpoerlA Axel Spoerl

                    @Kuzma30
                    Can you post a screenshot of what it does, when it runs?

                    K Offline
                    K Offline
                    Kuzma30
                    wrote on last edited by
                    #11

                    @Axel-Spoerl
                    img1.jpg img2.jpg img3.jpg img4.jpg

                    I make photo of procedure connecting to WiFi in my app. User can't access to system parameters.

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      Kuzma30
                      wrote on last edited by
                      #12

                      I am trying auto connect to wifi when main window loaded from ssid andd pass

                          Component.onCompleted: {
                              console.log("Check WiFi param")
                              var ssid = param.getParameterValue("WIFI_SSID")
                      
                              if (ssid !== "none") {
                                  console.log("Power On WiFi")
                                  for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                      var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0);
                                      wifiInterface.powered = true;
                                      pauseWiFi.start()
                                      console.log("power on")
                                  }
                                  NetworkSettingsManager.interfacesChanged();
                                  wifiSwitchTimer.start();
                              }
                          }
                          Timer {
                              id: pauseWiFi
                              interval: 1000
                              running: false
                          }
                          Timer {
                              id: wifiSwitchTimer
                              interval: 5000
                              running: false
                              onTriggered: {
                                  var ssid = param.getParameterValue("WIFI_SSID")
                      
                                  var pass = param.getParameterValue("WIFI_PASSWORD")
                      
                                  console.log("Connecting to WiFi " + ssid)
                                  NetworkSettingsManager.connectBySsid(ssid, pass)
                              }
                          }
                      

                      But I get error

                      Tried to scan while not powered
                      
                      K 1 Reply Last reply
                      0
                      • K Kuzma30

                        I am trying auto connect to wifi when main window loaded from ssid andd pass

                            Component.onCompleted: {
                                console.log("Check WiFi param")
                                var ssid = param.getParameterValue("WIFI_SSID")
                        
                                if (ssid !== "none") {
                                    console.log("Power On WiFi")
                                    for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                        var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, 0);
                                        wifiInterface.powered = true;
                                        pauseWiFi.start()
                                        console.log("power on")
                                    }
                                    NetworkSettingsManager.interfacesChanged();
                                    wifiSwitchTimer.start();
                                }
                            }
                            Timer {
                                id: pauseWiFi
                                interval: 1000
                                running: false
                            }
                            Timer {
                                id: wifiSwitchTimer
                                interval: 5000
                                running: false
                                onTriggered: {
                                    var ssid = param.getParameterValue("WIFI_SSID")
                        
                                    var pass = param.getParameterValue("WIFI_PASSWORD")
                        
                                    console.log("Connecting to WiFi " + ssid)
                                    NetworkSettingsManager.connectBySsid(ssid, pass)
                                }
                            }
                        

                        But I get error

                        Tried to scan while not powered
                        
                        K Offline
                        K Offline
                        Kuzma30
                        wrote on last edited by
                        #13

                        Updated code. More progress.

                            Component.onCompleted: {
                                NetworkSettingsManager.interfacesChanged()
                                pauseWiFi.start()
                            }
                            Timer {
                                id: pauseWiFi
                                interval: 3000
                                running: false
                                onTriggered: {
                                    NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                    console.log("Check WiFi param")
                                    var ssid = param.getParameterValue("WIFI_SSID")
                        
                                    if (ssid !== "none") {
                                        console.log("Power On WiFi")
                                        //sc.setWiFiOn()
                        
                                        for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                            console.log("i="+i)
                                            var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                            wifiInterface.powered = true;
                        
                                            console.log("power on")
                                        }
                        
                                    }
                                    wifiSwitchTimer.start();
                                }
                            }
                            Timer {
                                id: wifiSwitchTimer
                                interval: 5000
                                running: false
                                onTriggered: {
                                    var ssid = param.getParameterValue("WIFI_SSID")
                        
                                    var pass = param.getParameterValue("WIFI_PASSWORD")
                        
                                    console.log("Connecting to WiFi  \""+ ssid + "\"")
                        
                                    NetworkSettingsManager.userAgent.setPassphrase(pass)
                                    NetworkSettingsManager.connectBySsid(ssid, pass)
                                    NetworkSettingsManager.interfacesChanged()
                                }
                            }
                        

                        Now program poweron WiFi, NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) != null.
                        But result of connectBySsid() with correct ssid and pass - powered on WiFi but without connection.
                        I try code with and without NetworkSettingsManager.interfacesChanged() in the end. Same results.

                        K 1 Reply Last reply
                        0
                        • K Kuzma30

                          Updated code. More progress.

                              Component.onCompleted: {
                                  NetworkSettingsManager.interfacesChanged()
                                  pauseWiFi.start()
                              }
                              Timer {
                                  id: pauseWiFi
                                  interval: 3000
                                  running: false
                                  onTriggered: {
                                      NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                      console.log("Check WiFi param")
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      if (ssid !== "none") {
                                          console.log("Power On WiFi")
                                          //sc.setWiFiOn()
                          
                                          for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                              console.log("i="+i)
                                              var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                              wifiInterface.powered = true;
                          
                                              console.log("power on")
                                          }
                          
                                      }
                                      wifiSwitchTimer.start();
                                  }
                              }
                              Timer {
                                  id: wifiSwitchTimer
                                  interval: 5000
                                  running: false
                                  onTriggered: {
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      var pass = param.getParameterValue("WIFI_PASSWORD")
                          
                                      console.log("Connecting to WiFi  \""+ ssid + "\"")
                          
                                      NetworkSettingsManager.userAgent.setPassphrase(pass)
                                      NetworkSettingsManager.connectBySsid(ssid, pass)
                                      NetworkSettingsManager.interfacesChanged()
                                  }
                              }
                          

                          Now program poweron WiFi, NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) != null.
                          But result of connectBySsid() with correct ssid and pass - powered on WiFi but without connection.
                          I try code with and without NetworkSettingsManager.interfacesChanged() in the end. Same results.

                          K Offline
                          K Offline
                          Kuzma30
                          wrote on last edited by
                          #14

                          Final code, that working for me

                             Component.onCompleted: {
                                  NetworkSettingsManager.interfacesChanged()
                                  pauseWiFi.start()
                              }
                              Timer {
                                  id: pauseWiFi
                                  interval: 3000
                                  running: false
                                  onTriggered: {
                                      NetworkSettingsManager.services.type = NetworkSettingsType.Wifi;
                                      console.log("Check WiFi param")
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      if (ssid !== "none") {
                                          console.log("Power On WiFi")
                                          for (var i = 0; NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i) !== null; i++) {
                                              console.log("i="+i)
                                              var wifiInterface = NetworkSettingsManager.interface(NetworkSettingsType.Wifi, i);
                                              wifiInterface.powered = true;
                          
                                              console.log("power on")
                                          }
                          
                                      }
                                      wifiSwitchTimer.start();
                                  }
                              }
                              property var connectingService: null
                              Timer {
                                  id: wifiSwitchTimer
                                  interval: 5000
                                  running: false
                                  onTriggered: {
                                      var ssid = param.getParameterValue("WIFI_SSID")
                          
                                      var pass = param.getParameterValue("WIFI_PASSWORD")
                          
                                      console.log("Connecting to WiFi  \""+ ssid + "\"")
                          
                                      for (var index = 0; index < 10; index++) {
                                          if (NetworkSettingsManager.services.itemFromRow(index).name===ssid){
                                              console.log("Found SSID at index = "+ index)
                                              root.connectingService = NetworkSettingsManager.services.itemFromRow(index)
                                          }
                                      }
                                      root.connectingService.connectService();
                                      NetworkSettingsManager.userAgent.setPassphrase(pass)
                                      vpntimer.start();
                                  }
                          
                              }
                                  Timer{
                                      id: vpntimer
                                      interval: 5000
                                      running: false
                                       onTriggered: {
                                           console.log("Start VPN")
                                           processWrapper.executeCommand("systemctl start openvpn-client@client")
                                       }
                                  }
                          
                          
                          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