Pentru a obține dimensiunea de un QStringList în QML de la o proprietate a trecut de la C++ backend

0

Problema

Cu siguranta este o intrebare prosteasca, dar eu nu pot ieși din ea...

Există vreo metodă în QML parte pentru a obține dimensiunea de un QStringList trecut ca o proprietate din c++ backend? Nu se poate folosi proprietatea de a umple modelul de un combobox dar eu nu pot găsi o cale dreaptă pentru a obține dimensiunea (desigur nu pot expune o invokable metoda din cpp, dar nu e ceea ce vreau)

exemplu:

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

Cel mai bun răspuns

1

O QStringList acționează ca un JS matrice de siruri de caractere în QML. În general, puteți utiliza Arraymodelului funcții pe ea : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

Și când nu mai poți, poți în mod explicit o matrice cu Array.from

În cazul tău vrei length:

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

Perfect, mulțumesc. Doar pentru informatii, pentru mine a funcționat fără paranteze: dacă(test.availableCameras.lungimea === 1)
Matteo Barbieri

Într-adevăr, îmi pare rău că e o greșeală din partea mea.
GrecKo

În alte limbi

Această pagină este în alte limbi

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