我有一个项目,它显示 IP 摄像机单击的图像,它是显示图像 unsing image Provider 类,在图像控制中,现在我想要的是单击 2 个图像并在两个不同的图像控制中显示这两个图像,我是 qt 和 i 的新手尝试了很多方法但没有成功我当前的代码如下
用于注册图像提供商
engine.addImageProvider(QLatin1String("capturedImage"), capturedImageProvider);
Image Provider 的写法如下 #包括 #include“imageProvider.h”
ImageProvider::ImageProvider(QObject *parent) :
QQuickImageProvider(QQmlImageProviderBase::Image)
{
}
QImage ImageProvider::requestImage(const QString &id, QSize *size, const QSize&
requestedSize)
{
QImageReader reader("output.png");
//QImageReader reader(id);
QImage newImage = reader.read();
return newImage;
}
在qml中我写的如下
onUpdateCapturedImage: {
fmImage.source = "image://capturedImage?id=" + Math.random()
fmImage2.source = "image://capturedImage?id=" + Math.random()
btCapture.enabled = true
pin.visible = false
btCancel.visible = false
btCapture.visible =true
lbFileName.visible = false
tmUpdateProgress.stop()
if(status) {
lbFileName.text = fileName;
}
这里 fmImage 和 fmImage2 是图像控件,当前两个控件都显示相同的图像,我希望它们显示不同的图像,我该怎么做,请有人用小例子解释我
指定显示哪个图像的方法是在 ID 字段中。目前,您将
Math.random()
作为 ID 传递,然后在 requestImage 函数中忽略它。但如果您更改它以使 ID 有意义,您可以决定返回哪个图像。
onUpdateCapturedImage: {
fmImage.source = "image://capturedImage?id=" + firstId
fmImage2.source = "image://capturedImage?id=" + secondId
}
QImage ImageProvider::requestImage(const QString &id, QSize *size, const QSize&
requestedSize)
{
QImageReader reader;
if (id == firstId)
{
reader.setFileName("output1.png");
}
else if (id == secondId)
{
reader.setFileName("output2.png");
}
else
{
// Unknown image
}
QImage newImage = reader.read();
return newImage;
}