c++ - Using QImage With QQuickImageProvider -


i have created class inherits qquickimageprovider class, want use requestimage() function of qquickimageprovider set qimage variable , dont know how need qimage variable class object , has been deifned in qml contextproperty , want use id variable index values retrieve qimage list. here main function code:

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 contains list of qimages need present using qquick imageprovider when index value list has been selected user. here snippet of qml code want pass index value imageprovider, shows image element display 1 of elements list of qimages saved in pagebuffer object:

    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;                         }                     }                 } 

you can set objectname of p in c++ code. assume name myobject. can pass name (as string) image provider(imageprovider in case):

main.source="image://imageprovider/myobject" 

as understand have own class, derived qquickimageprovider , overided requestimage. in case id "myobject". easy can real class objectname:

qquickwindow *window = qobject_cast<qquickwindow*>(engine.rootobjects()[0]);     pagebuffer *p = window->findchild<pagebuffer *>(id); 

i don't sure accessing root item, check please.

updated:

you can declare imageprovider as:

imageprovider.h

class imageprovider : public qquickimageprovider { public:     imageprovider (qqmlengine *engine,imagetype type, flags flags = 0); private:     qqmlengine *m_engine; } 

imageprovider.cpp

imageprovider ::imageprovider (qqmlengine *engine, imagetype type, flags flags)  :     qquickimageprovider(type,flags),     m_engine(engine) { }   qimage imageprovider ::requestimage(const qstring &id, qsize *size, const qsize &requestedsize) {     qquickwindow *window = qobject_cast<qquickwindow*>(m_engine.rootobjects()[0]);         pagebuffer *p = window->findchild<pagebuffer *>(id);     // p want } 

main.cpp

int main(int argc, char *argv[]) {     qapplication app(argc, argv);     qqmlapplicationengine engine;     imageprovider *imageprovider = new imageprovider(&engine,qqmlimageproviderbase::image,0);      pagebuffer p;     engine.rootcontext()->setcontextproperty("p",&p);     engine.load(qurl(qstringliteral("qrc:/main.qml")));     engine.addimageprovider("images", imageprovider);     return app.exec(); } 

Comments

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -