我在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."
我该如何处理?
提前谢谢。
答案 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);
}