QT学习笔记1
** Qt Creator开发环境配置**
-
安装流程(Windows平台)
下载与安装
:
- 访问Qt官网,下载在线安装工具
Qt Online Installer。 - 登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。
- 勾选组件:
- 核心组件:
Qt 5.15.x(建议选择MSVC或MinGW套件)。 - 工具链:
Qt Creator、Qt Designer、Qt Assistant。 - 附加工具:
CMake、Ninja(可选)。
- 核心组件:
- 环境验证:
打开Qt Creator,进入工具→选项→Kits,确认自动检测到编译器(如Desktop Qt 5.15.2 MSVC2019 64bit)。
- 访问Qt官网,下载在线安装工具
-
界面组成与核心功能
-
六大模式:
模式 功能说明 欢迎模式 快速访问示例项目、教程、市场插件。 编辑模式 代码编写与调试,支持语法高亮、代码补全(快捷键 Ctrl+Space)。设计模式 集成Qt Designer,可视化拖拽UI控件( .ui文件操作)。调试模式 断点调试、变量监控(快捷键 F5启动)。项目模式 管理构建配置(Debug/Release)、外部依赖。 帮助模式 集成Qt助手,搜索API文档(如输入 QWidget查看类说明)。 -
内置工具链:
- Qt Designer:设计UI界面,生成
.ui文件(XML格式),支持信号槽预连接。 - Qt Linguist:多语言翻译工具,管理
.ts翻译文件。 - Qt Assistant:离线文档库,支持关键词搜索与书签功能。
- Qt Designer:设计UI界面,生成
-
Hello World全流程开发
-
新建Qt Widgets项目
-
操作步骤:
- 点击
文件→新建项目→Qt Widgets Application。 - 设置项目名称(如
Demo1)和路径,选择基类(QMainWindow或QWidget)。 - 确认构建套件(如
Desktop Qt 5.15.2 MSVC2019 64bit)。
- 点击
-
项目文件解析:
-
.pro文件:
qmake
QT += core gui # 依赖的核心模块 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets # Qt5+需添加widgets模块 TARGET = Demo1 # 生成的可执行文件名 TEMPLATE = app # 项目类型(应用程序) SOURCES += main.cpp # 源文件列表 HEADERS += mainwindow.h # 头文件列表 FORMS += mainwindow.ui # UI文件列表
-
-
-
界面设计与信号槽连接
-
Qt Designer操作:
- 双击
mainwindow.ui进入设计模式,拖拽控件(如按钮、标签)。 - 设置对象名(如
pushButton)和属性(如文本、大小)。 - 右键按钮→
转到槽,选择clicked()信号生成槽函数框架。
- 双击
-
代码对比:
IDE自动生成
:
cpp
// mainwindow.cpp(自动生成) void MainWindow::on_pushButton_clicked() {ui->label->setText("Hello Qt!"); }手动编码
:
cpp
// 手动创建按钮并绑定信号槽 QPushButton *btn = new QPushButton("点击", this); connect(btn, &QPushButton::clicked, [=](){qDebug() << "按钮被点击"; });
-
-
编译与发布
-
调试运行:点击
构建→运行(快捷键Ctrl+R)。
发布打包
:
-
Windows:使用
windeployqt工具自动打包依赖的DLL:
bash
windeployqt Demo1.exe --release --no-translations -
Linux:需配置
LD_LIBRARY_PATH或静态编译。
-
** 窗口部件与GUI组件**
-
QWidget核心功能
-
窗口类型与属性:
cpp
QWidget *window = new QWidget; window->setWindowTitle("主窗口"); // 标题 window->resize(400, 300); // 初始尺寸 window->setWindowFlags(Qt::Dialog); // 设置为对话框样式 window->show(); // 显示窗口 -
模态与非模态对话框:
cpp
// 模态对话框(阻塞父窗口) QDialog dialog(this); dialog.exec();// 非模态对话框(独立运行) QDialog *dialog = new QDialog(this); dialog->show();
-
-
常用组件分类
框架类(QFrame)
:
cpp
QFrame *frame = new QFrame(this); frame->setFrameStyle(QFrame::Box | QFrame::Raised); // 边框样式 frame->setLineWidth(2); // 边框宽度输入类组件
:
QLineEdit输入验证:cpp```cpp QLineEdit *edit = new QLineEdit(this); QRegExpValidator *validator = new QRegExpValidator(QRegExp("[0-9]{3}"), this); edit->setValidator(validator); // 限制输入3位数字 ```QSpinBox数值调节:cpp```cpp QSpinBox *spinBox = new QSpinBox(this); spinBox->setRange(0, 100); // 数值范围 spinBox->setSingleStep(5); // 步长 spinBox->setPrefix("¥"); // 前缀 ``` -
调试输出
cpp
qDebug() << "当前数值:" << spinBox->value(); // 输出到控制台
布局管理
-
布局管理器类型
-
水平布局(QHBoxLayout):
cpp
QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(btn1); layout->addWidget(btn2); layout->setSpacing(10); // 控件间距 layout->setContentsMargins(20, 20, 20, 20); // 边距 window->setLayout(layout); -
网格布局(QGridLayout):
cpp
QGridLayout *grid = new QGridLayout; grid->addWidget(label1, 0, 0); // 第0行第0列 grid->addWidget(edit1, 0, 1); // 第0行第1列 grid->addWidget(btn1, 1, 0, 1, 2); // 跨2列
-
-
部件大小策略
常用策略
:
cpp
btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); // 水平扩展,垂直固定拉伸因子
:
cpp
layout->setStretch(0, 1); // 第0个控件拉伸比例为1 layout->setStretch(1, 2); // 第1个控件拉伸比例为2 -
高级布局技巧
-
可扩展窗口:
使用QScrollArea包裹布局,当内容超出窗口时自动显示滚动条:cpp
QScrollArea *scrollArea = new QScrollArea; scrollArea->setWidgetResizable(true); scrollArea->setWidget(mainWidget); // 将主控件放入滚动区域 -
分裂器(QSplitter):
cpp
QSplitter *splitter = new QSplitter(Qt::Horizontal); splitter->addWidget(leftWidget); splitter->addWidget(rightWidget); splitter->setSizes({200, 400}); // 初始宽度比例 -
Tab键顺序设置:
在设计模式下点击编辑→编辑Tab键顺序,按逻辑顺序点击控件完成设置。
-
总结与练习建议
- 核心知识点:
- Qt Creator环境配置与项目创建流程。
- 信号槽机制与手动/自动编码对比。
- 布局管理器实现自适应界面。
- 推荐练习:
- 开发一个包含登录窗口和主窗口的应用,使用网格布局和信号槽传递数据。
- 实现一个可动态调整大小的图片浏览器,结合
QSplitter和QScrollArea。
- 注意事项:
- 避免直接修改
ui_xxx.h文件,所有UI逻辑应在代码中动态调整。 - 多平台开发时需测试不同编译套件(如MSVC/MinGW)的兼容性。
- 避免直接修改
相关文章:
QT学习笔记1
** Qt Creator开发环境配置** 安装流程(Windows平台) 下载与安装 : 访问Qt官网,下载在线安装工具Qt Online Installer。登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。勾选组件ÿ…...
Ubuntu 24 常用命令方法
文章目录 环境说明1、账号管理1.1、启用 root 2、包管理工具 apt & dpkg2.1、apt 简介 & 阿里源配置2.2、dpkg 简介2.3、apt 和 dpkg 两者之间的关系2.4、常用命令 3、启用 ssh 服务4、防火墙5、开启远程登录6、关闭交换分区7、build-essential(编译和开发软…...
Flask多参数模版使用
需要建立目录templates; 把建好的html文件放到templates目录里面; 约定好参数名字,单个名字可以直接使用;多参数使用字典传递; 样例: from flask import render_template # 模板 (Templates) #Flask 使用…...
torcharrow gflags版本问题
问题描述 其实仍然是很简单的编译问题,但是又弄了一整个下午加几乎整个晚上,进度缓慢,又吸取了教训,因而还是来记录一下。 在试图使用torcharrow进行推荐系统模拟的时候,撰写的python程序报错:ERROR: flag…...
自然语言处理|深入解析 PEGASUS:从原理到实践
一、引言 在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…...
Spring AI Alibaba快速使用
AI 时代,Java 程序员也需要与时俱进,这两个框架必须掌握。 一个是 Spring AI一个是 Spring Alibaba AI。 Spring AI 是一个AI工程领域的应用程序框架,它的目标是将 Spring生态系统的设计原则应用于人工智能领域。 但是, Spring…...
socks 协议介绍
SOCKS协议详解 一、基本定义与核心功能 SOCKS(Socket Secure)是一种网络传输协议,主要用于通过代理服务器转发客户端与目标服务器之间的通信请求。其核心功能包括隐藏用户真实IP地址、穿透防火墙限制以及支持多种网络协议(如TCP…...
Linux --centos安装显卡驱动
显卡下载页面 https://www.nvidia.com/en-us/drivers/unix/ 随便下载一个即可 安装过程 查看当前设备的显卡信息 lspci | grep -i vga安装gcc相关依赖 yum update -y yum update gcc yum install build-essential yum install gcc-multilibdkms yum groupinstall "Dev…...
【软件工程】简答题
真题 2024-10 26.需求验证应验证需求规格说明书中每一单一需求是否满足5个性质,这5个性质是什么? 27.简述RUP和UML的关系。 28.简述五种常见的模块间耦合类型。 29.螺旋模型在笛卡尔坐标的4个象限上,分别表达了哪4个方面的活动? 30.为了表达概念模型和软件模型,UML提供了13…...
统信UOS中使用Vscode编程
写在前面:统信UOS其实就是套壳的Linux系统,所以有问题如果搜不到解决方法,可以参考Linux下的解决方法。 1.环境配置 Vscode : 1.85.0 Vscode就直接下载安装就行,然后安装插件:Volar、中文汉化包 node:18…...
K8s认证(CKA/CKAD/CKS)哪家强?主流证书对比
2024年Kubernetes认证全解析:选对证书,薪资翻倍! (附CKA/CKAD/CKS最新考试攻略) 一、K8s认证哪家强?主流证书对比 认证名称颁发机构考试特点适合人群考试费用CKA(认证K8s管理员)CN…...
HTTP1.0、HTTP1.1、HTTP2.0对比
HTTP 1.0、HTTP 1.1 和 HTTP 2.0 是 HTTP 协议演进中的三个重要版本,每个版本都针对前一代的不足进行了优化和改进。以下是它们的核心区别和关键特性对比: 1. HTTP 1.0(1996年) 非持久连接 每个请求/响应对都需要单独建立和关闭 T…...
docker安装向量数据库Milvus及可视化工具 Attu
前置条件 1.安装了docker 2.服务器网络正常,可以连接到容器下载地址 3.服务器磁盘空间正常,docker磁盘占用过大,请参考docker容量占用过大解决办法 一、下载yml文件 可在文章资源下载或者自行下载:下载yml 下载这个单机版本的…...
A l密码学(Deepseek)
我:qwertyuiopasdfghjklzxcvbnm deepseek:深度思考中. Okay, lets see. The user input is "qwertyuiopasdfghjklzxcvbnm". At first glance, it looks like a jumbled sequence of letters with some spaces or maybe other characters in …...
DeepSeek + Kimi 自动生成 PPT
可以先用deepseek生成ppt大纲,再把这个大纲复制到Kimi的ppt助手里: https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板: 点击生成ppt就制作好了。...
Apache Paimon 在抖音集团多场景中的优化实践
资料来源:火山引擎-开发者社区 本文将基于抖音集团内部两大业务的典型实时数仓场景,介绍Paimon在抖音集团内部的生产实践。 作者:李明、苏兴、文杰 抖音集团大数据工程师 目前抖音集团内部主要使用 Lambda 架构进行实时数仓建设,其…...
Uni-App 双栏联动滚动组件开发详解 (电梯导航)
本文基于提供的代码实现一个左右联动的滚动组件,以下是详细的代码解析与实现原理说明: <!--双栏联动滚动组件 - 技术解析功能特性:1. 左侧导航栏与右侧内容区双向联动2. 自适应容器高度3. 平滑滚动定位4. 动态内容位置计算 --> <te…...
当下主流 AI 模型对比:ChatGPT、DeepSeek、Grok 及其他前沿技术
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 人工智能(AI)领域近年来取得了巨大的突破,特别是在大语言模型(LLM&#…...
【自用】NLP算法面经(5)
一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时,它已经很好地学习了训练数据,甚至是训练数据中的噪声,所以可能无法在新的、未见过的数据上表现良好。 比如: 其中,x1和…...
体育直播视频源格式解析:M3U8 vs FLV
在体育直播领域,视频源的格式选择直接影响着直播的流畅度、画质以及兼容性。目前,M3U8 和 FLV 是两种最为常见的视频流格式,它们各有优劣,适用于不同的场景。本文将从技术原理、优缺点以及应用场景等方面对 M3U8 和 FLV 进行详细解…...
Ubuntu20.04安装并配置Pycharm2020.2.5
一. 下载pycharm 社区版 1. 下载地址: PyCharm: the Python IDE for data science and web developmentThe Python IDE for data science and web development with intelligent code completion, on-the-fly error checking, quick-fixes, and much more.https:/…...
Filter Solutions学习-02 【高级设计】界面介绍
这是高级界面的各种控件的功能。 其中说一下filter type。这不是根据自己想当然决定的,而是根据实际的需要,比如带外衰减的程度,带内波动(平坦)如何,还有群时延等等决定的。比如不要求矩形系数选什么。。 …...
用Python实现交互式数据可视化:从基础图表到动态仪表板
用Python实现交互式数据可视化:从基础图表到动态仪表板 一、项目背景 本文将通过一个完整的Python项目,展示如何使用Plotly和ipywidgets构建从基础统计到动态交互的全栈数据可视化方案。 二、核心功能模块 1. 数据生成与预处理 np.random.seed(100)…...
Java面试黄金宝典5
1. ConcurrentHashMap 和 HashTable 有哪些区别 原理 HashTable:它继承自 Dictionary 类,是 Java 早期提供的线程安全哈希表。其线程安全的实现方式是对每个方法都使用 synchronized 关键字进行同步。例如,在调用 put、get 等方法时ÿ…...
【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵
一、对角矩阵 对角矩阵(Diagonal Matrix)是一种特殊的方阵,其非对角线上的元素均为零,只有对角线上的元素可能非零。具体来说,对于一个 nn的矩阵 A[],如果满足 则 AA 称为对角矩阵。对角矩阵通常表示为&am…...
初识R语言饼状图
目录 基础饼图 标签个性化 边界修改 密度条纹 边框颜色 基础饼图 rm(list ls())# Create Data Prop <- c(3,7,9,1,2) # Make the default Pie Plot P1 <- pie(Prop) dev.off() 标签个性化 P2 <-pie(Prop , labels c("Gr-A","Gr-B","…...
计算机技术系列博客——目录页(持续更新)
1.1 博客目录专栏 1.1.1 博客文章导航 计算机技术系列博客——目录页 1.1.2 网页资源整理 2.1 计算机科学理论 2.2 软件工程技术 2.2.1.1 编程语言 Java Java语言基础 (1) Java基础知识总结01——Java基础篇 (2) Java基础知识总结02——集合框架篇 (3) Java基础知识总结03—…...
HTTP和RPC的区别
RPC和 HTTP是两种常见的通信方式,它们在设计目标、使用场景和技术实现上有显著区别。以下是它们的详细对比: 1. 定义与核心思想 特性RPCHTTPRemote Procedure Call远程过程调用HyperText Transfer Protocol超文本传输协议定义一种协议或框架࿰…...
Spring MVC 拦截器使用
javaweb过滤器和springmvc拦截器: 拦截器的概念 拦截器使用 1/创建拦截器类,类中实现 handler执行前,执行后与渲染视图后的具体实现方法 public class GlobalExceptionHandler implements HandlerInterceptor {// if( ! preHandler()){re…...
汽车机械钥匙升级一键启动的优点
汽车机械钥匙升级一键启动的优点主要包括: 便捷性:一键启动功能的引入极大地提升了用车便捷性。车主无需翻找钥匙,只需在车辆感应范围内轻触启动键,即可轻松发动汽车。 安全性:移动管家专车专用一键启动系统配备了防…...
