【问题标题】:Passing QByteArray image from c++ to QML [duplicate]将 QByteArray 图像从 C++ 传递到 QML [重复]
【发布时间】:2013-07-22 01:31:13
【问题描述】:

我需要使用从 c++ 例程传递到 QML 的 QByteArray 在 QML 页面中显示 png 图像。我该怎么做?请帮我解决这些问题..

【问题讨论】:

标签: qml blackberry-10 blackberry-cascades qbytearray


【解决方案1】:

假设您的数据位于名为 dataQByteArray 中,这应该可以:

QImage image;
image.loadFromData(data);
const QImage swappedImage = image.rgbSwapped();
const bb::ImageData imageData = bb::ImageData::fromPixels(swappedImage.bits(), bb::PixelFormat::RGBA_Premultiplied, swappedImage.width(), swappedImage.height(), swappedImage.bytesPerLine());

_image = bb::cascades::Image(imageData);

您现在可以在 QML 代码中的 ImageView 中显示 _image。为此,您必须将其转换为QVariant:QVariant::fromValue(_image);。完成后,您可以在任何ImageView 中显示它。我假设你有一个名为feed 的对象,它有一个image 属性(QVariant):

ImageView {
    image: feed.image
}

【讨论】:

  • 感谢您的回复。如何在 QML 中将此 _image 传递给 ImageView。我尝试了很多方法,但都失败了...!!
  • 我更新了我的答案来解释这一点。基本上,您必须将图像转换为QVariant,然后一切正常。
  • 感谢您的回复。请提供更多帮助。如何为名为 feed 的对象设置图像属性 (QVaiant)。
  • 我的“feed”对象是从 C++ 导出的对象。它的类使用Q_PROPERTY 宏声明不同的属性:developer.blackberry.com/cascades/reference/properties.html
  • 请您给我一个示例代码,用于在这种情况下实现 Q_PROPERTY。因为文档有点混乱。提前致谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 2016-02-22
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多