Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Cannot include QDeclarative Item
Forum Updated to NodeBB v4.3 + New Features

Cannot include QDeclarative Item

Scheduled Pinned Locked Moved QML and Qt Quick
26 Posts 3 Posters 8.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • p3c0P Offline
    p3c0P Offline
    p3c0
    Moderators
    wrote on last edited by
    #11

    You will need to make those methods "Q_INVOKABLE":http://doc.qt.io/qt-5/qobject.html#Q_INVOKABLE. An example of how to access them is "here":http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html#exposing-methods-including-qt-slots.
    But beware that QML recognizes only the "following":http://doc.qt.io/qt-5/qtqml-cppintegration-data.html#basic-qt-data-types data types. So it wont recongnize those OpenCV's user defined data types.

    157

    1 Reply Last reply
    0
    • J Offline
      J Offline
      Javeria
      wrote on last edited by
      #12

      I ve kinda follwoed it, i dnt have enough time , i have 5 min, heres the code, its giving me syntax error when i use Component.onCompleted:
      @import QtQuick 2.4
      import QtQuick.Controls 1.3
      import QtQuick.Window 2.2
      import QtQuick.Dialogs 1.2
      import QtQuick 2.0
      ApplicationWindow {
      title: qsTr("Sketch_it")
      width: 1500
      height: 1000
      visible: true
      property var imagesListModel: ["file:/original.jpg","file:/11.jpg","file:/test (1).jpg","file:/test (2).jpg","file:/test (3).jpg","file:/test (4).jpg","file:/test (5).jpg"]
      ListView {
      id: imagesList
      anchors.fill:parent
      spacing:25
      orientation: Qt.Vertical
      model: imagesListModel
      delegate: Image {
      objectName: "Displayimage"
      width: 75
      height: 100
      source: imagesListModel[index]
      Text{
      text:"Sketch"+(index+1)
      }

               MouseArea {
                   anchors.fill: parent
      
                   onClicked: {
                      main.source=imagesListModel[index]
                      Component.OnCompleted:
                       {
                           m.Detect();
                       }
                     // console.log("User select '"+"' image");
                   }
               }
          }
      }
      Image{
          id:main
          width: 700
          height: 600
      
         // source:"file:/test (6).jpg"
          anchors.centerIn: parent
          MouseArea{
            anchors.fill:parent
             onClicked: {
      
      
                 console.log(mouseX+" "+mouseY);
           }
          }
      }
      

      }
      @

      1 Reply Last reply
      0
      • p3c0P Offline
        p3c0P Offline
        p3c0
        Moderators
        wrote on last edited by
        #13

        Ofcourse it will.
        @
        void Detect(Mat image);
        @

        Takes an argument and you are not supplying it. Plus it takes an argument not recognized by QML. You will need to find another way to pass the data from QML to C++ and which is recognized by both.

        157

        1 Reply Last reply
        0
        • J Offline
          J Offline
          Javeria
          wrote on last edited by
          #14

          Okay but there is still syntax error in this
          @Component.OnCompleted:
          {

            }@
          
          1 Reply Last reply
          0
          • JKSHJ Online
            JKSHJ Online
            JKSH
            Moderators
            wrote on last edited by
            #15
            • Component.onCompleted is a signal handler.
            • onClicked is a signal handler.

            You cannot put a signal handler inside another signal handler. You need to move Component.onCompleted up one level, at least.

            Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

            1 Reply Last reply
            0
            • p3c0P Offline
              p3c0P Offline
              p3c0
              Moderators
              wrote on last edited by
              #16

              [quote author="JKSH" date="1424387370"]* Component.onCompleted is a signal handler.

              • onClicked is a signal handler.

              You cannot put a signal handler inside another signal handler. You need to move Component.onCompleted up one level, at least.
              [/quote]

              Right. I missed that one.

              157

              1 Reply Last reply
              0
              • J Offline
                J Offline
                Javeria
                wrote on last edited by
                #17

                Okay but i have two call two c++ functions, and one should be called when the user clicks on the main image so i cant use component.oncompleted thn?

                1 Reply Last reply
                0
                • p3c0P Offline
                  p3c0P Offline
                  p3c0
                  Moderators
                  wrote on last edited by
                  #18

                  Call that function in onClicked event handler. Component.onCompleted is called after the object has been instantiated. You can call the function inside it also but since you need to do it on click, call it inside onClicked.

                  157

                  1 Reply Last reply
                  0
                  • JKSHJ Online
                    JKSHJ Online
                    JKSH
                    Moderators
                    wrote on last edited by
                    #19

                    [quote author="Javeria" date="1424418592"]Okay but i have two call two c++ functions, and one should be called when the user clicks on the main image so i cant use component.oncompleted thn?[/quote]As the name implies, Component.onCompleted runs when the component has finished loading.

                    Do you want your function to be called when the component finishes loading?

                    Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                    1 Reply Last reply
                    0
                    • J Offline
                      J Offline
                      Javeria
                      wrote on last edited by
                      #20

                      And also i have changed my detectsquare function's parameters to Qimage
                      so that i could use the current selected image in that function but i dont understand how i should do that in QML? As i cant use Qimage object in QML

                      1 Reply Last reply
                      0
                      • p3c0P Offline
                        p3c0P Offline
                        p3c0
                        Moderators
                        wrote on last edited by
                        #21

                        Since you already have paths, you can just send the path string from QML to C++ and then there access that image.

                        157

                        1 Reply Last reply
                        0
                        • J Offline
                          J Offline
                          Javeria
                          wrote on last edited by
                          #22

                          But I want to edit that image and send it back to qml so that it displays it in the ui

                          1 Reply Last reply
                          0
                          • p3c0P Offline
                            p3c0P Offline
                            p3c0
                            Moderators
                            wrote on last edited by
                            #23

                            Do you have paths for the Images in QML ?

                            If yes, then as said earlier, send the path string from QML to C++, open the image, process it, on C++ side(or whatever operations), then signal QML to display that image.

                            157

                            1 Reply Last reply
                            0
                            • JKSHJ Online
                              JKSHJ Online
                              JKSH
                              Moderators
                              wrote on last edited by
                              #24

                              Read the blog post and the comments at http://pusling.com/blog/?p=369

                              Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                              1 Reply Last reply
                              0
                              • J Offline
                                J Offline
                                Javeria
                                wrote on last edited by
                                #25

                                I have decided to use Qstring and i have followed this link to assign path:
                                Link: http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html (The properties part)
                                But im getting this error
                                Invalid attached object assignment

                                QQmlComponent: Component is not ready

                                1 Reply Last reply
                                0
                                • J Offline
                                  J Offline
                                  Javeria
                                  wrote on last edited by
                                  #26

                                  @onClicked: {
                                  m.image=imagesListModel[index];
                                  main.source=m.imagesListModel[index]

                                                 // console.log("User select '"+"' image");
                                               }@
                                  

                                  m is the Detectsquares object and i m setting the path and then assigning the path to the main image
                                  Here is the code im main.cpp:
                                  @
                                  QApplication app(argc, argv);
                                  // QQmlEngine eng;

                                  QQmlApplicationEngine engine;
                                  engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
                                  DetectSquares m;
                                  engine.rootContext()->setContextProperty("m",&m);
                                   QQmlComponent component(&engine, QUrl::fromLocalFile("qrc:/main.qml"));
                                   component.create();
                                  

                                  @

                                  1 Reply Last reply
                                  0

                                  • Login

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • Users
                                  • Groups
                                  • Search
                                  • Get Qt Extensions
                                  • Unsolved