Portable GUI Library for Windows/Linux/Android

Hi

I have been considering options for a portable GUI Library (Widget Toolkit) for multiple platforms.

The platforms I am targeting are : Windows, Android, Linux, Browser-hosted.

The GUI Library should support all common controls such as textbox, drop-down box, numeric up-down, button, datagrid, etc.

For Windows and Linux, wxWidgets meets my requirements.
For Browser-hosted apps, wt, POCO or emscripten may be suitable.

The question is - Is there currently any GUI Library toolkit for Android?
a) Qt does, but a commercial license for Qt starts at $295/- per month.

b) Juce does, but as far as I can make out, Juce seems to be only putting together the various files of a project for various "build systems" such as Code::Blocks. Thus, it is only a frontend for a Project. Juce doesn't seem to support any controls of its own. For Android, Juce uses Android Studio as the underlying Build system, and Android Studio uses Java and not C++ as the programming language.

Therefore, can anyone suggest a GUI Library toolkit for Android?


Thanks.
Last time I checked, Qt is (L)GPL, so you only need a commercial license if you need to modify Qt without disclosing your modifications, or if you need to statically link it to closed source software.
Given the low storage capacity, as well as the smaller screen size of an (Android) tablet, a tablet doesn't seem to be the first choice for development.

For instance, there is NO Android Studio download for the Android platform! Android Studio downloads are available only for Windows, Linux and Mac!

Thus you have to download Android Studio to your PC, code there and cross-compile for Android and then upload your Android app to Google Playstore, for it be downloaded by clients to their Android devices. Also, Android Studio uses Java and not C++ as its programming language. (Another choice is kotlin - a language proprietary to Google.)

Given a 3-tier app (comprising a UI, business tier and DB tier), the UI and business tier, then, could be coded in Java/kotlin.

This raises another question - what RDBMS would be used on Android?

The only realistic choice as of now appears to be SQLite. However, SQLite isn't a Server app; it is integrated with the app itself. (This raises another question - how do you share a SQLite DB between Apps?). Also, SQLite isn't available on the Google Playstore. Perhaps it is integrated with Android Studio.

Again, given the smaller disk capacity of a tablet, perhaps it isn't an ideal option to store the DB on the tab at all. Using a Cloud DB might be the best choice here.

All in all, an Android tablet doesn't seem currently to be the ideal platform for a 3-tier app - using C++.
BTW. Please consider that many people have a certain bandwidth limit on their mobile devices so it would be better if the app runs without internet access. If the database is not too big it seem the lesser evil to store it on the device.

EDIT

Just remembered that you can use Visual Studio for mobile apps.
https://msdn.microsoft.com/en-us/library/dn707591.aspx
Last edited on
Yes, and Visual Studio can be downloaded only to PCs, not to Android. (But, VS uses .NET)

Smilarly, to develop Android products, you can't do the development on an Android tab; you need a PC.

Seems the PC is not going to disappear in a hurry.
There is another alternative which fully meets the original specified requirements, viz: a portable GUI Library (Widget Toolkit) for multiple platforms such as Windows, Android, Linux, Browser-hosted.

As a UI, use only a browser-hosted window. Then, for _all_ apps, regardless of the platform, we can use only a Web interface:
1) All "desktop apps" on Windows, Linux and Android would use the web interface only. A conventional window-hosted interface is out.
2) Web apps would of course continue to use a browser-hosted interface.

Thus, by including a GUI library that supports a Web interface in the C++ program, I can have a single UI that meets the requirements of all platforms.

As I had posted originally, examples of such GUI libraries are wt (pronounced witty), POCO and emscripten.

Of course, for Android development, the GUI library selected should have been ported to Android.

From the wt website (https://www.webtoolkit.eu), I can confirm that wt is supported on Windows, Linux and Android.

Thus, wt can do the job.
For the DB interface, there are 2 options:

1) DB-Server option: The DB is set up on a DB-server. Using ODBC, we can connect to the DB. This option is suitable for Windows and Linux environments but not for (Android) tablets, owing to their low disk capacity and the fact that no RDBMS is currently supported on Android.

2) Web-server option: The DB is hosted on the cloud. Again using ODBC, we need to connect to the DB. This option is suitable for Windows, Linux and Android environments.
helios wrote:
Last time I checked, Qt is (L)GPL, so you only need a commercial license if you need to modify Qt without disclosing your modifications, or if you need to statically link it to closed source software.

It seems those terms haven't been modified:
https://www.qt.io/qt-licensing-terms/
In case of dynamic linking, it is possible, but not mandatory, to keep application source code proprietary as long as it is “work that uses the library” – typically achieved via dynamic linking of the library. In case of static linking of the library, the application itself may no longer be “work that uses the library” and thus become subject to LGPL. It is recommended to either link dynamically, or provide the application source code to the user under LGPL.

Topic archived. No new replies allowed.