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.4k 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
    #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