使用QImage和QQuickImageProvider

时间:2015-04-28 20:49:14

标签: c++ qml qimage qlist

我创建了一个继承QQuickImageProvider类的类, 但我想使用QQuickImageProvider的requestImage()函数来设置QImage变量,但我不知道如何做到这一点,因为我需要来自类对象的QImage变量,该对象已经在ContextProperty的QML中进行了定义并希望使用id变量作为索引值从List中检索QImage。这是主要的功能代码:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    ImageProvider *imageProvider = new ImageProvider;
    QQmlApplicationEngine engine;
    PageBuffer p;
   engine.rootContext()->setContextProperty("p",&p);
   engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
   engine.addImageProvider("images", imageProvider);

    return app.exec();
}

PageBuffer p包含当用户选择了List的某个索引值时,我需要使用QQuick ImageProvider呈现的QImages列表。 这是QML代码的片段,我想将索引值传递给imageprovider,它显示一个Image Element,它将显示保存在PageBuffer对象中的Qimages列表中的一个元素:

    Image{
                    x: 4
                    y: 4
                    height : imagerec.height
                    visible: true
                    width : imagerec.width
                    anchors.fill: imagerec
                    source:fileUrl
                    Text{
                        id:txt
                        x: 0
                        y: 71
                        text:"Sketch"+(index+1)
                        horizontalAlignment: txt.AlignHCenter
                        font.family: "Tahoma"
                        color:"#ffffff"

                    }

                    MouseArea {
                        anchors.rightMargin: -59
                        anchors.bottomMargin: -39
                        anchors.fill: parent
                        onClicked: {
                            p.index=index;
                            p.image=mod.get(index).fileUrl
                           images.image=p.img
                          //  main.source="image://image/1"

                    //                                main.source=p.image

                                  //        console.log(mod.get(index).fileUrl)
                            //              main.source=p.image;

                            //   currentimage=m.image;
                        }
                    }
                }

0 个答案:

没有答案