我创建了一个名为Publisher
的类,周期性地发射一个QImage
对象。
然而,我很难将QImage
绘制到QML元素上。似乎Image
和Canvas
QML组件需要使用QUrl
而不是QImage
,但我不知道如何将我的QImage
转换为QUrl
。编辑4:当我说QUrl时,我并不是说我要将图像转换为URL。那是无意义的。我的意思是我想生成对这个图像的引用,该图像不在磁盘上,并且QML组件正在请求的数据类型是URL。
我做了一些研究,发现QQuickImageProvider
提供了解决方案,但我没有找到任何文档说明如何将我的QImage
信号转换为可用于绘制的QUrl
。如果有示例代码或参考文档,将不胜感激。
谢谢您的帮助!
编辑1:
我看过这里:http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html,但我不知道如何将一个QImage
传递给快速图像提供程序,并从中创建一个QUrl
。
编辑2。这是头文件。实现应该无关紧要。
class Publisher
{
Q_OBJECT
public:
Publisher(QObject* parent = 0);
virtual ~Publisher(void);
Q_SIGNALS:
void newImage(const QImage& newImage);
};
编辑 3. 这是我的 QML 代码,但我不知道如何绘制我的 QImage,所以这段代码有点没有意义。
我的 main.cpp 文件:
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<Publisher>("Components", 1, 0, "Publisher");
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/QQuickViewExample/main.qml"));
viewer.showExpanded();
return app.exec();
}
我的 main.qml 文件:
import QtQuick 2.0
import Components 1.0
Rectangle {
id : testRect
width: 360
height: 360
Image{
anchors.fill: parent
id: myImage
Publisher {
id: myPub
onNewImage: {
myImage.source = newImage; #I know this doesnt work, it needs a QUrl and not a QImage
}
}
}
}