当前位置: 首页 > news >正文

QT 常用模块介绍以及使用说明

当学习 QT 编程时,掌握以下几个关键模块是非常重要的。下面是每个模块的简要说明及示例程序:

  1. 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();
    }
    
  2. 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();
    }
    
  3. 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();
    }
  1. 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();
    }
    
  2. 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();
    }

相关文章:

  • YOLOv9改进策略:IoU优化 | Wasserstein Distance Loss,助力小目标涨点
  • java中的static和单例模式
  • SpringBoot自定义stater开发:拦截器开发
  • 命令模式(请求与具体实现解耦)
  • Photoshop 工具使用详解(全集 · 2024版)
  • hdlbits系列verilog解答(Adder3)-67
  • 2024-03-26 Android8.1 px30 WI-FI 模块rtl8821cu调试记录
  • 数学分析复习:实数项级数的收敛
  • python --dejavu音频指纹识别
  • 【面试经典150 | 动态规划】零钱兑换
  • MySQL 8.0 支持对单个数据库设置只读!
  • Oracle:ORA-01830错误-更改数据库时间格式
  • Eureka和Nacos的关系
  • C++之std::mem_fn使用和实现原理(全)
  • OpenAI跨界好莱坞:Sora电影制作工具即将登场,首曝剧情片细节及试用者评价
  • 【Linux】详细分析/dev/loop的基本知识 | 空间满了的解决方法
  • 【前端面试3+1】02插槽、箭头函数与普通函数、重绘重排、【回文数】
  • 计算机网络——数据链路层(差错控制)
  • 微软Microsoft Surface Go 2
  • 将word转为PDF的几种简单方式
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读