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'm currently having some analysis paralysis in deciding which is better for me between C++ using the Qt framework, or C# using the .NET framework for developing a small to medium sided project I currently designing.
I have a little experience in both languages, slightly more in C++ however would probably still be considered a novice.
All the information I have read has been relativity outdated (being at least a couple of years old) and was wondering if there have been any updates that would swing the advantage one way or another, or if it really is just a matter of preference.
QT seems to support my particular requirements needs slightly better however the additional difficulty of working in C++ may offset taking me back to square 1.
My requirements are fairly simple, I will need rich text support, database connections, the ability to export to various file types and have a fairly dynamic GUI.
Anyone have any personally experiences or recommendations they wish to share?
I recommend to use Qt because:
It's cross-platform and covers wide range of operating systems (including mobile)
Writing in C++ gives you the opportunity to use libraries
like the STL, Boost, etc;
Using C++ gives you the benefit of running your app at high speed
It is opensource and has a fast speed in getting better
It has the a nice GUI designer and a very capable IDE (Qt Creator)
The API design is excellent and easy to use
It has a great documentation which is easy to read
It has the Qt translation system which enables you to have a multilingual app
The GUI layout system where the widgets resize themselves according to a layout makes everything much easier
The QML gives you the power to create fantastic GUI with great graphics and animations
It has great support for networking and connectivity(socket, SSL, www, IPC, ...)
It has QTestLib for testing the code
It has many language binding if you don't want to use C++
You can learn Qt easily if you know C++
All requirements you have given are completely feasible and easy to do in Qt
It doesn't require any VM for deployment but .NET needs that.
Your application will be cross platform
Creating custom UI is very much possible in Qt. You can create almost any kind of UI in Qt.
Related
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 6 years ago.
Improve this question
I was working with Windows Forms for a while now, and due to certain limitations on Forms, I want to work my way up to a better way of making GUIs. I found WPF, which looks pretty promising, but I'm asking you guys, if there are any better ways for doing nice GUIs for Windows with C#?
Thanks in advance!
I would look for MS roadmaps and instructions where they plan to drive the platform. For example:
.NET Technology Guide for Business Applications
This is since nov 2013 but still valid to a large degree. Among other things it states that (emphasis mine):
.NET Windows Presentation Foundation
This is the preferred technology for Windows-based desktop applications that require UI complexity, styles
customization, and graphics-intensive scenarios for the desktop. WPF also takes advantage of XAML views.
And WPF development skills are similar to Windows Store development skills, so migration from WPF to
Windows Store apps is easier than migration from Windows Forms.
HTML5&JS-based apps is an alternate route but I consider it inferior for development efficiency and maintainability reasons. If you are a scripting fella, then it's worth a look.
By my experience WPF is definitely the way to go for desktop development.
There is definitely a learning curve migrating from Forms development to WPF, but in my opinion the effort is well worth it, and not simply because WPF is aesthetically different to Windows Forms.
WPF encourages you along the MVVM ("Model-View-View model") path and a separation of concerns between UI, logic and data elements. As an aside, MVVM is one of a number of MV* architectural patterns - there's some debate about what constitutes the difference between the different patterns, but consensus that separation of concerns is absolutely a good thing. For example:
http://www.infoworld.com/article/2926003/microsoft-net/exploring-the-mvc-mvp-and-mvvm-design-patterns.html
https://nirajrules.wordpress.com/2009/07/18/mvc-vs-mvp-vs-mvvm/
What is difference between MVC, MVP & MVVM design pattern in terms of coding c#
In terms of specific advantages over Forms, there's a lot of stuff you get out-of-the-box with WPF, like two-way data-binding and UI threading for instance. But I found that the change in thinking about problems is equally valuable; when I started thinking in MVVM, things like asynchronous programming (e.g. calling web services from windows-based client applications) just became much easier to conceptualise and reason about.
MV* is all the rage in web development, too, so the skills (and, in an ideal world, some of the code) are transferable to the web.
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 1 year ago.
Improve this question
all, I'm thinking of porting my application from VB.net to the C# based MONO project, so it can run on both Windows and Mac. However, I am in need of a Mac-friendly alternative to WPF. It has to have very similar functionality. QML (by QT) is not a viable option, as it costs far too much money for us.
There is also https://github.com/AvaloniaUI/Avalonia a multi-platform .NET UI framework inspired by WPF
Miguel de Icaza recommends MonoMac as a substitute to WPF for Mac as stated here. As he explains there is no plan to implement WPF in mono.
MonoMac is a work-in-progress. Some parts of the Cocoa APIs are not wrapped yet. You should start with the samples to get an idea of what is possible.
You will have to build two different UI on top of a common engine, but that's generally a good separation of concerns.
There is also a possible common code base for UI with GTK#.
Depending on your application's functionality, you could potentially port your application to Silverlight/Moonlight. Silverlight is supported on the MAC, but you'll need Moonlight for Linux. Of course, if you're doing a lot of work with the client machine's file system or what not, this is not an option.
tho I have accepted an answer a while back, I want to post what I am doing currently if anyone views this question.
I am currently using Python with PyGTK for the GUI, and GStreamer for the video. This is producing results almost identical to WPF (except some hardcoded animations). Furthermore, it runs on Windows, Mac, and Linux.
EDIT: GStreamer did not pan out for my purposes. While it works well for the most part, I could not layer transparent .png images over the video. I have switched finally to Adobe Flash (Adobe AIR).
EDIT 2: For anyone who comes across this later, when the future of SWF fell into question, my company started building our own animation system in C++, using some components of Gtk+/gtkmm and Cairo. Ultimately, that falls under the advice of the other answer...separate GUI from platform.
https://www.noesisengine.com/
Is another alternative to xaml/wpf that is also for video game engines. It currently has a Indie/Free tier up to 100k in revenue, and is cross platform.
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 5 years ago.
Improve this question
I want to write simple application with some 3D objects for Windows OS.
The application is very simple, like a gallery where we can move and see some pictures. When users go to the some picture and click on it a window will open and show picture with some information.
Which is the best framework for this task WPF, XNA, or something else? Application will be written in C#.
I can not say which is best, but I have done a while ago some things with the WPF 3D API and I liked it.
It was IMO very simple to use and the rendering seemed to be relatively fast. A really nice thing I found, was that it has an object-model that contains high-level-events such as mouse-down and click. Therefore you don't have to do much math. However, maybe provide also other APIs such high-level services, I don't know.
I would not try to create an action-game with it, but for a small app as you have described, I think it is worth a try.
Unity has been used for similar stuff. It can work on browsers (via a plug-in) or as a program, has a lot of documentation and most of the work involved in creating a 3D environment and interface is already done. Code can be written in Mono (open source C# implementation), JavaScript or a Boo, a modified Python scripting language.
It works in Windows, MacOS, iPhone, iPad and Android. And it is free in the standard version, or really cheap.
XNA is a little lower level, so it will require more work to get things started. It supports Windows, WP7 and Xbox 360.
See this discussion : WPF VS XNA
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
Here's the situation:
I need to develop a desktop tool that will take in an input from Oracle (text) and it's output is a print of a layout generated by that tool.
The tool needs to be fast and able to print easily and not much extra software required on client PC's which ALL run Windows.
Now i've studied Java, PHP in the past however I don't want to use PHP for the Desktop App
and I have my doubts about Java in regards to Printing and developing the GUI.
It seems to me like with C# I can develop the GUI easier and faster, and most PC's have a lot of the tools required for the GUI in the OS (.net framework).
A tool like NetBeans helps, but more often than not the GUI design is either broken
or shoots across the screen when I make a simple change.
So now I'm thinking about starting in Visual C#, however I would like to get your
opinion.
And from my past VERY short .NET programming experience, I can still remember that deploying over the internet is easy as well, with JAVA I've had some issues with that as well before I got it to work.
So in short:
Windows environment
Lot of GUI design
Fast app that runs on client Windows PC's without much 'extra' software installing
Easy print programming
THANK YOU!
My preference would be C# or VB.NET with Windows Forms. WPF is also worth looking at, and will give you the most modern UI, but it has debatably a steeper learning curve attached.
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 starting to learn c# and wanted to create an actual app which one of the two would you start with?
Personally, I would learn WPF. We use a lot of Winforms, but we're in the process of migrating to WPF. I think that's a more future proof set of skills. WPF Virtual Labs are a good place to start.
My rule of thumb is to choose the most recent technology that doesn't require your users to go through extra effort. If you have to support Windows XP, then WinForms is the way to go as it doesn't require XP users to install .NET updates. If you don't have to worry about XP, then WPF is probably the ready to go.
I recommend WPF - it is now very mature and well supported. Of course, winforms is still supported and some new development is being done for it. However, WPF is significantly more sophisticated and powerful. Almost as importantly, the tool support for it is MUCH better than for WPF.
Here are some links for you.
A Guided Tour of Windows Presentation Foundation
Windows Client .NET
WPF vs Windows Forms
I would say learn both to have a stronger foundation of knowledge and be able to work with legacy code, but put more effort into WPF because it will eventually replace WinForms.
The basics of either are much the same -- WPF offers a lot more features by way of declarative UI definition and skinning/theming, and a slightly different set of layout techniques. While you're at the "Hello world!" stages, it makes little difference -- certainly less than using either GTK# or the Swing implementation in VJSSupUILib would.