Unsolved how to start?
I'm Bassam a student of software engineering, I have heard a lot about a QT it's standard and perfect design and cross platform (windown linux android ios ....).
I want to build a software for academy purpose (desktop app connect to MS SQL Server and me be in future make the app working on android and ios)
1- is QT a suitable choice for that, as I have heard also the QT only for GUI !!!! ?
2- what is advantages and disadvantages of QT?
3- is it free ? as I talked I'm one developer and my project is for academy purpose??
4- I'm not know any technical info about QT , I want to be jump from zero to hero :), how and where can I start ???
ValentinMichelet last edited by ValentinMichelet
1- Qt is not only for GUI, since it has several modules: http://doc.qt.io/qt-5/qtmodules.html
2- I'm not sure that this is the place to ask for that, and a simple search on the Internet can answer that question
3- You can find the license details here: https://www.qt.io/licensing/
4- The official documentation is a good start, there are plenty of examples and tutorials. Just try and play with them: http://doc.qt.io/qt-5/qtexamplesandtutorials.html
Also, have a look to this page about coding with Qt Creator: http://doc.qt.io/qtcreator/creator-writing-program.html
By the way, it's written Qt, not QT, for a reason: https://en.wikipedia.org/wiki/Qt_(software)#History
Have fun learning!
Welcome to the Qt world. Yes Qt is best choice for you. Start learning it. Qt comes with OpenSource version and license version. You can start working with OpenSource version. Go to the download page and download Qt kit appropriate for your Operating system.
Have fun with Qt. We are there to help you to learn Qt.
ad 1) as soon as Qt supports all your target platforms and you do not have any special needs i would say it's good to go. And it's not only for GUI. It has a huge amount of helper and convenience classes/modules
ad 2) well it's advantage and also disadvantage is that it is cross-platform :) Of course cross-platform support But it has a very strong community and development is continuously ongoing
ad 3) it is free as long as you follow the LGPL license agreement. Which is mainly says that you must release any changes made to the LGPL library (Qt in this case) - if you have any - and you need to link Qt dynamically. Which is a problem when using Qt on mobile devices (LGPLv3). In this case you would have to publish the whole source code. But note this is not a legal advice. You should check with a lawyer.
ad 4) Probably best would be to buy a book and start reading to get an overview of the possibilities and concepts. Then you have all the basics bundled. Once finished you can check out whatever is interesting for you and/or needed for your project. Also there are tons of learning material on the web
@raven-worx "Which is a problem when using Qt on mobile devices (LGPLv3)." - are you sure? As far as I know only Apple forbids dynamic linking. For Android you can link dynamically and then you don't have to by a Qt license or share your source code.
As far as I know only Apple forbids dynamic linking. For Android you can link dynamically and then you don't have to by a Qt license or share your source code.
This is true for LGPLv2 modules. Since Qt 5.4 (IIRC) some modules are only available under LGPLv3. (The old modules remain also available in LGPLv2.)
So this also applies for Android IMHO.
Some months ago I started a database based project. Before I started I did some research into the tools I would use. My project is gui only, so my situation is a little different than yours, but not a lot
My decision was Qt and Postgres, for many reasons.
For licensing, if you have no problem publishing your code, then that's not an issue. Since your project is in academia, I would think that's not an issue. You may have to remind some people that it's the code, not the data that has to be published though,
Qt is not perfect, but it is the best available. It is very comprehensive. That means complexity. Thankfully, it is well organized and documented complexity, so you don't have to worry about it much if you follow the examples. If you want some video tutorials, I can recommend going to voidrealms.com. His tutorials break things down quite nicely.
For a database project, I would make two recommendations, Use MVC and put as much of the business logic in the database as you can. This is something that has made my project much simpler. All I have to worry about in my application is the gui. You're using a different database than I am, but I would expect the MS server to also be capable of this.
I'm a physicist (nuclear theory) and I use Qt to provide thread support, containers, dynamic loading/unloading for plugins and in general my application(s) internal infrastructure. All those things do not require any GUI, and the sheer amount of tools Qt provides makes it well suited for (almost) any task. It integrates well with most other libraries, I've run it alongside Open MPI for several cluster high-performance computing applications, boost and Ogre3D and it just runs fine. The most important thing to know about Qt is that it's a tool, a library, framework to create GUI and non-GUI content, and it is written in C++. So make sure you know C++ sufficiently well (unless you'll be using only QML), otherwise you'll probably have a bad experience.