Obter o tamanho de um QStringList software livre a partir de uma propriedade passou a partir de C++ de back-end

0

Pergunta

Certamente é uma pergunta idiota, mas eu não posso ficar de fora...

Não há nenhum método no QML lado para obter o tamanho de um QStringList passado como uma propriedade do c++ back-end? Eu posso usar a propriedade para preencher o modelo de uma caixa de combinação, mas eu não consigo encontrar um caminho direto para obter o tamanho (é claro que eu posso expor um invokable método do cpp, mas não é o que eu quero)

exemplo:

o teste.h

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

private:
qStringList m_availableCameras

o teste.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

Melhor resposta

1

Um QStringList atua como um JS matriz de seqüências de caracteres em software livre. Em geral, você pode usar Array's funções sobre ele : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

E quando você não pode, você pode explicitamente torná-lo uma matriz real com Array.from

No seu caso você quer length:

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

Perfeito, obrigado. Apenas para informação, para mim funcionou sem os parênteses: se(teste.availableCameras.comprimento === 1)
Matteo Barbieri

De fato, pena que é um erro da minha parte.
GrecKo

Em outros idiomas

Esta página está em outros idiomas

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