Я создал класс 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
}
}
}
}