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

QT学习和代码练习

  • #include "mywidget.h"  // 包含自定义窗口类MyWidget的头文件// MyWidget类的构造函数,parent为父窗口指针
    MyWidget::MyWidget(QWidget *parent): QWidget(parent)  // 初始化父类QWidget
    {this->setWindowTitle("QQ");  // 设置窗口标题为"QQ"// 设置窗口图标,图标路径为"D:\\Game\\icon\\qq.svg"this->setWindowIcon(QIcon("D:\\Game\\icon\\qq.svg"));this->setStyleSheet("background:white;");  // 设置窗口背景色为白色this->setFixedSize(QSize(1000,618));  // 设置窗口固定大小为1000x618像素// 获取屏幕的几何信息(尺寸和位置)QRect screen = QGuiApplication::primaryScreen()->geometry();// 将窗口移动到屏幕中央(计算方式:(屏幕宽度-窗口宽度)/2 为水平居中位置,垂直方向同理)this->move((screen.width()-this->width())/2, (screen.height()-this->height())/2);// 创建QMovie对象,加载GIF动画文件(路径为"D:\\Game\\GIf\\20251015195257.gif")QMovie *mv = new QMovie("D:\\Game\\GIf\\20251015195257.gif");// 创建标签lab1,作为GIF的显示容器,父窗口为当前窗口QLabel *lab1 = new QLabel("图片",this);lab1->setMovie(mv);  // 为标签设置要显示的GIF动画mv->start();  // 开始播放GIF动画lab1->setScaledContents(true);  // 设置标签内容(GIF)可缩放以适应标签大小lab1->resize(this->width(), this->height()/2);  // 设置标签大小:宽度与窗口相同,高度为窗口的一半// 创建账号输入框edit1,父窗口为当前窗口QLineEdit *edit1 = new QLineEdit(this);edit1->setFixedSize(this->width()*0.3,this->height()*0.05);  // 设置输入框大小:宽度为窗口30%,高度为窗口5%// 设置输入框位置:水平居中,垂直位置在窗口高度的55%处edit1->move((this->width()-edit1->width())/2,this->height()*0.55);edit1->setPlaceholderText("QQ/账号");  // 设置输入框占位提示文本为"QQ/账号"// 创建密码输入框edit2,父窗口为当前窗口QLineEdit *edit2 = new QLineEdit(this);edit2->setFixedSize(this->width()*0.3,this->height()*0.05);  // 大小与账号输入框一致// 设置位置:水平居中,垂直位置在窗口高度的60%处(在账号框下方)edit2->move((this->width()-edit1->width())/2,this->height()*0.6);edit2->setEchoMode(QLineEdit::Password);  // 设置为密码模式(输入内容显示为圆点/星号)edit2->setPlaceholderText("密码");  // 设置占位提示文本为"密码"// 创建登录按钮btn1,显示图标(路径"D:\\Game\\icon\\qq登录.svg")和文本"登录",父窗口为当前窗口QPushButton *btn1 = new QPushButton(QIcon("D:\\Game\\icon\\qq登录.svg"),"登录",this);btn1->setFixedSize(this->width()*0.3,this->height()*0.25);  // 设置按钮大小:宽度30%窗口宽,高度25%窗口高// 设置按钮位置:水平居中,垂直位置在窗口高度的70%处(在密码框下方)btn1->move((this->width()-btn1->width())/2,this->height()*0.7);btn1->setStyleSheet("background:blue;");  // 设置按钮背景色为蓝色}// MyWidget类的析构函数(目前为空实现)
    MyWidget::~MyWidget()
    {
    }

  • QT学习Day1总结

    • 一、工具

      • 1.1 软件安装

        • 下载网址:https://download.qt.io/archive/online_installers/4.2/

        • 各系统安装包:Windows(.exe)、Linux(.run)、MAC(.dmg)

        • 1.2 安装步骤(9步)

          • 点击next

          • 选择安装目录(示例:D:\QT2\Qt5.14.2)

          • 进入安装环境设置选项

          • Qt5.14.2下勾选MinGW 7.3.0 64-bit

          • Qt5.14.2下3D相关组件全选

          • Developer and Designer Tools下勾选MinGW 7.3.0 64-bit

          • 接受许可协议后next

          • 选择开始菜单快捷方式目录

          • 确认安装(占用2.09GB)

      • 1.3 Qt定义:跨平台C++图形用户界面应用程序框架,提供GUI所需功能,面向对象、易扩展、支持组件编程

      • 1.4 Qt优点

        • 跨平台,支持几乎所有平台

        • 接口简单易上手,对学习其他框架有参考意义

        • 简化内存回收机制

        • 开发效率高,快速构建应用

        • 社区氛围好,市场份额上升

        • 支持嵌入式开发

      • 1.5 Qt介绍

        • 用途:图形化界面开发,含界面、进程线程、网络、数据库、文件操作等类库

        • 学习重点:类库功能与使用(实例化对象→用类库方法→实现后台逻辑)

        • 核心特性:跨平台GUI开发工具

        • 使用场景:汽车仪表盘、打印机、医疗器械、大型自动化设备

      • 1.6 Qt工具介绍

        • Assistant:Qt类库帮助手册工具

        • Designer:图形化界面设计工具(生成.ui文件,标记性语言)

        • uic.exe:.ui文件转标准C++代码(ui_***.h),示例命令:C:\Qt\5.15.2\mingw81_64\bin\uic.exe designer.ui -o ui_designer.h

        • moc.exe:元对象编辑器,将Qt非标准信号槽转标准C++代码

        • rcc.exe:资源管理器,将图片/音频/视频等资源转标准C++代码

        • qmake:工程管理工具,通过.pro文件生成Makefile编译代码

        • Qt Creator:集成开发环境(IDE),集成所有上述工具

    • 二、创建项目工程

      • 步骤流程

        • 打开Qt Creator,新建项目选“Qt Widgets Application”模板

        • 项目位置设置:名称无中文/特殊字符(示例:test1),路径无中文

        • 选择构建系统:qmake

        • 类信息设置:类名(示例:MyWidget)、基类(QWidget)、生成头文件(.h)、源文件(.cpp)、表单文件(.ui)

        • 翻译文件:默认

        • Kit选择:勾选对应版本(示例:Desktop Qt 5.14.2 MinGW 64-bit)

        • 完成创建

    • 三、各文件介绍

        • 项目工程文件(.pro)

          • 核心配置:QT += core gui(依赖模块);大于Qt4时加QT += widgets

          • 示例代码:QT += core gui;greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

        • 头文件(.h,示例:mywidget.h)

          • 防重复包含:#ifndef MYWIDGET_H→#define MYWIDGET_H→#endif

          • 包含头文件:#include

          • 类定义:class MyWidget : public QWidget(公有继承QWidget)

          • 关键宏:Q_OBJECT(用于信号和槽)

          • 成员:构造函数(MyWidget(QWidget *parent = nullptr))、析构函数(~MyWidget())

        • 源文件(.cpp,示例:mywidget.cpp)

          • 包含头文件:#include "mywidget.h"

          • 构造函数实现:调用父类初始化列表(MyWidget::MyWidget(QWidget *parent) : QWidget(parent))

          • 析构函数实现:空实现(默认内存回收)

        • main文件(main.cpp)

          • 包含头文件:#include "mywidget.h"(自定义窗口)、#include

          • 程序入口:int main(int argc, char *argv[])

          • 核心操作:实例化QApplication对象(唯一)→实例化MyWidget窗口对象→窗口show()→a.exec()(消息循环阻塞)

    • 四、QDebug(输出类)

      • 三种使用方式

        • 类似printf:qDebug("%s","hello world");

        • 类似cout(默认换行,常用):qDebug() << "hello meimei";

        • 结合QString::arg():QString name="张三"; QString s=QString("%1,%2,%3").arg(name).arg(100).arg(200); qDebug() << s;

      • 输出示例:hello world、hello meimei、"张三,100,200"

    • 五、界面相关设置

      • 5.1 求界面大小

        • 方法:this->size()(整体大小)、this->width()(宽)、this->height()(高)、this->size().width()/height()

        • 示例:qDebug() << this->size() << this->width() << this->height();

      • 5.2 窗口设置(需包含对应头文件,如

    • 六、常用类及组件

        • QPushButton(按钮类)

          • 创建方式:new QPushButton()→设父对象;new QPushButton("文本",this);new QPushButton(QIcon("路径"),"文本",this)

          • 常用方法:setParent(this)(依赖窗口)、setText("文本")、setStyleSheet("背景色")、move(100,100)(位置)、resize(150,200)(大小)、setIcon(QIcon("路径"))、setEnabled(false)(禁用)

          • 示例:QPushButton *btn1=new QPushButton; btn1->setParent(this); btn1->setText("第一个按钮");

        • QLineEdit(行编辑器类)

          • 常见功能:密码回显、默认文本、占位提示

          • 示例1(密码):QLineEdit *edit1=new QLineEdit(this); edit1->setEchoMode(QLineEdit::Password);

          • 示例2(默认文本):QLineEdit *edit2=new QLineEdit("张三",this); edit2->move(200,200);

          • 示例3(占位提示):QLineEdit *edit3=new QLineEdit(this); edit3->setPlaceholderText("QQ号码/手机/邮箱");

        • QLabel(标签类,显示文本/图片)

          • 显示文本:QLabel *lab1=new QLabel(this); lab1->setText("我是一个标签"); lab1->resize(100,100);

          • 显示图片:QLabel *lab2=new QLabel(this); lab2->setPixmap(QPixmap("图片路径")); lab2->setScaledContents(true);(自动适应)

      • 补充:QMovie(动图类)

        • 用法:QMovie *mv=new QMovie("动图路径"); lab->setMovie(mv); mv->start();(动图播放)

        • 示例:QLabel *lab=new QLabel(this); QMovie *mv=new QMovie("zz.gif"); lab->setMovie(mv); mv->start();

    • 七、帮助手册使用

      • 查看内容

        • 类基本信息:类名(如QPushButton)、描述、头文件(#include

        • 成员:属性(Properties)、公共成员函数(Public Functions)、重写函数、公共槽函数(Public Slots)、受保护函数

        • 详细描述(Detailed Description):类功能与使用说明

    • 八、坐标轴

      • 核心逻辑:组件需指定父组件才能依赖窗口显示,组件位置(move(x,y))基于父组件坐标系

    • 九、对象树

      • 核心机制:Qt核心特性之一(与信号槽、事件机制并列)

      • 规则:组件指定父组件后,父组件将子组件加入对象树;父组件释放前,确保子组件先释放,无需手动管理子组件内存

      • 作用:简化内存回收机制

      • 关键区别:对象间的父子关系 ≠ 类继承的父子关系

http://www.dtcms.com/a/486561.html

相关文章:

  • 把 Python 应用打包成 Windows 可执行程序 — 完整指南
  • 阿里云代理商:什么是阿里云CDN配额?
  • 做推广任务的网站制作图片的软件加字体
  • 做公司网站优劣势成都建设网站那个好
  • vLLM 推理 AWQ 量化后的模型
  • **发散创新:游戏物理引擎的深入探究**一、引言随着游戏产业的飞速发展,游戏物理引擎作为游戏开发中不可或缺的一部分,
  • 上海网站制作网站wordpress 显示文章作者
  • QT 中的元对象系统(七):Q_GADGET 机制
  • 德阳做网站公司实体店线上线下运营模式
  • Agentlightning环境准备
  • 创建网站哪个好卫生计生加强门户网站建设
  • 申请建设活动中心网站管理咨询公司有哪些方面
  • Windows Server 2019 IP黑名单设置,保护云服务器安全
  • K8s存储-PV与PVC
  • k8s中PV 与 PVC
  • 免费网站推广网站破解版网站建设具体工作
  • 目标检测项目核心笔记:从任务定义到算法流程
  • 网站建设的基本步骤是中国设备网
  • 建设网站的优点跟缺点要看网现在的地址是多少
  • 前端学习总结——AI主流前沿方向篇
  • 制作网页的网站哪个好用产品市场营销策划方案
  • [Linux]学习笔记系列 -- lib/zlib DEFLATE压缩与解压缩
  • 为电力设备装上“感知神经”:AHE100无线温湿度传感器,守护安全运行的隐形卫士
  • RocketMQ如何保证消息不丢失
  • CC1-二叉树的最小深度
  • 把 Python 应用打包成 Mac 应用程序 — 完整指南
  • 阿里云监控:SLS的使用
  • C语言面试题答案版(ai生成)
  • 做网站发广告重庆建站模板
  • 吃透大数据算法-用 “任务排队” 讲透 Kahn 算法的核心