• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

Favorite cross-platform GUI solution?

I've got a bit of code that compiles and runs in Windows, Windows w/Cygwin, and Linux. It builds a series of static libraries. I've got a little menu-driven console code that simply accepts numbered commands and invokes functions from these libraries and displays results (as text),a s well as writing image files to disk Everything is in ANSI C/C++ and builds with Visual Studio and G++.

Additionally, the libraries are actually creating/editing images (video frames) that I may want to display on screen.

My question is, what would you recommend as the simplest, most straightforward, cross-platform way to get a Window on the screen with a few radio buttons, drop downs, buttons, etc that can invoke those same C-functions from linked static libraries? As a stretch goal, this same window could also display my created images. As a stretch, stretch goal, I'd like to display these images as video frames (>30fps).

I'd really like to be able to include whatever I use as part of the same source code (nothing propriety with restrictive licensing, etc.) so that I have a stand-alone application with no real prerequisites, other than a standard OS-install. Also, I'd really rather not have to develop and test 2 separate code paths (one for Windows and another for Linux.)

I was thinking about maybe just requiring Python on all targets? Using OpenGL with GLUT? Something like Qt/GTK? Java? Some Web interface?

I come back to this every so often. My day job is writing deep algorithmic code for analysis work, so I never deal with outputs, other than dumping large arrays of data to file after hours/days of multi-core processing. So when I get something lighter that could use some GUI-help, I come looking again.. and nothing really looks different that it did before.
 
Personally I would use Java for this. That's just because it's what I'm probably most familiar with that can both be cross platform very easily since it runs in the JVM and because calling C code is pretty straight forward. If there was no C library involved I would do this in html/javascript.
 
Qt is the de facto standard for building a C++ cross platform UI. You can use it free if your app is open source with a GPL or LGPL license. It's very, very powerful, but I don't know if I'd call it simple or straightforward.

I haven't personally used it, but Awesomium looks pretty interesting. It lets you embed a HTML/Javascript UI in a C++ (cross platform) or .NET (windows only) app. In theory it seems like it would give the ease of web-like UI that you get from Electron, but it should be much more performant since your application logic stays in native code.
 
Another vote for Qt.

Also, they offer Qt Creator for visual Python UI development, with functional demos too.
 
Back
Top