Ottenere la dimensione di un QStringList in QML da una proprietà passò C++ backend

0

Domanda

Sicuramente è una domanda stupida ma io non riesco a uscirne...

C'è qualche metodo in QML lato per ottenere la dimensione di un QStringList passato come una proprietà dal c++ backend? Posso utilizzare la proprietà per compilare il modello di una combobox, ma non riesco a trovare una via più semplice per ottenere la dimensione (naturalmente posso esporre un richiamabile metodo di cpp, ma non è quello che voglio)

esempio:

test.h

class Test : public Workflow
{
  Q_OBJECT
  Q_PROPERTY(QStringList availableCameras MEMBER m_availableCameras NOTIFY availableDevicesChanged)
[...]

private:
qStringList m_availableCameras

test.qml

    GroupBox{
      anchors.fill: parent
      title: "Camera Panel"
      property string selectedCamera: ""
    
      function showImage(){
        if(test.availableCameras.size() === 1) // NOT WORKING
        {
          return configurator.lastSingleImage
        }
        if(selectedCamera === test.rightCamSerialConf)
        {
          return configurator.lastRightImage
        }
        if(selectedCamera === test.leftCamSerialConf)
        {
          return configurator.lastLeftImage
        }
    
      }
      ComboBox{
                  model: test.availableCameras // WORKING
                  editable: false
                  onEditTextChanged: selectedCamera = editText
                } 
   [...]
   }
c++ qml qt
2021-11-17 09:06:16
1

Migliore risposta

1

Un QStringList agisce come un JS array di stringhe in QML. In generale, si può utilizzare Arrayfunzioni su di esso : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

E quando non è possibile, è possibile impostare la rendono un'effettiva array con Array.from

Nel tuo caso si desidera length:

if(test.availableCameras.length === 1)
2021-11-17 13:23:26

Perfetto, grazie. Solo per info, per me ha funzionato senza le parentesi quadre: se(test.availableCameras.lunghezza === 1)
Matteo Barbieri

Anzi, mi dispiace che sia un errore da parte mia.
GrecKo

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................