QML to .exe



  • I am trying to move from my simple QML files to a windows .exe that I can pass on to management for review. I installed the Visual Studio add-in but it looks like it wants to open a .pro file. All I have is .qml and .qmlproject. Could someone point me in the right direction of what needs done?



  • Is Qmlviewer the right tool?



  • You can write small wrapper (I think Creator already can do it automatically, but not sure) for showing qml.



  • If you could provide me with some more details of how exactly to get from the .qml files to a usable .exe, that would be helpful. Thanks,

    Kyle



  • something like (not tested, just coded here in reply form)
    @
    int main (int argc, char **argv)
    {
    QApplication app(argc,argv);
    QDeclarativeView view("/path/to/your/Example.qml");
    view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
    view.resize(500,500); //this and prev lines are needed only if you don't have sizes in root element of your qml
    view.show();
    return app.exec();
    }
    @



  • Can I compile this in any compiler?



  • I don't think that compiler can be problem here. Just make sure you have all needed in your env variables.



  • Where can I download all the environment variables? While I tried to compile, I got a QApplication undeclared error.



  • you have to include them. Sorry I forgot them.

    @
    #include <QApplication>
    #include <QDeclarativeView>
    @

    Also don't forget to add gui and declarative to QT var in your .pro file.



  • Please excuse my ignorance but you will have to explain the last sentence you wrote. I do not have a .pro file, do I need one?



  • Yes, you need a .pro file.



  • Again, forgive my beginner questions but how do I create one? What is it?



  • Save code I wrote you before as main.cpp and run in folder with it
    @
    qmake -project
    @

    It will create a .pro file. Open it and find QT var. I think it will contain only
    @
    QT += core gui
    @
    make it
    @
    QT += core gui declarative
    @

    After it run qmake in this folder with name of .pro file as argument. And after it run make (or nmake, if you are using msvc compiler).



  • I did every step up until the make command which returned:
    make: *** No targets specified and no makefile found. Stop.



  • Is there Makefile file created after ?
    @
    qmake yourproject.pro
    @



  • the command executes without an error, but I don't see a makefile



  • What files fo you have in your folder after running this command?



  • 1.qml Keyboard.qml
    10.qml Map.qml
    11.qml MenuTabText.qml
    12.qml MenuText.qml
    13.qml MenuTitle.qml
    2.qml PanMap.qml
    25.qml QML.pro
    3.qml QMLFinal.qml
    4.qml QMLFinal.qmlproject
    5.qml QMLFinal.qmlproject.user
    6.qml RandNumGenerator.qml
    7.qml SetupBars.qml
    8.qml SetupBlack.qml
    9.qml TabMenu.qml
    Back.qml WidgetLarge.qml
    CheckBox.qml WidgetSmall.qml
    Dashboard.qml build
    DropDown.qml keyboard.png
    Front.qml main.cpp
    GPSWidget.qml main.h
    HomeText.qml map.png
    Images
    Info.plist



  • so you run in this folder
    @
    qmake QML.pro
    @
    and nothing new appears?
    If yes then sorry, but I can't help with problem. Maybe some one more familiar with windows can.



  • Try to open this .pro in QtCreator and build it there. I think it will help you.


  • Moderators

    This is mostly interesting to demo something on a mobile device and not so much for a desktop application.... but try this to get a .pro file that can get used to build an executable able to display your QML:

    • Update creator to 2.1 beta. We did improve the templates for QML based projects there a lot.
    • Set up a new project: File->New File or Project.
    • Select "Qt Quick Project" and then "Qt Quick Application". A wizard opens when you click on OK.
    • Provide a new project name and a directory to store the project (in a subfolder named like the project name you are giving!) in. Next.
    • Select a Qt version (4.7.1 is preferred nowadays) in Desktop. Add mobile devices if required (and you have the support installed). Next.
    • You can ignore the next page of the wizard, it is only relevant for mobile devices. Next.
    • Select "new main.qml file". Next.
    • Click next on the summary page. Next.

    Now you will have a .pro-file based project that displays a freshly generated main.qml file. Copy your existing qml files and resources into the project folder into qml/PROJECTNAME and rename your main qml file to main.qml there. Do Build->Run qmake to force a refresh of the file list in the Makefiles. It should pick these changes up automatically, but it may take a while for it to do so.

    You should now be able to build and run it by clicking on the play button in the lower left of the creator window. You can of course also open the .pro file with the visual studio plugin and build it there.

    For mobile devices you can now create packages of all the contents which are nice and easy to deploy... but for the desktop you get an executable but all the QML files, images, etc. still need to get copied to a place where the exe actually finds them.

    So unfortunately you do not gain much to just copying the qmlviewer (which actually is the program used by creator to preview your QML files) plus your qml files and resources in your use case. In both cases you will need to put the required libraries next to the executable (in windows, Linux usually has Qt packages installed in the system and picks up libraries in a different way, too). This does include the various plugins Qt uses... most straight forward way is to just copy everything in the lib/ directory found in your Qt.

    Please consider filing a feature request describing your use case in "our bug tracker":http://bugreports.qt.nokia.com/. I think this is certainly a valid use case and we should improve creator to handle it better.



  • QtCreator 2.1 RC is available now and apparently the wrapper (which is the only thing you want) is improved in it.

    Basically, you'll want QtCreator and to follow Tobias' instructions above just to get the wrapper files on disk.
    Then you can open this in msvc afterwards if you prefer and it should work if you have env settings right.

    The wrapper is just a qmlviewer with your qml files wrapped inside it. You'll still need to include whatever dlls the project uses.



  • Hi All,
    I have followed this post to the latter but still cant get a simple standalone executable. My application runs fine from the QtCreator 2.1 RC but if I go to the release folder itself and double-click the .exe in there, I get an empty window. I dont know what else to do. I'm using the latest versions of QT and QT Creator.

    The only difference is that my operating System is a 64 bit Vista. I had dll issues before but I have resolved all of them and it doesn't complain about them anymore but the Application window is completely empty.

    Any ideas what I could be doing wrong.

    Also a simple Hello World application tutorial or a zip of the source files that shows the process from a qml file to a standalone executable will be greatly appreciated.


  • Moderators

    gcameo: Did you make sure to put all the required libraries next to the executable?



  • Hi, I did not put the executables next to it. I put them on the system path so they can always be found. Do I have to put them there? I opened the executable in dependency walker software and it shows the following dlls missing

    SHLWAPI.DLL

    IEFRAME.DLL

    could that be the problem.

    Thanks



  • [quote author="gcameo" date="1294167925"]Hi, I did not put the executables next to it. I put them on the system path so they can always be found. Do I have to put them there? I opened the executable in dependency walker software and it shows the following dlls missing

    SHLWAPI.DLL

    IEFRAME.DLL

    could that be the problem.

    Thanks[/quote]

    It also says something is missing about this file

    GPSVC.DLL

    Any clues?

    Thanks



  • Did any body came with any thing with this?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.