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. How to embed qml-files etc. in executable file? [solved]
Forum Updated to NodeBB v4.3 + New Features

How to embed qml-files etc. in executable file? [solved]

Scheduled Pinned Locked Moved QML and Qt Quick
22 Posts 5 Posters 27.3k 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.
  • H Offline
    H Offline
    Hedge
    wrote on last edited by
    #10

    I guess I can use qrc:/ - URLs for the import-path?

    e.g.
    @import "qrc:/desktop-components/components"@

    Can't test this now.

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      ZapB
      wrote on last edited by
      #11

      Yes I think that should work once you add the components to your resource file.

      Nokia Certified Qt Specialist
      Interested in hearing about Qt related work

      1 Reply Last reply
      0
      • H Offline
        H Offline
        Hedge
        wrote on last edited by
        #12

        Hmm it seems to work but I'm running into a problem.

        The compiler says:
        @qrc:/qml/MyProject/main.qml:2:1: module ":.desktop-components.components" plugin "styleplugin" not found @

        This is qrc-file:

        @<RCC>
        <qresource prefix="/">
        <file>qml/MyProject/main.qml</file>
        <file>desktop-components/components/Button.qml</file>
        <file>desktop-components/components/ButtonRow.qml</file>
        <file>desktop-components/components/CheckBox.qml</file>
        <file>desktop-components/components/ChoiceList.qml</file>
        <file>desktop-components/components/components.pro</file>
        <file>desktop-components/components/ContextMenu.qml</file>
        <file>desktop-components/components/Dial.qml</file>
        <file>desktop-components/components/Frame.qml</file>
        <file>desktop-components/components/GroupBox.qml</file>
        <file>desktop-components/components/HeaderSection.qml</file>
        <file>desktop-components/components/Makefile</file>
        <file>desktop-components/components/ProgressBar.qml</file>
        <file>desktop-components/components/qmldir</file>
        <file>desktop-components/components/RadioButton.qml</file>
        <file>desktop-components/components/ScrollArea.qml</file>
        <file>desktop-components/components/ScrollBar.qml</file>
        <file>desktop-components/components/Slider.qml</file>
        <file>desktop-components/components/SpinBox.qml</file>
        <file>desktop-components/components/Switch.qml</file>
        <file>desktop-components/components/Tab.qml</file>
        <file>desktop-components/components/TabBar.qml</file>
        <file>desktop-components/components/TabFrame.qml</file>
        <file>desktop-components/components/TableView.qml</file>
        <file>desktop-components/components/TextArea.qml</file>
        <file>desktop-components/components/TextField.qml</file>
        <file>desktop-components/components/ToolBar.qml</file>
        <file>desktop-components/components/ToolButton.qml</file>
        <file>desktop-components/components/plugin/libstyleplugin.a</file>
        <file>desktop-components/components/plugin/styleplugin.dll</file>
        </qresource>
        </RCC>
        @

        This is the start of main.qml
        @import QtQuick 1.0
        import "qrc:/desktop-components/components"
        import "qrc:/desktop-components/components/plugin"@

        1 Reply Last reply
        0
        • Z Offline
          Z Offline
          ZapB
          wrote on last edited by
          #13

          Ah, you cannot compile a dll into the resource system. I do not think the library loader supports using the resource system. Also it doesn't really make sense to place a shared library inside the binary as it loses any benefit of being a shared library.

          I think you'll need to remove your style plugin from the resource system and load that using the method I suggested above with QDeclarativeEngine::addImportPath().

          Nokia Certified Qt Specialist
          Interested in hearing about Qt related work

          1 Reply Last reply
          0
          • H Offline
            H Offline
            Hedge
            wrote on last edited by
            #14

            Ah! I almost forget that libraries can't be resources.

            It works now when styleplugin.dll is inside the .exe-folder.

            I also placed a copy of styleplugin.dll inside the folder 'plugins' and added the following line in my main-function

            @QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + "/plugins");@

            but that doesn't work. What could be wrong here? applicationDirPath() returns the correct location.

            1 Reply Last reply
            0
            • Z Offline
              Z Offline
              ZapB
              wrote on last edited by
              #15

              What category of plugin is it?

              Nokia Certified Qt Specialist
              Interested in hearing about Qt related work

              1 Reply Last reply
              0
              • H Offline
                H Offline
                Hedge
                wrote on last edited by
                #16

                It's a qml-plugin.

                1 Reply Last reply
                0
                • Z Offline
                  Z Offline
                  ZapB
                  wrote on last edited by
                  #17

                  In that case I think that you need to use QDeclarativeEngine::addImportPath() as I mentioed earlier rather than addLibraryPath().

                  Nokia Certified Qt Specialist
                  Interested in hearing about Qt related work

                  1 Reply Last reply
                  0
                  • H Offline
                    H Offline
                    Hedge
                    wrote on last edited by
                    #18

                    OK, but that returns an error (I placed it in the main-function)

                    @QDeclarativeEngine::addImportPath(QCoreApplication::applicationDirPath() + "/plugins");@

                    @error: incomplete type 'QDeclarativeEngine' used in nested name specifier@

                    Adding it to the QmlApplicationViewer doesn't do anything

                    @ QmlApplicationViewer viewer;
                    viewer.addImportPath(QCoreApplication::applicationDirPath() + "/plugins");@

                    Also the QtCreator-editor complains that it can't find both imports:
                    @import "qrc:/desktop-components/components"
                    import "qrc:/desktop-components/components/plugin"@

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      DamianMilo
                      wrote on last edited by
                      #19

                      You set it solved but i can't see solution.. Could you write me solution?

                      Regards,
                      Damian Czechowicz
                      Junior Software Engineer

                      Milo Solutions
                      http://milosolutions.com

                      1 Reply Last reply
                      0
                      • N Offline
                        N Offline
                        nib952051
                        wrote on last edited by
                        #20

                        I think we can't load library in such way. For me problem solution was in modifying qstyleplugin and build rules. If needed I can share the code.

                        1 Reply Last reply
                        0
                        • D Offline
                          D Offline
                          DamianMilo
                          wrote on last edited by
                          #21

                          Could you share code? thanks.

                          Regards,
                          Damian Czechowicz
                          Junior Software Engineer

                          Milo Solutions
                          http://milosolutions.com

                          1 Reply Last reply
                          0
                          • N Offline
                            N Offline
                            nib952051
                            wrote on last edited by
                            #22

                            "look at cmake branch":https://github.com/nib952051/QtDesktopComponentsBackport/tree/cmake

                            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