Note In this answer, “Qt Widgets” refers to the Qt Widgets Application, which can be selected when creating a new Qt application.
This is seven years after the question was first published ... but here my goal is two cents to neutralize any events since then.
Refreshing
language
Qt Quick projects use QML and JavaScript.
Qt Widgets projects use C ++ code (or there also Python in PyQt / PySide).
Performance and Coding
Thus, Qt widgets can be considered low-level compared to Qt Quick. But this implies that in the long run, the Qt Widgets project will work faster and have better performance. Being low-level may be good, since Qt Widgets is more open to the native API (QtCore module, QtStyleSheets, etc.). However, most will prefer Qt Widgets for desktop development.
However, C ++ / Python is much stricter than JS. This may be good, since you have more freedom. (QtCreator does issue warnings, so this should not be a flaw. Just remember to write clean code, not spaghetti.)
Qt Quick serves mobile development (it can still be used in desktop development). It has ready-to-use pop-ups (these draggable sidebars), animations, tab views, quick access controls and regular buttons, sliders and progress bars; all to accelerate the development of mobile applications.
Ui design
Both have custom ui files that work with QtDesigner, providing a high-level interface for customizing layouts, creating interfaces, etc. (In Qt Quick, this is *.ui.qml . In Qt Widgets, this is *.ui .) You can also do this programmatically using QML / JS or C ++ so that .ui not required.
Learning
If you are completely new to programming, I suggest taking a look at Qt Quick first. Personally, I think that Qt Quick has a softer learning curve and it is easier to work with it to complete many projects. IMHO, it’s called “Qt Quick”, and this is due to the fact that usually less code is needed to complete a task or design, which allows you to quickly use any magic that you plan. (Don't look down on QtWidgets; they have some good modules that outperform QtQuick.)
However, if you used to program in C ++ or Python, I would advise you to first look at Qt widgets to get used to their signals/slot mechanism and any modules that they have (e.g. sql , webengine , gui ) along with programming constructs ( e.g. programming a model / view to display tables or data).
Especially with C ++, most non-Qt libraries that use event handling in while -loops, this does not apply to Qt. They use signals and slots .
In the end, even if you mainly use Qt widgets, you might want to take a look at Qt Quick, as it offers a high-level language for work and allows you to configure settings faster. (Especially for mobile development.)
Qt provides examples in abundance for the Qt Quick and Qt Widget projects along with an active forum . So you don’t have to worry about getting help in the long run. (Don't forget StackOverflow!)
Combination
Please note that there is also the option of integrating QML with C ++ . This allows you to use the functionality of Qt Widget and C ++. (For example, QtQuick provides a TreeView but not a TreeModel , the model must be registered in QML from C ++.)
This is also convenient if, say, you need a backend for intensive SQL queries or http / xml queries. Isn't that cool? QML / JS frontend plus C ++ backend. Full stack of Qt'er. :-)
(What I haven't tried yet is the Python backend. I haven't touched PyQt yet ...)