Я создал класс Publisher, который периодически испускает объект QImage.
Однако мне сложно провести рисунок QImage в элементе QML. Похоже, что компоненты Image и Canvas QML требуют QUrl вместо QImage, но я не уверен, как преобразовать my QImage в QUrl. Edit4: Когда я говорю QUrl, я не имею в виду, что я пытаюсь преобразовать изображение в URL. Это вздор. Я имею в виду, что хочу создать ссылку на это изображение, которое не находится на диске, а тип данных, который запрашиваются компонентами QML, - это URL-адрес.
Я провел некоторое исследование и обнаружил, что QQuickImageProvider предоставляет решение, но я не нашел никакой документации, объясняющей, как преобразовать мой сигнал QImage в QUrl, который я могу использовать для рисования. Любой пример кода или справочная документация будут оценены.
Спасибо за вашу помощь!
Edit1:
Я посмотрел здесь: http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html, и я не вижу, как я передаю QImage поставщику быстрых изображений и из него создаю QUrl.
Edit2. Вот заголовок. Реализация не должна быть важной.
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
}
}
}
}