Is mono still suitable for a Linux Desktop Application [closed] - qt

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I want to make a Desktop App for Linux and I'm wondering if C#/mono is still suitable for that. Do they plan to make a wrapper for GTK 3? Or is Qyoto a better choice? Also, I'm wondering if GTK is a good idea for Ubuntu, since they plan to make their own window server. (Which will use QT if I'm not misinformed...)
Any hint is appreciated.

Is mono still suitable for a Linux Desktop Application
Yes, and a good example of this is the Banshee Media Player.
Do they plan to make a wrapper for GTK 3?
Various people from the community like me are working to make this happen. In fact, there's already a version of GTK# that binds GTK+ 3.x, it's a preview version labeled as "2.99".
Or is Qyoto a better choice?
Not sure about this. I don't know of any key app that uses this, although the binding seems to be maintained and kicking. Something tells me that there's still lots of work in progress and things to do in this area though, because Qt is C++ and it is hard to bind it from C#. But there are very recent developments to fix these issues which are very promising, such as CppSharp.
Also, I'm wondering if GTK is a good idea for Ubuntu, since they plan to make their own window server. (Which will use Qt if I'm not misinformed...)
You're misinformed. Canonical's Mir project is one level of abstraction lower than what you're thinking: it intends to replace X11, in a similar way Wayland does. And both gtk+ and Qt run on top of X11.
That being said, if you're very cautious about selecting the wrong option, you could use the XWT toolkit, which abstracts you completely from the toolkit in each platform. This way, you would just need to implement a Qt backend (for XWT) in the future in case you want to stop using GTK+ in the Linux platform.

You can use Qt or GTK on KDE or Gnome DEs, what the DE uses is irrelevant to your application because the system will have both sets of libraries available anyway. The advantage to Qt is that you have an easy migration path to other platforms.
I personally would stay away from Mono, it is still available on all major distros, but has a reputation for poor stability. It is also incomplete, and they haven't shipped a new release since December 2011... For example on the distro I use, openSUSE, it is significant that the Mono runtime and bindings are not installed by default - unlike most other big VM/interpreted languages (Python and Java for example).

Related

Commercial application using Qt [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I am a new user of Qt...I want to know can I create commercial and closed source applications using Qt4(LGPL Licensed)?
and also what is the difference between Qt4(LGPL version) and Qt4(Commercial version)?
Thanks in advance...
The LGPL allows for use in proprietary products. One thing you do have to do when using an LGPL library is allow the end-user to replace the library code with their own (modified) equivalent, implying dynamic linking to your actual application in most cases.
That's why the commercial edition of Qt touts static linking as one of its features, on top of the other features relating to development support.
LGPL licensing means that you can use Qt in your application, link to it (this part is a bit confused, but it is specifically allowed for Qt thanks to a special exception), and not have to license your application as open source. The Qt library itself, however, is still open source, and you're not allowed to publish new version of Qt without providing the source code.
GPL licensing means that you can't use it at all on closed source applications (well, you can use it, but you can't publish it).
The Commercial licensing is if you want to make changes to Qt and not publish them. For example, you would need the commercial licensing if you wanted to develop a new version of Qt for your mobile phone platform, and wanted to keep parts of it as closed source. This licensing option isn't very interesting to application programmers.
Yes, the LGPL does allow commercial/closed source applications. That's the main difference between GPL and LGPL.
From what I can tell, the Qt commercial is basically for commercial "support" for the product, and in case the LGPL license doesn't suit your needs.
As you can see on the QT website:
We license Qt under the terms of the GNU Lesser General Public License
(LGPL) version 2.1.
This version of Qt is appropriate for the
development of Qt applications (proprietary or open source) provided
you can comply with the terms and conditions contained in the GNU LGPL
version 2.1.
Additionally,
we have reached an agreement with Digia, who provides Qt under the
terms of a commercial licensing agreement. This version of Qt is
called Qt Commercial. To find out more about Qt Commercial, please
visit qt.digia.com.
They also say that, usually, the LGPL version is OK for Symbian, Maemo or MeeGo development.
The LGPL basically allows commercial/closed-source software.
So take a look at the LGPL, to check if it's ok for you. if not, you'll have to use the commercial license.

Any open source alternatives to balsamiq mockup [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
As the title reads, I'm looking for open source alternatives to balsamiq mockup for prototyping. Anyone knows of an equally good alternative that's open source or basically freeware.
The best available Open source mock up tool is Pencil. Its available as firefox plugin as well as stand alone.
Another solution, which I personally use is Inkscape, an open source SVG Editor. It is NOT a mock up designer, but we can use it for designing mock ups, using freely available stencil kit, like Yahoo Stencil Kit.
Mockingbird is free during beta
Firefox's pencil add-on is free forever
Take a look at Maqetta. It runs as a html5 app in your browser, so you can deploy it on your server to easily share your work with others, or you can simply start it locally and point your browser to localhost on port 50000.
On their homepage, you can test maqetta online (after registering), or download a package that contains everything needed to run it locally.
Resources:
Homepage
Repository on github
WireframeSketcher is not open-source but it's free for open-source developers. WireframeSketcher helps you quickly create wireframes, mockups and prototypes for desktop, web and mobile applications. It comes both as a standalone version and as a plug-in for Eclipse IDEs. It has some distinctive features like storyboards, components, linking and vector PDF export. Among supported IDEs are are Aptana, Flash Builder, Zend Studio and Rational Application Developer.
(source: wireframesketcher.com)

What's easier and cleaner? GTK or QT? [duplicate]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Can someone suggest what's the best uses for those libraries today? Is it just GUI, or do they have database, XML, networking, threading, etc support too?
I was reading about them, and considered starting to learning/using one of them.
What is the most common one? What's the difference between them? Why would you choose one over the other?
As you seem to primarily target Linux, then the choice mostly depends on the programming language you want to use.
If you code in C, then obviously go for GTK+
If you code in C++, go for Qt, otherwise you will need Gtkmm (a C++ wrapper over GTK+)
If you code in Python, both GTK+ and Qt have bindings for the language: see PyGtk, PyQt and PySide (the one launched by Nokia themselves).
If you code in Java, Qt is no more a viable option imho as Nokia discontinued Qt Jambi (the Java bindings for Qt).
Also, Qt is more top-notch regarding its scenegraph QGraphicsScene API, its scripting engine built over Javascript Core (the engine powering WebKit), its state machine and animations framework, and the declarative UI.
GTK+ doesn't offer that much although you can use Clutter alongside with it.
If you're specifically looking into DB, XML (GTK+ has a parser for a subset of XML) and threading (GTK+ has GLib) features then Qt will offer all that in QtSql, QtXml and QtConcurrent.
All in all, I would say Qt is a sure choice. But GTK+ is very capable as well.
I'm not sure you will get a crystal clear answer for your question, which explains why some people keep preferring Gnome over KDE or vice-versa. Choose what works best for you.
PS: I you plan to also target Symbian, then go for Qt.
EDIT: Something that is also great with Qt is QtWebView: it brings Chromium into your Qt application to display web content. Others are embedding web content into their application using for instance Awesomium or Berkelium.
I've used GTK+, QT and wxWidgets before. Here's a brief summary:
For my first cross platform UI project I decided to go for wxWidgets mainly because at the time the license wasn't as restrictive as QT's (QT was GPL and only for Linux) and it had platform specific UI (unlike GTK). The project worked out well but there were quite a few glitches getting it to compile and run properly in other platforms - sometimes some events were fired up differently and such. Also GDI in wxWidgets was pretty slow.
Next I used GTK for a different project in python. For this I used the python bindings and everything worked out more or less smoothly. I didn't quite like the fact that the UI didn't look native on Windows and Mac and also when you launch a GTK+ app it always debug outputs loads of CRITICAL warnings which seem fine to ignore. :S
Finally, I did a very simple QT project now that Nokia has acquired it and was brilliant. The best of the three. First off, if you're not an old schooler who prefers VI or Emacs, QtCreator is brilliant. I really love VI and used it for years but I much prefer QtCreator for C++ QT projects. Regarding the library I also liked a lot the documentation and the APIs provided. QT has a concept of slots and signals which introduce new C++ keywords and a preprocessor. Basically, after reading a tutorial you'll get it easily and will start to love it. I'm now doing iPhone dev and it does feel a bit like Cocoa's/Interface Builder's UI paradigm.
Summary: I'd go for QT hands down. The license is pretty good and the SDK and documentation really nice.
I have never used GTK, but from my personal experience using Qt:
It is much more than a simple GUI. It's a whole application framework. I used to think of it as the Java libraries for C++. It provides all you mention -- database, XML, networking and threading, and more. It also provides things such as containers and iterators, and counterparts to a number of boost libraries.
The thing that impressed me most when starting to use Qt was the extremely extensive documentation. You get a program called Qt Assistant, which provides fully indexed and searchable API documentation on your desktop, as well as numerous code examples and tutorials. I found it made a big difference in searching the web each time for API info. Very quick access when you need to remember a method signature.
I am not sure which is most common; that's probably hard to measure accurately. They're certainly both popular. As Gnome is the default desktop of Ubuntu, and Gnome sits on top of GTK, it obviously has widespread usage. Of course, KDE is very popular as well. Nokia is heavily pushing Qt in the mobile space -- their Maemo OS, used on the new N900 for example, is soon to switch to Qt as the default toolkit (currently it is GTK.) I believe Qt will also soon become the default toolkit for Symbian OS.
I have not used Qt Creator, but I have heard many good things about it. It is a C++ IDE with obvious heavy integration with Qt. It also has fake vim emulation which is always nice if you like that kind of thing!
Qt uses qmake for build configuration. I found this much nicer than having to write your own makefiles. I do not know what GTK uses for building.
A couple of things I found a bit offputting with Qt at first was its big uses of preprocessor macros. The signal/slots system provides a nice mechanism for event/message passing in your application, but it does feel a bit like magic that may not be easily portable to another toolkit if you ever want to. Also, the moc (meta-object compiler), while I'm not entirely sure what it does, also feels a bit too much like magic going on behind the scenes.
All in all, though, I would recommend Qt, particularly if you are learning. It has really amazing documentation and a nice IDE, and busy forums. You'll be able to build C++ apps very rapidly with it, particularly with the QML coming in 4.7.
It probably depends on what you want to do. I would recommend Qt, because it's more than GUI, it has nice Python bindings (so does Gtk), and GUI libraries themselves are (subjectively speaking) more pleasant then Gtk.
Gtk is on the other hand more common in linux world, so you can probably get more help on the web. Reason for widespread of Gtk probably has more to do with Gnome and Ubuntu, rather then technical merits, but if you want you software to blend nicely with those two, you'll achieve that more easily with Gtk.
Qt for one sure has solid DB, network, threading support etc... It does a lot more then just cross-platform GUI (and it does most of it quite well).
I'd recommend it over GTK+.
Qt. It's not only object oriented, is "good" object oriented.
It's based on a "subset" of C++ that doesn't rely on the obscurity of C++ (but you are allowed to stick with them, if you fancy masochism ;) ).
It has a strong momentum now that Nokia bought it (actually Nokia did ~2/3 years ago). It's going to be in all Nokia AND Intel mobile devices (smartphones, netbooks, tablets).
It's the backbone of KDE, so it's very mature, but it's designed in a very flexible way, that makes it possible to support TODAY all the latest "cool stuff" that a more-then-just-GUI framework should have.
Go for it.
Just adding QT advantages to other answers.. QT has great documentation, its own IDE & GUI creator and enhances C++ with some new concepts like slots/signals (basically events).
I am not a GTK developer, so I can't compare those to the GTK world :(
It also looks like Nokia is about to use Qt everywhere, like on Maemo
If you want your app to run on iOS, Android, Blackberry, other mobile platforms, Windows, Mac OSX, and Linux, use Qt.
qt-project.org

Help Recommend Qt Opensource Project [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I just finished half of "the C++ GUI Programming with Qt 4". I wanted to find some small-scale or medium-scale opensource projects that are built on Qt 4, then I can learn something from the source code.
Could anyone recommend some projects from your experience when you start to learn Qt?
Thanks a lot.
You can try http://www.qt-apps.org/. That's Qt only rather than KDE.
For KDE you can try installing it on your Ubuntu, use it for a while, pick one application that you like and look at it's source code. You can then get that from the KDE SVN repository, compile it yourself, change it, fix bugs, submit patches etc.
But remember that KDE is not Qt. KDE uses kdelibs which are another layer built on top of Qt. Maybe the cross-platform aspect also interests you: Qt works great on Linux, Mac and Windows while KDE works great on Linux and it's in the process of being ported to Mac and Windows. There is progress there (you can get KDE applications on Windows here) but they are by far not as polished as Qt is on Windows.
I guess you can say that if you aim to learn for getting a job using Qt or want strong cross-platform support then focusing on plain Qt is better, while if you aim to develop open-source applications using Qt KDE could be the better choice.
If you are on Linux (but there are ports for win and mac too), you shoul definitely take a look at any KDE application. It uses KDE libraries, but everything is built on top of QT, so it's a good start. Especially because there is a huge number of available apps, ranging from the smallest game to the large mail client ending up with an entire desktop environment.
All is open source, freely available, well documented and you can get in touch with lots of people who can help you starting up.
I wouldn't suggest going through qt-apps.org or kde-apps.org. You can find a lot of badly written applications there.
Look at the Arora browser if you want something to learn from. It isn't that large, and the source code is nicely organized.
For small to medium Qt softwares, I recommend the site www.dprog.net
That's a community building small and medium softwares with a very high Qt code source quality,
perfect for you !
Hope it helps !
Here is an open source Qt-based project I am working on:

GTK+ or Qt under Windows [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 4 years ago.
Improve this question
I was wondering which one should I consider if I need the software to be used on both platforms, WIN and Linux and why?
Packaging GTK and its dependencies on Windows is a full-time project in itself. Qt is much more easily distributed since it has no dependencies that do not come with Windows.
Qt has been cross platform from the start. GTK has not always been cross platform. Such fundamental decisions shape the overall design, and should be made before any code is written in my opinion.
I would comment more, but I'd be drifting into speculation, the above two things I know for certain.
Both are good toolkits that have their advantages and disadvantages.
One difference is the implementation language. Qt is in C++, and GTK+ is in C. However GTK+ has bindings for many, many other languages (perl, python, C++, .NET, etc) so it's not a huge issue.
An Advantage of Qt is that it offers a bit broader range of functionality built in (xml, database access, network programming, openGL, etc). GTK+ has basically all of these things within its orbit (e.g. libxml2, librsvg, libsoup, libgda, etc), but they're not as much of a single coherent package as Qt is.
My personal recommendation is to use gtkmm, the C++ bindings for GTK+. It offers a more comfortable object-oriented language to program in, and it provides nearly the same native performance as using GTK+ from C. (Disclaimer: I contribute to gtkmm).
GTK+ you can use almost in all programming languages, in C++ (using gtkmm) in C (gtk+) in C# (with Gtk#) in Python (PyGtk). Behind GTK you have Mono Framework which is great implementation of .NET Framework for cross platform purposes. If you want to use Gtk# you have great IDE (MonoDevelop) with a very powerful gui designer. You can take a look at www.mono-project.org. But still depends what do you want to build, you are looking just gui toolkit, or the entire framework? And the logic behind signals/slots are the same in Gtk+ and Qt, but if you are using Gtk# they are transformed in the delegates/events paradigm.
my $0.02:
I've used Qt off and on for the last 4 years, and it's hands-down my favorite toolkit of anything I've tried (Win32, MFC, Borland, Java, GTK). I used GTK for a few weeks to try it out, and didn't like it. Mostly that was because I think it's awkward to use C instead of C++ for GUI apps on a PC... I do embedded work too, and I'd never use C++ on an 8051, but for a big GUI app I much prefer it. If you're going to try GTK, I'd suggest looking in to GTKmm, although I've never used it myself.
You might also consider wxWidgets. I have never used any of them but when I was looking over the cross-platform toolkits it was the one I had decided to try.
They are both fine toolkits. I'd base my decision on the licensing. Qt requires that you pay for a license if you are using it in a commercial product wheras GTK does not.
Three additional points in favor of Qt:
Your project does not have to be GPL; there are many other open-source licenses available in the Qt GPL Exception, including BSD and LGPL.
Qt's default theme on Windows does a much better job of blending in than GTK's Wimp theme.
If you want to support Macs later, you'll have a much easier time with Qt.
I would prefer Qt. As today, Qt is Open-source and free under more permissive, LGPL license.
Qt is better ported for Windows and looks more native than GTK. Gimp on windows, for example, looks very strange, because most of its dialogs are not Windows dialogs. Qt can use native Window dialogs like Open/Save which makes it feel better as a framework. And yes, Qt is a framework, not only a GUI Widget. No, I am not advertising Qt here, as Qt have some strangeness for a windows user from development point of view, for example, Qt is Layout based while MFC / .NET are anchor based and Qt's Layout managers are sometimes strange. But if I have to choose between both GTK and Qt, I will select Qt. Also, now, Qt comes with very good IDE, Qt Creator, which is my default C/C++ IDE for all types of projects now (as Qt Creator can be used as such).
Qt 5.0 has won the war.
I'm not a huge fan of C++ (I prefer plain old C), but I must admit that the Qt framework is amazing.
Try to write a GUI program with GTK that runs on OSX, Linux, Windows (and soon iOS and Android) with native look-and-feel... Good luck !
I recommend to use Qt because:
It's cross-platform and and covers wide range of operating systems (including mobile)
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++

Resources