Recommend cross-platform C ++ UI and network libraries

Things to consider: - easy to use - fast - use the base OS as feasibly as possible (for example, wxWidgets for the user interface)

I tend to wxWidgets for UI and Boost for networking - how do they compare with others?

+4
source share
8 answers

I had a good look with wxWidgets on the front panel and boost :: asio at the end of the network.

wxWidgets has built-in network classes, but you quickly click on them and there are one or two big restrictions. If you want to stay in the wx world, there is a package called wxCurl , which is a great package (I used it in the early days) that wraps libCurl with some wxWidgets C ++ idoms.

In the previous my project (a heavy file / network file transfer project), we ended up with boost :: asio, which had the advantage that it wasn’t such a complicated API that it was easier to create this libCRUL (although it might be better , it has been several years) and gives us a very common network core (boost can compile anywhere, even applications on the command line).

+3
source

I hear good things about qt for GUI

Qt is a cross-platform application and user interface. Using Qt, you can write web applications once and deploy them on desktop, mobile, and embedded operating systems without rewriting source code

+12
source

For GUI, I highly recommend using Qt. This is a very powerful GUI that requires writing very few lines of code. It has a very nice and easy to use model of signals and slots.

wxWidgets IMHO is also modeled after MFC, which has a very poor model.

Network: I would suggest going to Boost.Asio very powerful and enjoyable. However, if you want to integrate the network interface into the main GUI loop, you can try using the Qt classes for this, but I have no experience with them.

+2
source

I used XVT historically, which has been used commercially by thousands of companies.

+1
source

Both Qt or wxWidgets can create networks, even if this is not their first goal.

For more networked network libraries, besides boost :: asio , you can check ACE (Adaptive Communication Environment) or POCO

A comparison between these libraries has already been discussed in stackoverflow .

0
source

boost :: asio seems to be very well written and has a very clean API - I'm still trying to find out how good this is for shared-nothing multithreaded TCP / IP.

Your other options may be Poco , or ACE . Capturing a Poco socket is pretty naive - i.e., it only allows Poco to do things. I have never heard anything good about ACE.

edit:. Hmm, I am revising ACE and now it is more useful to me (after writing several network applications) - it may be suitable for my needs compared to ASIO, However, this is more than likely for you. If my peers find out about this, they will avoid me until the end of time.

0
source

We had good success using wxWidgets with boost :: asio recommended for developing desktop servers.

0
source

For GUI, I can recommend QT

For Networking ACE (adaptive communications environment) or boost :: asio.

0
source

Source: https://habr.com/ru/post/1302738/


All Articles