将图像从url加载到StandardListItem

时间:2015-12-14 12:06:13

标签: c++ blackberry qml blackberry-10

我在Blackberry 10应用程序的QML中有以下ListView:

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不支持从Web加载图像,因为我收到以下错误:

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

我该如何处理?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

默认情况下,

imageview不支持从网址加载图片。您可以实现webimageview,它支持从Internet加载图像并在列表视图中使用它。 webimageview示例项目可在github上找到

答案 1 :(得分:1)

Blackberry 10.3 SDK似乎不支持从网址加载图片。我必须实现一个实现图像视图的自定义QML类型,图像源是一个使用QNetworkAccess从URL获取图像的方法。

答案 2 :(得分:0)

这个问题刚刚在很多线程的blackberry开发论坛中解决了。 这是解决方案之一,应该可以解决您的问题:

工作流程为:

1)调用setImage方法

2)在QNetworkAccessManager类的get()方法之后发出了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