我创建了一个类Publisher
它周期性地发出QImage
目的。
然而我很难画出QImage
到 QML 元素。看来Image
and Canvas
QML 组件需要QUrl
代替QImage
,但我不知道如何转换我的QImage
to a QUrl
。 Edit4:当我说 QUrl 时,我并不是说我正在尝试将图像转换为 URL。那是无稽之谈。我的意思是我想生成对此图像的引用,该图像不在磁盘上,并且 QML 组件要求的数据类型是 URL。
我做了一些研究发现QQuickImageProvider
提供了一个解决方案,但我还没有找到任何文档解释如何转换我的QImage
向a发出信号QUrl
我可以用它来绘图。任何示例代码或参考文档将不胜感激。
感谢您的帮助!
Edit1:
我在这里看了一下:http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html 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
}
}
}
}