Qual a diferença entre QtCore, QtWidgets, QtQuick e QML?
Sobre o QtCore
QtCore é um subconjunto de componentes do Qt especializado em aplicações sem interface gráfica (GUI). Ele é usado com C++ (e não QML), mas há language bindings para uso com outras linguagens, como Python. Vários dos seus componentes também estão disponíveis em módulos do QtWidgets e do QtQuick.
A página inicial da documentação do QtCore é esta: https://doc.qt.io/qt-6/qtcore-index.html
A lista de classes C++ do QtCore é esta: https://doc.qt.io/qt-6/qtcore-module.html.
Dentre estas classes, as mais básicas são:
Sobre o QtWidgets
QtWidgets é um subconjunto de componentes do Qt especializado em aplicações com interface gráfica que oferece integração extra para aplicativos desktop. Ele é usado com C++ (e não QML), mas há language bindings para uso com outras linguagens. Seus componentes principais vem prontos para integrar ao seu sistema opracional.
A página inicial da documentação do QtWidgets: https://doc.qt.io/qt-6/qtwidgets-index.html
A lista de classes C++ do QtWidgets: https://doc.qt.io/qt-6/qtwidgets-module.html
Dentre estas classes, as mais básicas são:
- QApplication
- QWidget
- QMainWindow
- QDialog
- QLabel
- QPushButton
- QRadioButton
- QComboBox
- QCheckBox
- QLineEdit
- QTextEdit
- QLayout
- QMenu.
Sobre o QtQuick
QtQuick é um subconjunto de componentes do Qt especializado em aplicações com interface gráfica que oferece integração extra para aplicativos móveis, além da integração para aplicativos desktop. Ele é usado com QML e opcionalmente C++, mas há language bindings para uso com outras linguagens.
A página inicial da documentação do QtQuick: https://doc.qt.io/qt-6/qtquick-index.html
A lista de classes C++ do QtQuick: https://doc.qt.io/qt-6/qtquick-module.html
A lista de tipos QML do QtQuick: https://doc.qt.io/qt-6/qtquick-qmlmodule.html
As classes C++ possibilitam integrar interfaces QML em programas QtWidgets, enquanto os tipos QML são usados para construir interfaces QML.
As duas classes C++ básicas são:
Enquanto seus tipos QML básicos são:
Sobre o QML
QML é uma linguagem declarativa similar ao JSON usada principalmente para criar interfaces gráficas. É possível tanto escrever um programa puramente em QML quanto um programa que misture C++ e QML. Para os que estão familiarizados com a terminologia, a linguagem tem embutido o observer pattern e o composite pattern, e permite utilizar o model-view-controller pattern, state pattern, dentre outros padrões de design de programação, além de implementar um scene graph, o que torna a linguagem versátil e altamente produtiva, isto é, permite produzir mais com menos código.
Existem outros componentes do Qt que interessam para quem pretende programar com o QtQuick: o QtQuick Layouts para criar layouts dinâmicos e o QtQuick Controls para obter controles mais elaborados para sua interface gráfica.
Outros componentes interessantes do Qt são o QtGUI, que fornece alguns componentes de interface essenciais como QGuiApplication, QAction e QColor; o QtQuick3D, que permite trabalhar com modelos 3D usando QML; o QtWebEngine, que permite trabalhar com páginas da web diretamente, seja com C++ ou QML; e o Qt for MCUs, que foca em aplicativos com interface gráfica em embarcados.