QT学习笔记1

news2025/3/28 6:13:27

** Qt Creator开发环境配置**
  1. 安装流程(Windows平台)

    下载与安装

    1. 访问Qt官网,下载在线安装工具Qt Online Installer
    2. 登录或注册Qt账号,选择开源版本(需勾选“接受协议”)。
    3. 勾选组件:
      • 核心组件Qt 5.15.x(建议选择MSVC或MinGW套件)。
      • 工具链Qt CreatorQt DesignerQt Assistant
      • 附加工具CMakeNinja(可选)。
    • 环境验证
      打开Qt Creator,进入工具→选项→Kits,确认自动检测到编译器(如Desktop Qt 5.15.2 MSVC2019 64bit)。
  2. 界面组成与核心功能

    • 六大模式

      模式功能说明
      欢迎模式快速访问示例项目、教程、市场插件。
      编辑模式代码编写与调试,支持语法高亮、代码补全(快捷键Ctrl+Space)。
      设计模式集成Qt Designer,可视化拖拽UI控件(.ui文件操作)。
      调试模式断点调试、变量监控(快捷键F5启动)。
      项目模式管理构建配置(Debug/Release)、外部依赖。
      帮助模式集成Qt助手,搜索API文档(如输入QWidget查看类说明)。
    • 内置工具链

      • Qt Designer:设计UI界面,生成.ui文件(XML格式),支持信号槽预连接。
      • Qt Linguist:多语言翻译工具,管理.ts翻译文件。
      • Qt Assistant:离线文档库,支持关键词搜索与书签功能。

Hello World全流程开发
  1. 新建Qt Widgets项目

    • 操作步骤

      1. 点击文件→新建项目→Qt Widgets Application
      2. 设置项目名称(如Demo1)和路径,选择基类(QMainWindowQWidget)。
      3. 确认构建套件(如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文件列表
        
  2. 界面设计与信号槽连接

    • Qt Designer操作

      1. 双击mainwindow.ui进入设计模式,拖拽控件(如按钮、标签)。
      2. 设置对象名(如pushButton)和属性(如文本、大小)。
      3. 右键按钮→转到槽,选择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() << "按钮被点击";
      });
      
  3. 编译与发布

    • 调试运行:点击构建→运行(快捷键Ctrl+R)。

    发布打包

    • Windows:使用

      windeployqt
      

      工具自动打包依赖的DLL:

      bash

      windeployqt Demo1.exe --release --no-translations
      
    • Linux:需配置LD_LIBRARY_PATH或静态编译。


** 窗口部件与GUI组件**
  1. 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();
      
  2. 常用组件分类

    框架类(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("¥");       // 前缀
    ```
    
  3. 调试输出

    cpp

    qDebug() << "当前数值:" << spinBox->value();  // 输出到控制台
    

布局管理
  1. 布局管理器类型

    • 水平布局(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列
      
  2. 部件大小策略

    常用策略

    cpp

    btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); // 水平扩展,垂直固定
    

    拉伸因子

    cpp

    layout->setStretch(0, 1); // 第0个控件拉伸比例为1
    layout->setStretch(1, 2); // 第1个控件拉伸比例为2
    
  3. 高级布局技巧

    • 可扩展窗口
      使用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键顺序,按逻辑顺序点击控件完成设置。


总结与练习建议

  1. 核心知识点
    • Qt Creator环境配置与项目创建流程。
    • 信号槽机制与手动/自动编码对比。
    • 布局管理器实现自适应界面。
  2. 推荐练习
    • 开发一个包含登录窗口和主窗口的应用,使用网格布局和信号槽传递数据。
    • 实现一个可动态调整大小的图片浏览器,结合QSplitterQScrollArea
  3. 注意事项
    • 避免直接修改ui_xxx.h文件,所有UI逻辑应在代码中动态调整。
    • 多平台开发时需测试不同编译套件(如MSVC/MinGW)的兼容性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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&#xff08;编译和开发软…

Flask多参数模版使用

需要建立目录templates&#xff1b; 把建好的html文件放到templates目录里面&#xff1b; 约定好参数名字&#xff0c;单个名字可以直接使用&#xff1b;多参数使用字典传递&#xff1b; 样例&#xff1a; from flask import render_template # 模板 (Templates) #Flask 使用…

自然语言处理|深入解析 PEGASUS:从原理到实践

一、引言 在信息爆炸的时代&#xff0c;互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态&#xff0c;还是各类报告文档&#xff0c;我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…

Spring AI Alibaba快速使用

AI 时代&#xff0c;Java 程序员也需要与时俱进&#xff0c;这两个框架必须掌握。 一个是 Spring AI一个是 Spring Alibaba AI。 Spring AI 是一个AI工程领域的应用程序框架&#xff0c;它的目标是将 Spring生态系统的设计原则应用于人工智能领域。 但是&#xff0c; Spring…

socks 协议介绍

SOCKS协议详解 一、基本定义与核心功能 SOCKS&#xff08;Socket Secure&#xff09;是一种网络传输协议&#xff0c;主要用于通过代理服务器转发客户端与目标服务器之间的通信请求。其核心功能包括隐藏用户真实IP地址、穿透防火墙限制以及支持多种网络协议&#xff08;如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…

统信UOS中使用Vscode编程

写在前面&#xff1a;统信UOS其实就是套壳的Linux系统&#xff0c;所以有问题如果搜不到解决方法&#xff0c;可以参考Linux下的解决方法。 1.环境配置 Vscode : 1.85.0 Vscode就直接下载安装就行&#xff0c;然后安装插件&#xff1a;Volar、中文汉化包 node&#xff1a;18…

docker安装向量数据库Milvus及可视化工具 Attu

前置条件 1.安装了docker 2.服务器网络正常&#xff0c;可以连接到容器下载地址 3.服务器磁盘空间正常&#xff0c;docker磁盘占用过大&#xff0c;请参考docker容量占用过大解决办法 一、下载yml文件 可在文章资源下载或者自行下载&#xff1a;下载yml 下载这个单机版本的…

DeepSeek + Kimi 自动生成 PPT

可以先用deepseek生成ppt大纲&#xff0c;再把这个大纲复制到Kimi的ppt助手里&#xff1a; https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 选择ppt模板&#xff1a; 点击生成ppt就制作好了。

Apache Paimon 在抖音集团多场景中的优化实践

资料来源&#xff1a;火山引擎-开发者社区 本文将基于抖音集团内部两大业务的典型实时数仓场景&#xff0c;介绍Paimon在抖音集团内部的生产实践。 作者&#xff1a;李明、苏兴、文杰 抖音集团大数据工程师 目前抖音集团内部主要使用 Lambda 架构进行实时数仓建设&#xff0c;其…

当下主流 AI 模型对比:ChatGPT、DeepSeek、Grok 及其他前沿技术

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 人工智能&#xff08;AI&#xff09;领域近年来取得了巨大的突破&#xff0c;特别是在大语言模型&#xff08;LLM&#…

【自用】NLP算法面经(5)

一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时&#xff0c;它已经很好地学习了训练数据&#xff0c;甚至是训练数据中的噪声&#xff0c;所以可能无法在新的、未见过的数据上表现良好。 比如&#xff1a; 其中&#xff0c;x1和…

体育直播视频源格式解析:M3U8 vs FLV

在体育直播领域&#xff0c;视频源的格式选择直接影响着直播的流畅度、画质以及兼容性。目前&#xff0c;M3U8 和 FLV 是两种最为常见的视频流格式&#xff0c;它们各有优劣&#xff0c;适用于不同的场景。本文将从技术原理、优缺点以及应用场景等方面对 M3U8 和 FLV 进行详细解…

Ubuntu20.04安装并配置Pycharm2020.2.5

一. 下载pycharm 社区版 1. 下载地址&#xff1a; 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。这不是根据自己想当然决定的&#xff0c;而是根据实际的需要&#xff0c;比如带外衰减的程度&#xff0c;带内波动&#xff08;平坦&#xff09;如何&#xff0c;还有群时延等等决定的。比如不要求矩形系数选什么。。 …

用Python实现交互式数据可视化:从基础图表到动态仪表板

用Python实现交互式数据可视化&#xff1a;从基础图表到动态仪表板 一、项目背景 本文将通过一个完整的Python项目&#xff0c;展示如何使用Plotly和ipywidgets构建从基础统计到动态交互的全栈数据可视化方案。 二、核心功能模块 1. 数据生成与预处理 np.random.seed(100)…

【深度学习与大模型基础】第6章-对角矩阵,对称矩阵,正交矩阵

一、对角矩阵 对角矩阵&#xff08;Diagonal Matrix&#xff09;是一种特殊的方阵&#xff0c;其非对角线上的元素均为零&#xff0c;只有对角线上的元素可能非零。具体来说&#xff0c;对于一个 nn的矩阵 A[]&#xff0c;如果满足 则 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","…

Spring MVC 拦截器使用

javaweb过滤器和springmvc拦截器&#xff1a; 拦截器的概念 拦截器使用 1/创建拦截器类&#xff0c;类中实现 handler执行前&#xff0c;执行后与渲染视图后的具体实现方法 public class GlobalExceptionHandler implements HandlerInterceptor {// if( ! preHandler()){re…

汽车机械钥匙升级一键启动的优点

汽车机械钥匙升级一键启动的优点主要包括&#xff1a; 便捷性&#xff1a;一键启动功能的引入极大地提升了用车便捷性。车主无需翻找钥匙&#xff0c;只需在车辆感应范围内轻触启动键&#xff0c;即可轻松发动汽车。 安全性&#xff1a;移动管家专车专用一键启动系统配备了防…