Qt框架概述

news2025/1/18 17:04:10

Qt框架概述

  • 一、什么是Qt
  • 二、了解QtCreator
  • 三、创建Qt项目
    • *Qt项目框架及文件介绍
  • 四、设置窗口属性
  • 五、按钮
    • 创建按钮方式一
      • 按钮属性设置
    • 创建按钮方式二
  • 六、对象模型

一、什么是Qt

概念:
Qt是一个基于C++的 跨平台的图形用户界面应用程序框架
常见GUI

  • Qt :支持多平台开发
  • MFC:仅在Windows开发

使用Qt开发的案例:

  • Linux桌面环境KDE
  • Google Earth 谷歌地图
  • WPS Office
  • 极品飞车

二、了解QtCreator

Qt和QtCreator的区别
Qt:开发工具包
QtCreator:集成的编译器,即Qt的桌面环境

QtCreator界面
在这里插入图片描述

  • 欢迎选项
    • 工程:创建工程+打开工程
    • 示例:demo程序
    • 教程
  • 编辑选项
    • 编辑项目文件
  • 设计选项
    • 设计ui
  • debug选项
    调试
  • 项目设置选项
  • 帮助选项
    • 查询手册

三、创建Qt项目

欢迎–>project–>new project
菜单栏–>文件–>新建文件或项目

创建类的基类
在这里插入图片描述

*Qt项目框架及文件介绍

在这里插入图片描述

.pro文件:工程文件,qmake自动生成的用于生产makefile的配置文件

QT       += core gui//包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets//Qt版本大于4包含此模块,兼容旧版本

TARGET = test//应用程序名,生成的 exe程序
TEMPLATE = app//模板类型
 
DEFINES += QT_DEPRECATED_WARNINGS//定义编译选项,表示如果有些功能被Qt标记为过时,编译器就会发出警告  

SOURCES += \
        main.cpp \ //源文件
        widget.cpp
HEADERS += \
        widget.h //头文件

main.cpp

#include "widget.h"  //Qt中一个类对应一个头文件,类名即为头文件名
#include <QApplication>//Qt系统提供的标准类名生成头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//系统提供的应用程序类,处理应用程序的初始化和结束,事件调度处理
    Widget w;//实例化对象,调用构造函数
    w.show();

    return a.exec();//主事件循环,在exec函数中,Qt会接受并处理用户和系统的事件,并将它们传递给适当的窗口控件
}

widget.cpp

#include "widget.h"

//构造函数
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}
//析构函数
Widget::~Widget()
{
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
//继承
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);//构造函数声明
    ~Widget();//析构函数声明
};
#endif // WIDGET_H

四、设置窗口属性

在widget.cpp源文件中的Widget类的构造函数里设置窗口属性
在这里插入图片描述

  • 关于Qt中文乱码的解决
    在这里插入图片描述

在这里插入图片描述
注:改完编码设置新建工程设置才会生效

五、按钮

创建按钮方式一

1.包含头文件(.cpp)和组件(.pro)
在这里插入图片描述

2.调用类的构造函数创建按钮

//创建按钮
QPushButton*button=new QPushButton;

3.显示按钮
调用show函数或者设置按钮的父对象为窗口

//button->show();//另开窗口显示

//设置按钮的父对象为窗口,按钮会在窗口中显示
button->setParent(this);

按钮属性设置

//设置按钮内容
button->setText("这是一个按钮");
//设置按钮的显示位置
button->move(300,100);
//设置按钮大小
button->setFixedSize(80,30);

创建按钮方式二

创建按钮的同时设置父对象

/************设置按钮方式二*************/
QPushButton* button2=new QPushButton("第二个按钮",this);

区别:

  • 方式一的窗口是默认大小,按钮显示在左上角
  • 方式二窗口根据按钮大小来创建,使用方式二一般需要重置窗口大小

六、对象模型

概念:Qt对象间的父子关系,简化了内存回收

  • 在创建一个QObject对象时,QObject的构造函数会接收一个QObject指针作为参数,则会个参数就是父对象指针,我们创建的QObject对象会自动添加到其父对象的children()列表。
  • QWidget是能在屏幕上显示的一切组件的父类,QWidget继承自QObject
  • 关闭一个窗口的时候,调用析 构函数,如果窗口还有子类,会先调用子类 对象的析构函数

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

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

相关文章

状态错误 MSB8040,此项目需要缓解了 Spectre 漏洞的库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体

“Spectre Mitigation”缓解错误 如果出现“Spectre Mitigation”这种错误&#xff0c;就要了解下PIPE技术&#xff1a;流水线技术&#xff0c;比如3级流水线&#xff0c;避免CPU空闲&#xff0c;不浪费时间&#xff0c;但是前提是没有跳转&#xff0c;指令都是顺序执行的&…

pytorch transforms图像增强

一、前言 在学习自己的项目发现自己有很多基础知识不牢&#xff0c;对于图像处理有点不太清楚&#xff0c;因此写下来作为自己的笔记&#xff0c;主要是我想自己动手写一下每一句代码到底做了什么&#xff0c;而不是单纯的我看了知道了它做了什么&#xff0c;说白了&#xff0c…

【Maven】开发自己的starter依赖

【Maven】开发自己的starter依赖 文章目录【Maven】开发自己的starter依赖1. 准备工作1.1 创建一个项目1.2 修改pom文件1.3 修改项目结构2. 动手实现2.1 创建客户端类2.2 创建配置类2.3 配置路径2.4 下载到本地仓库3. 测试1. 准备工作 1.1 创建一个项目 打开idea&#xff0c;…

BP神经网络原来就是曲线拟合

本站原创文章&#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 在初学BP神经网络的时候&#xff0c;总是非常抽象和难理解 但是&#xff0c;学久了会发现&#xff0c;BP神经网络原来就是曲线拟合&#xff01; 一下子才具体、深入的理解到BP神经网络是什么 本文…

字节,腾讯过来的面试自动化测试就这水平吗?鬼知道经历了什么?

本人12年从业经验&#xff0c;曾就职于美团测试开发框架组&#xff0c;搭建过美团platuo测试框架&#xff0c;thrift测试框架&#xff0c;自动化测试平台&#xff0c;熟悉python3&#xff0c;java&#xff0c;vue&#xff0c;在多家公司从0到1搭建过自动化测试框架&#xff0c;…

linux文件编辑--vi

目录标题vi/vim中三种模式命令模式下的常用命令--光标移动输入模式末行模式vim中常用的操作类型命令行模式下的常用命令--复制、粘贴、删除命令模式下的常用命令--文件内容查找命令模式中的基本操作--撤销编辑及保存退出末行模式中的基本操作--保存文件内容及退出vi编辑器末行模…

GitHub标星15w,如何用Python实现所有算法?

学会了 Python 基础知识&#xff0c;想进阶一下&#xff0c;那就来点算法吧&#xff01;毕竟编程语言只是工具&#xff0c;结构算法才是灵魂。 新手如何入门 Python 算法&#xff1f; 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&#xf…

[论文阅读RGBD-SOD][2022_TCSVT_MoADNet][轻量化]

MoADNet: Mobile Asymmetric Dual-Stream Networks for Real-Time and Lightweight RGB-D Salient Object Detection paper&#xff1a;https://ieeexplore.ieee.org/abstract/document/9789193 动机 尽管已有许多优秀的RGB-D SOD技术被提出&#xff0c;但它们大多关注性能…

面试篇-从今天开始彻底分清Java内存模型JMM和运行时数据区

“相信很多人会把Java内存模型与Java运行时数据区给搞混淆” Java内存模型和Java运行时数据区是两个不同的概念&#xff0c;很容易让人混淆。下面简单介绍一下它们的区别&#xff1a; Java内存模型&#xff08;JMM&#xff09;是Java虚拟机规范中定义的一种内存模型&#xff…

如何优化快速排序?

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 还记得上次的快速排序吗&#xff1f;还记得 key 是怎么取的吗&#xff1f;当时我直接把数组的起始元素作为了 key 值&#xff0c;其实这样做是有弊端的&#xff0c;试想&#xff1a;一个降…

SAP Business Technology Platform (BTP)的架构理解

查资料看到的&#xff0c;转一下&#xff0c;附上链接&#xff1a; SAP Business Technology Platform (BTP)的架构理解 长期以来&#xff0c;我在与客户和伙伴的沟通交流中发现大家依然对SAP业务技术平台 – SAP Business Technology Platform (以下简称BTP)纯有各种疑惑&…

webgl-图形非矩阵旋转

知识拓展 由&#xff08;x1,y1&#xff09;旋转β角度到&#xff08;x2,y2&#xff09; 根据圆极坐标方程 x1 r*cosα y1 r*sinα 可得 x2 r*cos(α β) r*cosα*cosβ - r*sinα*sinβ,因为x1 r*cosα&#xff0c;y1 r*sinα&#xff0c;所以x2 x1*cosβ -y1*sinβ…

如何进行移动设备资产管理

随着越来越多的移动设备进入和访问组织的企业资源&#xff0c;管理员必须监视和控制对企业数据的访问。与传统工作站不同&#xff0c;传统工作站位于企业的物理工作区内&#xff0c;移动设备从多个位置使用&#xff0c;从而使移动资产管理过程更加复杂。 什么是移动资产管理 …

java基础集合面试题

什么是集合 集合就是一个放数据的容器&#xff0c;准确的说是放数据对象引用的容器 集合类存放的都是对象的引用&#xff0c;而不是对象的本身 集合类型主要有3种&#xff1a;set(集&#xff09;、list(列表&#xff09;和map(映射)。 集合的特点 集合的特点主要有如下两点&…

LMKD分享

背景 Android是一个多任务系统&#xff0c;可以同时运行多个程序&#xff0c;一般来说&#xff0c;启动运行一个程序是有一定的时间开销的&#xff0c;因此为了加快运行速度&#xff0c;当你退出一个程序时&#xff0c;Android并不会立即杀掉它&#xff0c;这样下次再运行该程…

【MySQL优化】快速入门慢SQL优化

MySQL B树结构&#xff08;二叉排序树&#xff09; 索引 SQL优化&#xff0c;主要就是在优化索引 索引:相当于书的目录 索引:index是帮助MYSQL高效获取数据的数据结构。索引是数据结构&#xff08;树:B树(默认)、Hash树…) 索引的弊端: 1.索引本身很大&#xff0c;可以存…

Spring Cloud Config配置服务及那些你不知道的坑

目录 1、为什么选择Spring Cloud Config 1.1 集中式管理 1.2 动态修改配置 2、Spring Cloud Config 简介 3、服务端配置 3.1 添加依赖 3.2 开启服务注册 3.3 添加YML配置 3.4 创建远程分支及Profile配置文件 3.5 启动并测试服务 4、客户端配置 4.1 添加依赖 4.2 开…

2.3-6循环链表

原理的单链表和循环单链表的区别&#xff1a; 初始化循环单链表时&#xff0c;使头节点next指针指向头节点。 判断循环单链表是否为空。 对比&#xff1a; 单链表&#xff1a;if(L->next NULL) 双链表&#xff1a;if(L->nextL) 判断循环单链表的结点p是否为表尾结点…

汇聚音视频新能量 探索行业新蓝海

视频行业卷成红海&#xff0c;如何突破瓶颈&#xff0c;去探索行业的新蓝海&#xff0c;本次LiveVideoStackCon 2022北京站邀请到快手高级副总裁、研发线负责人于冰&#xff0c;以《汇聚音视频新能量&#xff0c;探索行业新蓝海》为题&#xff0c;从视频行业趋势和痛点出发&…

类ChatGPT模型ChatGLM-b6本地部署实践

国外ChatGPT火爆持续&#xff0c;前一段时间百度发布“文心一言”还没有全面放开测试&#xff0c;这不阿里“通义千问”又悄然而至&#xff0c;国内大模型AI产品渐渐浮出水面。早在2022年8月份时候清华大学的对话语言模型ChatGLM-6B就发布并开源&#xff0c;本文简要介绍ChatGL…