当学习 QT 编程时,掌握以下几个关键模块是非常重要的。下面是每个模块的简要说明及示例程序:
-
Qt Widgets 模块:
- 说明:Qt Widgets 模块包含用于创建传统桌面应用程序的 UI 控件。
- 示例程序:
#include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.setWindowTitle("Hello, Qt!"); window.resize(250, 150); window.show(); return app.exec(); }
-
Qt Core 模块:
- 说明:Qt Core 模块提供了 Qt 应用程序的核心功能,例如事件处理、数据结构等。
- 示例程序:
#include <QCoreApplication> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); qDebug() << "Hello, Qt Core!"; return app.exec(); }
-
Qt GUI 模块:
- 说明:Qt GUI 模块用于处理图形用户界面相关的功能,如绘图、事件处理等。
- 示例程序:(简单绘制一个红色矩形)
#include <QGuiApplication> #include <QPainter> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QWindow window; window.setBaseSize(300, 200); QPainter painter(&window); painter.fillRect(50, 50, 200, 100, Qt::red); window.show(); return app.exec(); }
-
Qt Network 模块:
- 说明:Qt Network 模块用于实现网络通信功能,包括 TCP、UDP、HTTP 等协议的支持。
- 示例程序:(简单的 HTTP GET 请求)
#include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QNetworkAccessManager manager; QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("https://www.example.com"))); QObject::connect(reply, &QNetworkReply::finished, [&](){ qDebug() << "Response received: " << reply->readAll(); app.quit(); }); return app.exec(); }
-
Qt SQL 模块:
- 说明:Qt SQL 模块提供了方便的数据库操作功能,支持多种数据库管理系统。
- 示例程序:(使用 SQLite 数据库进行简单操作)
#include <QCoreApplication> #include <QSqlDatabase> #include <QSqlQuery> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("mydatabase.db"); if(db.open()) { QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS MyTable (id INTEGER PRIMARY KEY, name TEXT)"); query.exec("INSERT INTO MyTable (id, name) VALUES (1, 'Alice')"); query.exec("SELECT * FROM MyTable"); while (query.next()) { qDebug() << "ID: " << query.value(0).toInt() << ", Name: " << query.value(1).toString(); } db.close(); } return app.exec(); }