2015-12-14 2 views
1

У меня есть следующие ListView в QML моего Blackberry 10 приложения:Загрузка изображений из URL в 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 

Мое приложение добавляет данные модели из сети. Однако, похоже, QML не поддерживает загрузку изображений из Интернета, так как я получаю следующее сообщение об ошибке:

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

Как я могу справиться с этим?

Заранее спасибо.

+1

Кажется, что актуально: [Blackberry - Загрузка изображения с URL-адреса] (https://supportforums.blackberry.com/t5/Native-Development/Loading-image-from-URL/td-p/1717927) – Drop

+0

Я прошел через этот разговор. Однако нет убедительного решения. – Wedava

+1

В стандартномListItem не отображаются изображения, загруженные из URL-адресов, вам нужно использовать пользовательский, с помощью специального обработчика изображений, который знает, как загружать изображения из URL-адресов. – onion

ответ

1

Кажется, что Blackberry 10.3 SDK не поддерживает загрузку изображений из URL-адресов. Мне пришлось реализовать пользовательский тип QML, который реализует представление изображения с источником изображения, являющимся методом, который извлекает изображение из URL с помощью QNetworkAccess.

0

Проблема просто решена на форуме blackberry dev во многих потоках. Это один из раствора и его следует решить вашу проблему:

Поток работы:

1) вызова метод setImage

2) после Получа() из QNetworkAccessManager класс ваш replyFinished() испускается

3) ваш образ готов к использованию

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 по умолчанию не поддерживает загрузку изображений с URL. Вы можете реализовать webimageview, который поддерживает загрузку изображений из Интернета и использование их в вашем списке. webimageview образец проекта доступен на github

Смежные вопросы