1.1 QT随手简记(一)

QT学习篇1

1. QT简介

Qt是一个跨平台的库,它提供了丰富的功能,用于开发GUI应用程序、桌面应用程序、移动应用程序和嵌入式应用程序。Qt由Qt公司维护,是一个开源项目,支持多种操作系统,包括Windows、Linux、Mac OS等。

2. QT安装和配置

2.1 QT安装

QT可以通过包管理工具或源代码编译进行安装。

  1. 包管理工具安装
    sudo apt-get install 
    这个命令在Ubuntu系统上安装了QT5的默认组件。
  2. 源代码编译安装: 从QT官方网站下载源代码,然后进行编译和安装。

2.2 QT配置

安装QT后,需要配置开发环境,包括添加库路径、头文件路径等。

3. QT基础

3.1 信号与槽

信号与槽是Qt的核心概念,它是一种事件驱动机制,用于在对象之间传递消息。

  • 信号:当一个对象的状态发生改变时,会发送一个信号。例如,当一个按钮被点击时,会发送一个信号。
  • :接收信号的函数,当信号到达时,会执行相应的槽函数。例如,当按钮被点击时,会执行与之关联的槽函数。

3.2 事件处理

Qt的事件处理机制允许应用程序响应用户输入,如键盘、鼠标等。

  • 事件队列:事件被添加到事件队列中,应用程序从事件队列中取出事件并处理。
  • 事件过滤器:通过设置事件过滤器,可以拦截特定类型的事件。例如,可以设置一个事件过滤器来处理鼠标事件。

3.3 窗口和布局

Qt提供了窗口和布局类,用于创建和管理应用程序的用户界面。

  • QWidget:基础的窗口类,可以包含其他窗口。
  • QMainWindow:包含菜单栏、工具栏、状态栏等组件的主窗口类。
  • QDialog:用于创建对话框的窗口类。
  • 布局管理器:如QVBoxLayout、QHBoxLayout等,用于管理窗口中的控件布局。

3.4 对话框和控件

Qt提供了多种对话框和控件,用于创建应用程序的用户界面。

对话框
  • QMessageBox:用于显示消息对话框,可以用于显示提示信息、警告信息等。
  • QInputDialog:用于创建输入对话框,可以用于获取用户的输入信息。
  • QFileDialog:用于创建文件对话框,可以用于打开文件、保存文件等。
  • QColorDialog:用于创建颜色选择对话框,可以用于选择颜色。
  • QFontDialog:用于创建字体选择对话框,可以用于选择字体。
    控件
  • QPushButton:用于创建按钮控件,可以用于触发事件。
  • QLabel:用于创建标签控件,可以用于显示文本信息。
  • QComboBox:用于创建组合框控件,可以用于选择多个选项。
  • QCheckBox:用于创建复选框控件,可以用于选择多个选项。
  • QRadioButton:用于创建单选按钮控件,可以用于选择多个选项。
  • QSlider:用于创建滑块控件,可以用于调整数值。
  • QSpinBox:用于创建微调框控件,可以用于调整数值。
  • QDateEdit:用于创建日期编辑控件,可以用于选择日期。
  • QTimeEdit:用于创建时间编辑控件,可以用于选择时间。
  • QDateTimeEdit:用于创建日期和时间编辑控件,可以用于选择日期和时间。
  • QTextEdit:用于创建文本编辑控件,可以用于编辑文本。
  • QListWidget:用于创建列表控件,可以用于显示列表项。
  • QTreeWidget:用于创建树控件,可以用于显示树形结构。
  • QTableWidget:用于创建表格控件,可以用于显示表格数据。
  • QProgressBar:用于创建进度条控件,可以用于显示进度。

4. QT高级功能

4.1 多线程编程

Qt提供了多线程编程的支持,包括线程管理、线程同步等。

  • QThread:用于创建和管理线程。可以创建一个QThread对象,然后在该线程中创建子对象,如QObject、QWidget等。
  • QMutex、QSemaphore等:用于线程同步。QMutex用于线程同步,QSemaphore用于线程间通信。

4.2 网络编程

Qt提供了网络编程的支持,包括TCP/IP通信、HTTP客户端等。

  • QTcpSocket:用于TCP/IP通信。可以创建一个QTcpSocket对象,然后通过该对象进行TCP通信。
  • QHttpRequest:用于HTTP请求。可以创建一个QHttpRequest对象,然后通过该对象进行HTTP通信。

4.3 数据库编程

Qt提供了数据库编程的支持,包括SQL数据库操作、数据库连接等。

  • QSqlDatabase:用于创建和管理数据库连接。可以创建一个QSqlDatabase对象,然后通过该对象进行数据库操作。
  • QSqlQuery:用于执行SQL查询。可以创建一个QSqlQuery对象,然后通过该对象执行SQL查询。

4.4 图形和图像处理

Qt提供了图形和图像处理的支持,包括2D图形绘制、图像处理等。

  • QPainter:用于2D图形绘制。可以创建一个QPainter对象,然后通过该对象进行2D图形绘制。
  • QImage:用于图像处理。可以创建一个QImage对象,然后通过该对象进行图像处理。

4.5 文件操作

Qt提供了文件操作的支持,包括文件读写、文件系统管理等。

  • QFile:用于文件读写。可以创建一个QFile对象,然后通过该对象进行文件读写。
  • QDir:用于文件系统管理。可以创建一个QDir对象,然后通过该对象进行文件系统管理。

5. QT应用

5.1 桌面应用程序

Qt可以用于开发桌面应用程序,这些应用程序可以在Windows、Linux和Mac OS等操作系统上运行。Qt提供了一套丰富的控件和布局管理器,使得开发者可以轻松地创建复杂的用户界面。

示例(不全)
#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget window;
    QLabel label("Hello, World!");
    window.setWindowTitle("Qt Desktop Application");
    window.setGeometry(100, 100, 300, 200);
    window.setCentralWidget(&label);
    window.show();
    return app.exec();
}

5.2 移动应用程序

Qt也可以用于开发移动应用程序,这些应用程序可以在Android和iOS等移动操作系统上运行。Qt提供了Qt Quick模块,用于创建基于QML的移动应用程序。

示例(不全)
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
    visible: true
    width: 640
    height: 480
    Rectangle {
        id: root
        color: "black"
        width: parent.width
        height: parent.height
        Text {
            id: text
            anchors.centerIn: parent
            text: "Hello, World!"
            font.pointSize: 24
            color: "white"
        }
    }
}

5.3 嵌入式应用程序

Qt还可以用于开发嵌入式应用程序,这些应用程序可以在各种嵌入式设备上运行,如工业控制、汽车电子等。Qt提供了Qt Embedded模块,用于创建针对嵌入式设备的应用程序。

示例(不全)
#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget window;
    QLabel label("Hello, World!");
    window.setWindowTitle("Qt Embedded Application");
    window.setGeometry(100, 100, 300, 200);
    window.setCentralWidget(&label);
    window.show();
    return app.exec();
}

5.4 跨平台开发

Qt的跨平台特性使得开发者可以使用相同的代码库在不同的操作系统上编译和运行应用程序。这意味着开发者可以节省开发时间,并且可以轻松地将应用程序移植到不同的平台上。

示例(不全)
#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget window;
    QLabel label("Hello, World!");
    window.setWindowTitle("Qt Cross-Platform Application");
    window.setGeometry(100, 100, 300, 200);
    window.setCentralWidget(&label);
    window.show();
    return app.exec();
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

clickhouse(十五、存储优化实践)

文章目录 背景问题定位优化方式排序键设计写入顺序压缩算法 DoubleDeltaLowCardinality避免使用Nullable 总结 背景 clickhouse集群容量告警&#xff0c;项目中某些表占据大量的存储空间&#xff0c;借此机会对ck的存储优化进行实践学习&#xff0c;并通过多种方式测试验证优化…

元宇宙NFG交易市场:减少出入金的税和消泡沫

在元宇宙的宏伟画卷中&#xff0c;NFG&#xff08;非同质化商品&#xff09;以其独特魅力逐渐崭露头角&#xff0c;成为连接现实世界与数字世界的桥梁。NFG不仅仅是一种商品&#xff0c;更是一种创新的商业模式&#xff0c;为资金的流动与税收优惠带来了新的可能。 首先&#…

QT error: allocation of incomplete type ‘Ui::Server‘

目录 前言 报错内容&#xff1a; 过程解析&#xff1a; 原因分析&#xff1a; daisy.skye的博客 QT合集http://t.csdnimg.cn/wEVbu 前言 最近又开始需要做上位机了&#xff0c;要知道qt上位机对我来说已经3年没有接触了&#xff0c;最开始接触还是毕业时工作中的简单学习和…

【预计IEEE出版】第四届电子信息工程与计算机技术国际学术会议(EIECT 2024)

第四届电子信息工程与计算机技术国际学术会议&#xff08;EIECT 2024&#xff09; 2024 4th International Conference on Electronic Information Engineering and Computer Technology 2024年11月15-17日 | 中国 深圳 #往届均已成功见刊、EI检索;先投稿&#xff0c;先送审…

CSS学习|css三种导入方式、基本选择器、层次选择器、结构伪类选择器、属性选择器、字体样式、文本样式

第一个css程序 css程序都是在style标签中书写 打开该网页&#xff0c;可以看到h1标签中的我是标题被渲染成了红色 可以在同级目录下创建一个css目录&#xff0c;专门存放css文件&#xff0c;可以和html分开编写 然后在html页面中&#xff0c;利用link标签以及css文件地址&…

【AI大模型】基于Langchain和Openai借口实现英文翻译中文应用

&#x1f680; 作者 &#xff1a;“大数据小禅” &#x1f680; 文章简介 &#xff1a;本专栏后续将持续更新大模型相关文章&#xff0c;从开发到微调到应用&#xff0c;需要下载好的模型包可私。 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 目…

C++ primer例子1实现

问题 代码 Sales_item.h #include<iostream> #include<string> class Sales_item {public:Sales_item(){};Sales_item(std::string insid, int num, double price);friend std::istream& operator>>(std::istream& is, Sales_item& item);frie…

LeetCode-43. 字符串相乘【数学 字符串 模拟】

LeetCode-43. 字符串相乘【数学 字符串 模拟】 题目描述&#xff1a;解题思路一&#xff1a;模拟乘法&#xff0c;两个数中每一位数相乘的时候乘上他们各自的进制数&#xff0c;之后求和。循环时&#xff0c;分别记录各自的进制数背诵版&#xff1a;解题思路三&#xff1a;0 题…

课程标准包括哪些内容

在教育的广阔天地中&#xff0c;课程标准如同一座灯塔&#xff0c;照亮了教师们的教学之路。那么&#xff0c;这座灯塔究竟照亮了哪些关键领域呢&#xff1f; 课程标准为我们指明了教学目标。这些目标是教学活动的航标&#xff0c;指引我们如何根据学生的认知水平和学习需求&a…

防火墙是什么?探讨部署Web防火墙的必要性

如今&#xff0c;多云环境、API安全功能扩展、合作伙伴集成即时可用、可用性和可视化增强以及提高自动化程度已经成为基本要求。伴随企业应用架构的迁移&#xff0c;在用户端&#xff0c;需要在部署环境不断扩展但人员技能有限的情况下&#xff0c;保护数量日益增长的应用安全。…

如何在springboot项目中使用Mybatisplus

文章目录 1.mybatisplus的作用2.mybatisplus使用流程2.1pom.xml文件中增加依赖&#xff08;点击右上角蓝色按钮下载依赖&#xff09;2.2navicat新建数据库&#xff0c;增加application.properties数据库配置2.3 启动类添加注解&#xff0c;增加mapper包操作数据库2.5添加实体类…

如何通过PHP语言实现远程控制多路照明

如何通过PHP语言实现远程控制多路照明呢&#xff1f; 本文描述了使用PHP语言调用HTTP接口&#xff0c;实现控制多路照明&#xff0c;通过多路控制器&#xff0c;可独立远程控制多路照明。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 序号设备名称厂…

springboot 图形验证码 前后端分离解决方案 easy-captcha

easy-captcha介绍 easy-captcha&#xff0c;提供了Java图形验证码&#xff0c;支持gif、中文、算术等类型&#xff0c;可用于Java Web、JavaSE等项目&#xff0c;是个很好用的工具库&#xff0c;文档比较完备。 用法 添加maven依赖 <!--图形验证码--><dependency&g…

像图一样交流:为大语言模型编码图

译者 | 高永祺 单位 | 东北大学自然语言处理实验室 原文链接&#xff1a;https://blog.research.google/2024/03/talk-like-graph-encoding-graphs-for.html 1.作者介绍 Bahare Fatemi&#xff0c;谷歌蒙特利尔研究部门的研究科学家&#xff0c;专门从事图表示学习和自然语言…

YOLO-Worldv2两分钟快速部署

本次部署使用的框架基于ultralytics&#xff0c; 并且已经集成最新版本的YOLOv8框架&#xff1a; 一键环境配置 pip install ultralytics基础使用 训练 from ultralytics import YOLOWorld model YOLOWorld(yolov8x-worldv2.pt) results model.train(datacoco8.yaml, epo…

【全开源】知识库文档系统(ThinkPHP+FastAdmin)

&#x1f4da;知识库文档系统&#xff1a;解锁知识的无限可能 一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&a…

高通开发系列 - 借助libhybris库实现Linux系统中使用Andorid库

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 概述Android代码下载和编译aarch64开发环境libhybris下载和编译libhybris测试验证调用库中的函数概述 我主要是基于…

第三方软件测试报告的作用是什么?可全国通用吗?

随着信息技术的发展&#xff0c;市面上的软件产品越来越多&#xff0c;因此软件质量的好坏是软件企业以及用户极为关注的话题。为了更好的保障软件产品质量&#xff0c;将测试工作交给第三方软件测试机构成为了软件企业的首选。第三方软件测试不同于软件开发公司内部测试团队所…

pycharm绘图时中英文不能同时出现 中文出现小框框的问题解决

# 设置字体为微软雅黑&#xff0c;正确显示负号 plt.rcParams[font.sans-serif] [Microsoft YaHei] plt.rcParams[axes.unicode_minus] False