Approaches to provide a Qt Gui via Web? - qt

Sometimes I stumble upon frameworks that used to provide a web interface for Qt applications (like e.g. https://github.com/alberthier/qtwui)
Is there today a Qt5 way (or even better PyQt5) to run a Qt application on a server while accessing the UI via web?

I know several conceptions, but from my point of view they are not ready for production.
Emscripten: http://blog.qt.io/blog/2015/09/25/qt-for-native-client-and-emscripten
QML Web: https://github.com/qmlweb/qmlweb

WebGL streaming is one way forward, as it allows to run both QML and widget-based UIs in the browser.

Related

Qt - Embed an ActiveX Control

I am developing a new Qt application and I need to embed in it a third party ActiveX Control; I spent the last days learning about Qt Quick Controls 2.0, but I fear that ActiveX Controls can only be embedded in Qt Widgets applications. Is it right?
It will also be great if you can suggest any tutorial/example about my problem, since the official one seems a little bit too hard for a newbie like me.
Thank you very much!
Can we use Qt Quick (QML) altogether with ActiveX Qt embedded widget
in one app?
Short answer: yes.
Details: we need to embed both Qt Quick and ActiveX in their own widget containers.
Build a widget-based Windows Qt application from the start. Example.
Embed QML UI into widgets with QWidget::createWindowContainer() which is one of ways to do so.
Embed or create an independent QAxWidget to hold ActiveX control in it.
The best way to deal with third-party ActiveX is to import its type-library like Qutlook Example (ActiveQt).
P.S. QML is not preventing you from doing ActiveX in Qt but they are two separate type of UI and don't share same window. They can only be both embedded in other Qt widgets. I was developing such hybrid applications with Qt/QML/ActiveX and there is no complete guide to do so. Maybe a bit too many details plus you need to deal with specifics of ActiveX interfaces which is a separate topic.

Will a Flex app run on a mobile device?

Can a Flex application that was designed for use on a PC be run on an iPad, iPhone, or Android-based mobile device?
Seems like a simple enough question. Visiting http://www.adobe.com/products/flex.html yields a picture of a dude running a (presumably) Flex application on an Android. So at first glance, the answer would appear to be "yes." End of story.
but yet…
There is so much (mis)information out there on various tech sites that suggest Flash-based technologies simply won't run on iOS or other mobile platforms. Why is this? Perhaps they mean to say that Flex won't run "out of the box" and requires a plugin? Or do they mean it won't run at all?
Every time I think I've reached a definitive conclusion, some post on SlashDot or CNET directly contradicts it. So what's the scoop? Can one take an existing Flex application and run it on iOS/Android? (I realize there are screen size issues to consider so the app might not run effectively. I just want to know if the runtimes are available on the mobile devices to allow the Flex app to launch at all.)
Sorry for the noob question. My background is WPF / HTML5. Adobe technologies are completely foreign to me.
I wrote a lot below if you'd like to read it enjoy, if not sorry for taking your valuable bytes :) I directly answered the questions up here first:
Why is this?
It's a confusing matter read below for the why details.
Perhaps they mean to say that Flex won't run "out of the box" and requires a plugin?
Or do they mean it won't run at all?
Using the flash builder tools (the bin folder in the SDK) you can compile for native desktop application, desktop web browsers, native iOS application, native Android application. Android with FlashPlayer plugin installed will show Flash content within the web browser, iOS will only run the ones compiled with AIR, not in the the web browser but as a native app.
Every time I think I've reached a definitive conclusion, some post on SlashDot or CNET directly contradicts it. So what's the scoop? Can one take an existing Flex application and run it on iOS/Android?
Yes, if using AIR and run as a native app on all three platforms (the desktop Flex API is for the most part a superset of the web Flex API), your other points about performance and form factor are valid and should be considered though. The nice thing is you can write your model/controller code in a common library in AS3 then write separate presentation layer interfaces that all share the library.
Here's the very long version:
Using the flash compiler results in "bytecode" in the form of a file with a swf extension using the swf format, you can read a ton more about that here:
http://www.adobe.com/devnet/swf.html
To interpret the file you need some sort of run-time similar to some degree to running WPF/XAML/C# within a .NET framework context (either desktop or using silverlight on the web). In the case of adobe technologies (rough equivalence):
AS3 = C#
MXML = XAML
Flex = WPF+WCF (client side RPC not server side)
Flash Player = Silverlight
AIR (Adobe integrated runtime) = .NET
Framework Redistributable .dll(s)/.so(s) for desktop OSes
(Read this list very loosely please, I know XAML is preserved in the MSIL or whatever which is different because MXML is compiled to AS3 and only if a debug flag is set on the compiler does it include the debugging symbols, there's certainly tons of differences but I think this is an easy and correct enough model to use)
On iOS the browser does not allow for plugins in the traditional sense of netscape browser plugins or ActiveX plugins. For this reason you'll not be able to execute a plugin ie flashplayer or silverlight in the browser. Since Adobe did release a flashplayer for Android devices that does run in the browser it will work on those devices in the browser, however they have essentially thrown in the towel for supporting this long term, as they have to support the majority mobile device platform, iOS, in order to remain relevant (this was I think more a collective throwing in of the towel by Google, device manufacturers, carriers, Microsoft, all just following suit and trying to make the best business decision, WebKit and V8 or SpiderMonkey can probably do 99% of what Flash can do and better in some cases and WebKit will hopefully not splinter and will remain open source... frameworks and the browsers just need to get fleshed out and stabilized).
If the user installs AIR (or the runtime is packaged with the app) then a Flex/Flash (that is stuff coded in AS3 and/or MXML and compiled to a swf) can be transcoded/packaged to be interpreted by the run-time for that device correctly (be it iOS or Android or whatever RIM did, I don't think they have AIR for Windows Phone 7 and Win8 on ARM won't support browser plugins either). Part of the confusion is possibly from the fact that Apple denied the distribution of Apps that were "cross-compiled" which kept AIR out of the list of options for iOS for a good year, just after Adobe started announcing it was usable for that purpose (kicking Adobe while their down). Another part of the confusion probably comes from real vids of people who have 1 hacked their device or 2 were able to get open source alternatives to the flash player run-time to work on their iOS device (gnash was one I'm aware of from some occasional Linux tinkering, also possibly FAKE vids).
You can run Flex applications on mobile devices, but you cannot simply run any Flex project.
In Flash Builder ( Flex Ide) or in Flash Professional you can create mobile projects. These projects generate native applications for iOS and Android.
Last time I tried, the result and the available components where less than what I expected. So, if you can, I'll much recommend you go for something like Appcelerator.com or similar, which turns HTML5/Js code into native apps. I tried them, worked a lot better than Flex.
Short answer: No
Long answer: You can use Adobe's tools to compile your Flash/Flex app for use as a native iOS app. So you won't be able to embed the app in a web page like you normally could with Flex, but you can build it as a native app. Note you have to have Flash Builder 4.5 to do this.
It won't run on iPhone as a .swf file, but it will run on Android based devices that have adobe flash installed. It will also run on the BB playbook, which also has flash.
Flex is a framework.( Anyway it is very beutiful one which even sometime looks like complete different language ).
As soon as you are building AIR application it can run on various platforms like : Windows, iOS, Android, upcomming TV's, PlayBook, even .. into the future ( maybe/hopefuly ) on Windows Phone, plus Linux ( which AIR future is not very clear anyway ( but hopefuly Adobe will reconsider ) ).
So - application created with Flash Builder 4.5+ would probably run everywhere as soon as it is AIR application.
The compilation methoods is really simple, and you almost simultaneously compiling for everything you wanna to.
And one of the most important things here - your applications will run, work, look and feel the same way you were designed on one device. Flex is the thing which is responsible for everything to looks beutiful on each platform it is running.
For instance i am compiling currently for Android, and without even test i can clearly say that it will looks and feel the same way under iOS and Windows, and it will.

Choosing a cross-platform GUI technology

We are currently exploring technologies for our new cross-platform GUI;
So far, the strong options on the table are QT and Java, and lately, HTML-5 was put on the table as well.
Our application description (in short):
It's a client-server; it's internal (only employees use it), we have a vpn, so no wqorries regarding security in terms of web-app
The server side is written in C++, and runs on variable possible platforms (Windows, Linux, Unix)
The (GUI) client side should also run on all the above platforms, it's a different process and it communicates with the server via tcp-ip
GUI requirements (in high level):
The GUI client should support drop down menus, buttons, data grids;
The GUI should be dynamic: Widgets' data should be able to change, or be affected by the choosing of options in other widgets; Also, we will need an auto-complete for search boxes, in which the data should be retrieved from the server side or other data source in our control.
So far, we are thinking of writing the new GUI in QT, but we'd like to know if we should seriously consider HTML-5 instead, and make the GUI a web app;
In light of the GUI requirement presented above:
What's the Pros? Cons? Risks?
Thanks,
Gal
Qt comes with QWebView which provides support for HTML5, you can create the basics(login/help etc) in Qt and create the rest of the code in HTML5 displayed via webview avoiding using a browser to do so.
You can even try and explore about JavaFX, its relatively new but has great GUI effects and controls. The dynamic data features will be easy to implement in Java based APIs.

How to use Nokia Qt to launch another mobile application within an application based upon a MIME type?

I am using Qt Nokia for mobile development (I'm currently testing on a Nokia C7) and would like to launch an application from another an application based upon a MIME type.
For example, I might have a file, and I would like to be able to open another application from the original application without specifying the application but using the MIME type of that file. On the other application opening it would load the file and perhaps be given an additional message or payload.
If this sounds a little strange it might help to know that I have come from a J2ME background and would have used the CHAPI API.
I need to use Qt Nokia so that I can build the application for the Symbian or Maemo platform. So far I have only been able to find documentation showing you how to do it under Symbian.
Can I do what I require by using Qt Nokia? I am just not looking the right places?
QDesktop::openUrl may be a good candidate.
This HowTo may be helpful.

Connect to internet with Qt for symbian

I'm creating a Qt Symbian application and need to connect to internet. In some way I need to let the user choose a connection when the app starts. I could use Qt Mobility to get it working but when Nokia approves I wan't do publish my application on Ovi Store. As the Qt Mobility is not included in Qt 4.6 it might be a problem to publish my app later. So for this reason I'm thinking of using native APIs instead.
The idea is to use: qt_SetDefaultIap() to set the connection on start. I have been looking at this to actually understand what it is doing. If I have two connections that the app could use, one with WIFI and one through mobile internet, which one will qt_SetDefaultIap() choose? And can I in some way with native api make the user choose a connection on start up? (qt_SetDefaultIap seems to just set a default connection on its own, without user choice)
Thanks!
Qt 4.7 is now released, and although not all of the Mobility APIs have made it into the core, QNetworkSession has.
Mrbiggerm: it looks like you've found the sym_iap_util.h file that's included in the QFtp example code in the Qt SDK. Rather than calling qt_SetDefaultIap(), try calling qt_OfferIapDialog(), and passing its return value to qt_SetDefaultIapName(). That should do what you're after. (Although this is a bit of a hack, it's often a preferred option as it presents a native S60 UI rather than making you implement your own list of access points.)
Do you expect to finish your program before Qt 4.7 release (I don't know the exact release date, but I'd estimate it will be around July), which AFAIK will contain Qt Mobility?
If the answer is no, don't worry about releasing issues, use custom build of QtMobility for development, wait for 4.7 and don't worry about releasing issues.
If the answer is yes, what stops you from deploying your program with custom QtMobility build? Internally it uses the same native API calls you want to use, not some super secret Nokia API, so there should be no problem with code validation (in fact, there will probably be less problems, since you won't have a chance to screw up code covered by QtMobility libraries).

Resources