2015-12-14 4 views
1

je le ListView suivant dans QML de mon application Blackberry 10:Images de URL pour StandardListItem

ListView { 
      id: listview 
      objectName: "listview" 
      dataModel: _app.model 
      horizontalAlignment: HorizontalAlignment.Fill 
      verticalAlignment: VerticalAlignment.Fill 

      //visible: false 
      listItemComponents: [ 
       ListItemComponent { 
        type: "item" 

        // Use a standard list item to display the data in the model 
        StandardListItem { 
         title: ListItemData.title 
         imageSource: ListItemData.poster_url 
         description: ListItemData.description 
        }     
       } 
      ] 
     } // ListView 

Mon application ajoute des données au modèle de réseau. Cependant, il semble QML ne supporte pas le chargement d'images à partir du Web depuis que je reçois l'erreur suivante:

"Unsupported scheme (http) used in url (http://image.url.org/xxxxx.jpg). Image loading aborted." 

Comment puis-je gérer cela?

Merci d'avance.

+1

Semble pertinent: [Blackberry - Chargement de l'image de l'URL] (https://supportforums.blackberry.com/t5/Native-Development/Loading-image-from-URL/td-p/1717927) – Drop

+0

J'ai vécu cette conversation. Aucune solution concluante n'est fournie cependant. – Wedava

+1

Le StandardListItem ne peut pas afficher les images chargées à partir d'URL, vous devez utiliser une image personnalisée, avec un gestionnaire d'images personnalisé qui sait comment charger des images à partir d'URL. – onion

Répondre

1

Il semble que le SDK Blackberry 10.3 ne supporte pas le chargement d'images à partir d'URL. J'ai dû implémenter un type QML personnalisé qui implémente une vue d'image avec la source de l'image étant une méthode qui extrait l'image de l'URL en utilisant QNetworkAccess.

0

Le problème est juste résolu dans le forum de développement blackberry dans de nombreux threads. C'est l'une de la solution et il faut résoudre votre problème:

Le flux de travail est:

1) appel méthode setImage méthode

2) après get() du QNetworkAccessManager classe votre replyFinished() est émis

3) votre image est prête à l'emploi

App::App() 
{ 
    //QNetworkAccessManager m_manager; 
    connect(&m_manager, SIGNAL(finished(QNetworkReply*)), 
     this, SLOT(replyFinished(QNetworkReply*))); 
} 

void App::setImage(const QString &url) 
{ 
    m_manager.get(QNetworkRequest(QUrl(url))); 
} 

void App::replyFinished(QNetworkReply* reply) 
{ 
    QByteArray data = reply->readAll(); 

    QImage qimage; 
    qimage.loadFromData(data); 

    int width = qimage.width(); 
    int height = qimage.height(); 
    PixelBufferData pixelBuffer = PixelBufferData(PixelBufferData::RGBX, width, height, width, qimage.bits()); 

    Image image = Image(pixelBuffer); 
    m_imageView->setImage(image); 
} 

BlackBerry Forum Thread Link

2

imageview par défaut ne supporte pas le chargement d'images de l'URL. Vous pouvez implémenter webimageview qui prend en charge le chargement d'images à partir d'Internet et l'utiliser dans votre listview. exemple de projet webimageview est disponible sur github