What is the most popular general purpose C++ framework? [closed] - c++

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I was looking at Qt and came to wondering, what is the most popular general purpose C++ framework, and what are some pros and cons of it?

The STL and Boost are both pretty popular, and they're pretty much the epitome of "general purpose".

Qt is very popular. It's available under open-source (LGPL) and commercial licenses, has fully-featured core and GUI class libraries and an integrated IDE and build system. It's also cross-platform.
It's under very active development and has a new declarative UI library (QtQuick including QML) due in the next release (4.7).
Definitely worth checking out for new projects.
For Windows-only work MFC is still worth a look. It's recently been updated.

The question as it stands is probably unanswerable; you'll probably end up with a list of people's interpretation of "framework" with no real way for distinguishing them.
Perhaps we need a definition of framework? I suggest it is a library that in some way determines the architecture of an entire application. However that is perhaps a definition of "Application Framework", but if you mean the term more broadly, then the question is probably too broad. This definition however makes say Qt a framework, while Boost remains just a library. That makes Boost no more or less useful, so I really don't understand what you are trying to discover from the question.
Here's a list of UI related libraries that might be considered "frameworks":
MFC
.Net
WxWidgets
Qt
KDE
GNOME
TurboVision ;-)
The most notable distinguishing feature is that some of them are cross-platform, and some are platform specific. Gnome is perhaps distinguished by having a C API (GTK+). .Net supports multiple languages, but requires C++/CLI rather than ISO C++ (but that is no worse than Qt's pre-processor IMO). MFC is a bit long in the tooth and not supported by free or third-party tools. TurboVision is antique and included for my amusement and geek nostalgia.

I know this post is old but I found it very useful.
I would like to add PoCo (POrtable COmponents) to the list
I used it for seleral projects and includes a consistent and well designed framework for:
XML
Multi threading
Networking
Cryptography
General purposes
It is also portable (I used it on Windows and Unix).

Related

What is a simple, testable, cross platform C++ GUI? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am looking to build a very simple GUI for a C++ application. Fancyness, design and advanced features don't matter. What is important however, is that I can write automated tests against it, programmatically checking content of fields and clicking buttons. It also needs to run at least on Linux and Windows, preferably also Mac. Any suggestions?
Edit:Open Source tools are highly preferred.
Sorry I am a bit late in answering.
Well there are many options in GUI programming. However, since you say you want something simple without flairs and eye-candy, the choice narrows down a little. Here are my suggestions:
QT
Pretty awesome. Don't want to sound like a Nokia (or Trolltech) evangelist, but this framework has it all. Mature API, Good design, Platform independence, Flexibility you name it! However, simplicity? Well... that's not a strong point, in fact, QT is the exact opposite. It tends to be more on the extremely heavy and well-armed side, definitely not simple.
GTK+
Again, pretty cool. Supports less platforms than QT, but has a pretty mature API, works on all the platforms you mentioned, the design is pretty awesome too. Flexibility? Well the new GTK+ 3 is a lot flexible but GTK+ 2 (the current latest supported version for Windows) lacks a bit in this respect. It's simpler than QT however, less eye-candy etc. But it relies on a ton of third-party libraries, which is a bit of a disadvantage for some platforms.
For a comparison between the above two, see one of my previous answers.
FLTK
Frankly, IMHO this is the toolkit that fits your needs the best. It's simple, platform-independent, very easy to deploy and cross-compile and pretty mature (though it's community is not quite as active as GTK+ and QT). It's OpenGL based, and looks pretty much similar on all platforms (I don't know if this is a pro or con in this case ). It's got a pretty lenient license, you can statically link the entire library, no dependencies except OpenGL.
Runs on all platforms supported by OpenGL.
I am looking to build a very simple GUI for a C++ application. Fancyness, design and advanced features don't matter. What is important however, is that I can write automated tests against it, programmatically checking content of fields and clicking buttons. It also needs to run at least on Linux and Windows, preferably also Mac.
Overall, from the requirements you mentioned, I think FLTK is ideal for you. Though you should also take a look at the other two if you aren't satisfied.
Update:
Testing Frameworks:
Unfortunately, I haven't seen any good testing framework for FLTK though. For QT, there is the QTestLib. For GTK there is dogtail.
Suggest that you use Qt as mentioned above. It is mature and there are new features getting added. To test apps written in Qt, you have the following options
QtTestLib
Squish
And some more ideas on QtCentre
Update: Since there is support for Python and Qt in pyqt creating a test-suite using something like pyunit will be a good option
I am not aware of the level of support for other libraries, but good contendors are - wxwindows and GTk
QT http://qt.nokia.com/products/qt-sdk/
Have you looked into Qt library? http://www.qt.io/
You can try fltk it is cross-platform and lightweight. The other choice is qt

Is MFC still alive? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am new to programming. I'd like to learn a new application programming language. I Googled and found the old MFC framework. I would like to ask: Is MFC still valuable?
I want to develop desktop applications. If not what should I choose to learn in depth?
If you want to develop desktop applications, then I'd recommend to avoid MFC and study Qt instead. Qt is quite powerful/flexible and using it won't lock you into single platform/OS.
First, you must have clear the platform where you want your applications to run; Windows? Linux? both?
In case you just care about Windows, MFC can be a good option if you want to do C++ native programming, which I suppose it's your case (otherwise, C# and .net could be a better way to start programming...)
MFC is a mature framework and once you get the basics, it will be as easy (or difficult) to use as any other library (e.g. Qt or TCL/Tk). IMHO.
I recently tried to use to MFC for a small client application.
After struggling for two days with trivial things (like how to change the font on a button!!) I gave up.
I gave a quick look at Qt and wxWidgets but (after having lost another couple of days), they seemed too compex for my task. Qt is probably the right way to go if you have time and/or the constraint to stay with a C++ framework.
It was not the case for me, so I decided to try Tcl/Tk to see what it had for me.
In its "tclkit/starkit" incarnation it allows you to create standalone GUI application with native look and feel. C/C++ code can be placed in a DLL that is embedded in the exe itself (no DLL hell, thanks!) and can be called directly from the Tcl script.
In two days work I almost finished the entire GUI with all the user interactions (enable/disable menaingful button, load listbox depending on other fields, ...) that would have taken weeks in MFC.
Tcl/Tk has its learning curve and may result unfamiliar to some but it repays many many times in productivity. Also, there are a lot of books, tutorials, examples, etc to learn from.
I would suggest you to give a look to see if it suits your need before going elswhere.
If you are happy with the document-view (MDI or SDI) nature of MFC go for it. It's great if your worried about distribution becuase you dont need a hefty framework, just a couple of DLLs. Don't expect rapid development without considerable background knowledge.
If you're interested in more modern C++ frameworks for Windows, consider using WTL and ATL instead of MFC.

C++ Core Application Development framework , Open Source , Cross Platform [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Like Qt , do we have any core application development framework in c++.
I think the qt is mainly for GUI applications . I need something other than QT , which gives a much faster running code ...
Visual Studio for c++ is a good choice , but its not an open source and cross platform one ..
To put it bluntly, to me it sounds like you're wasting your time and do not have clearly defined goal for your application. No framework can fix this problem. Write down application specification, list of target platform, check what functionality is required but missing, search for existing libraries, then use them.
I think the qt is mainly for GUI applications
You're mistaken.
In Qt 4 GUI component is optional. You are free to design console applications using QCoreApplication instead of QApplication for application object. As a bonus you get access to some GUI-related classes (not all of them, though - many require QApplication).
which gives a much faster running code
Making code run fast is your responsibility. If it runs slowly, then it is your fault until proven otherwise. Qt 4 is very fast, at least as far as GUI performance is concerned. Poor selection of algorithms, abuse of memory allocation routines and many other things can negatively impact performance. Switching to different framework won't fix those. Instead of searching for different tool, profile your code, search for bottlenecks and fix them.
Visual Studio for c++ is a good choice
It is not cross-platform. It is also not a framework - only IDE+compiler.
Cross Platform
Depending on your application you could even develop cross-platform application in standard C++ without any frameworks while using CMake/Scons/Autotools for build process. Unix-like environments have POSIX standard they more or less attempt to conform to, which can be used (on windows it requires cygwin/msys to be functional). Aside from that there's Boost. You could even ditch C++ and switch to scripted language to ensure portability. It all depends n your goals. Since you haven't said what you're writing it isn't possible to recommend anything specific aside from Boost. In addition to boost there are several frameworks (wxWidgets, Fox Toolkit, GTK) that may or may not meet your requirements.
Since it is not exacly clear what you mean by framework you might want to clarify that a bit more. Anyways, I am a happy user of boost as libraries for generic functionality and use eclipse + cdt as IDE to do coding and debugging. Boost, eclipse and the cdt are open source and cross-platform.
Which features should have the framework? How about the BOOST? It's not a framework as QT and wxWidgets, but it has a lot of features like delegates aka signals, threads, inter-process communications, network, etc.

Free C++ library for windows gui [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I just want to write a very simple C++ program for Windows only that uses a GUI. What library for C++ is free and allows me to do this? (This code is not, and will never be, open source).
+1 for Qt.
Qt is bloody awesome. Once you've hacked around with QT you will never, ever want to go back to any other UI API. Seriously. It's. That. Good.
There's also a free IDE that you can use that makes development even more painless. Oh, and the community is very helpful and generally kicks ass.
All Hail Qt!
You could use WxWidgets. From the blurb:
Unlike other cross-platform toolkits,
wxWidgets gives its applications a
truly native look and feel because it
uses the platform's native API rather
than emulating the GUI. It's also
extensive, free, open-source and
mature.
GTK+ and for C++ GTKmm I guess.
Maybe but maybe also Qt.
I think you could do that with Qt.
Here you go.
WTL is quite popular. If you visit the SourceForge page you will see praise heaped upon the project.
There are long fights about choosing free and/or portable GUI for c/c++ applications. Each programmer has his own favourite, and only few programmers have tried multiple of them so they can compare. So I suggest you to google some more for various comparations.
From what I hear all the free ones suffer lack of documentation and code updates, but all of them have good user support through forums or IRC channels. Qt has better support/userbase but is not completely free (but I can't provide you with details for that).
I have used Visual Studio MFC before and then when I wanted to have free and portable GUI I choosen GtkMM. I have to say that it was PITA to switch as GtkMM is not documented very well, its functionality is sometimes confusing, I had to recompile and modify few things (like widget with in-dialog OpenGL support) but I was able to finish my program successfuly. On the other hand, starting with MFC wasn't easy too.
But I'm not suggesting GtkMM over other ones. So I just can provide the list: Gtk, GtkMM (Gtk++), Qt, wxWidgets.
There are so many C++ GUI frameworks: Qt, gtkmm, wxWidgets (all these are specified above).
Add FLTK to that list.
If it is only for Windows and you use Visual-Studio you may use WinForms or the more up to date WPF. There is a nice GUI designer in the Visual-Studio and it is free for any purposes.

Easiest cross platform widget toolkit? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
What is the easiest cross platform widget toolkit? I'm looking for one that minimally covers Windows, OSX, and Linux with a C or C++ interface.
I don't know of any I've personally used with a C API, but wxWidgets is C++. It runs on Windows, Linux, and Mac OS X. And if you're looking for easy, wxPython is a Python wrapper around wxWidgets and it is pretty easy to use.
I really like Qt. Have been working with it in several projects now.
Although the project, I am currently working on, will be released for windows only, some of our developers code under Mac OS X using the gcc. And using different compilers and environments is an extra benefit for locating errors & bugs.
I forgot to mention that Qt has a really good documentation including lots of practical examples that help for a quick start.
I've used both wxWidgets and QT professionally. Both are certainly capable of meeting your goals. Which one is easiest is hard to say. You don't tell us whether you're looking for easy to use, or easy to learn. Qt is easier for big programs. WxWidgets is easier to learn. This for a large part due to the signal/slot mechanism in QT, which is a good but non-intuitive architecture for large applications.
Both libraries are actually so good that I'd recommend them for non-crossplatform programming too.
Are we talking GUI Widgets? If so, I can suggest 3
FLTK:
http://www.fltk.org/
GTK:
http://www.gtk.org/
QT:
http://trolltech.com/products/qt/
As with the other posters, I strongly recommend looking at C++ toolkits. GTK will work on Windows and the Mac OS, but will only give you truly good results on Linux. And even some of the GTK maintainers are inventing their their own object-oriented C dialect to avoid writing GUIs against the native GTK API.
As for C++, it depends on what you want. Ease of development? Native GUIs on every platform? Commercial support?
If you want native-looking GUIs on Win32 and Linux (and something semi-reasonable on the Mac), one excellent choice is wxWidgets. Here's a longer article with real-world wxWidgets experiences. The Mac port has improved substantially since 2002, when that article was written, but it still has some soft spots.
The easiest to write a new program in would be the one you're most familiar with.
The easiest to use, test or distribute would probably be the most cross-platform, most distributed or the most supported one, so GTK+/wx/Qt/Tk?
Note that C itself isn't a particularly easy language, especially with the growing object-oriented approach to GUIs.
The easiest one to cook up a prototype in a scripting language, then convert to a compiled one might be any toolkit with a scripting language binding (pyGTK, wxPython, etc.)
That being said, of the "big" ones, only GTK+ and Tk have a C bindings. wxWidgets, Qt and FLTK were all written in C++ and don't have any C bindings as far as I know.
I suggest you look into learning C++ and then comparing the available options. Coding in C++ might feel like coding in a scripting language with great conveniences such as automatic pointers, utility classes and overloaded operators, non-invasive garbage collectors and easy to inherit parent classes all brought to your fingertips by the language itself and your widget toolkit.
Then my personal suggestion would be wxWidgets; quite easy to use, better documented than GTKmm and "freer" than Qt.