Qt / QML: Envie QImage do C ++ para o QML e exiba o QImage no GUI
Eu criei uma turmaPublisher
que periodicamente emite umQImage
objeto.
No entanto, estou tendo dificuldades para desenharQImage
para um elemento QML. Parece que oImage
eCanvas
Os componentes QML requeremQUrl
em vez de umQImage
, mas não sei como converter meuQImage
para umQUrl
. Edit4: Quando digo QUrl, não quero dizer que estou tentando converter uma imagem em um URL. Isso não faz sentido. Quero dizer, quero gerar uma referência a essa imagem, que não está no disco, e o tipo de dados que os componentes da QML estão solicitando é uma URL.
Eu fiz algumas pesquisas e descobri queQQuickImageProvider
fornece uma solução, mas não encontrei nenhuma documentação explicando como converterQImage
sinal para umQUrl
que eu posso usar para desenhar. Qualquer código de exemplo ou documentação de referência seria apreciado.
Obrigado pela ajuda!
Edit1:
Eu dei uma olhada aqui:http://qt-project.org/doc/qt-5.0/qtquick/qquickimageprovider.html e eu não vejo como eu passo um QImage para o provedor de imagem rápida e a partir dele crie um QUrl.
Edit2. Aqui está o cabeçalho. A implementação não deve ser importante.
class Publisher
{
Q_OBJECT
public:
Publisher(QObject* parent = 0);
virtual ~Publisher(void);
Q_SIGNALS:
void newImage(const QImage& newImage);
};
Edit 3. Aqui está o meu código QML, mas não sei como desenhar o meu QImage, então este código é meio sem sentido.
meu arquivo 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();
}
meu arquivo 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
}
}
}
}