Qt框架概述

2023-11-14

一、什么是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
  • 关闭一个窗口的时候,调用析 构函数,如果窗口还有子类,会先调用子类 对象的析构函数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt框架概述 的相关文章

  • 在QT中以不同的时间间隔更新GUI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何在QT中以不同的时间间隔更新GUI 最好的是我可以控制时间间隔 我知道 QTimer 可以在同一时间间隔更新 GUI 但我
  • Qt QML ComboBox 覆盖滚轮事件

    有没有办法覆盖 ComboBox MouseArea 以忽略滚轮事件而不是更改当前索引 ComboBox 本身没有选项可以更改滚轮焦点行为 到目前为止 我尝试使用如下代码覆盖 CB MouseArea 的 onWheel ComboBox
  • 如何将父小部件焦点重定向到子小部件?

    有一个简单的类叫做FloatingPointPropertyEditor 它继承的是QWidget并包含一个QLineEdit带有浮点数验证器的实例 class FloatingPointPropertyEditor public QWid
  • 如何在Qt WebKit中将网页保存为“另存为完整网页”

    我需要使用 Qt WebKit 保存网页 类似于 另存为完整网页 以下是我的要求 保存索引html文件 维护实体编码 需要下载所有链接的图像和其他资源 需要将html页面中的资源路径更改为本地下载路径 需要维护网页当前状态 我可以使用 Qt
  • QCalendarWidget - 如何突出显示日期

    我有一个QList
  • Qt 中的 QRadioButton 选中/取消选中问题

    我发现与选中 取消选中 QRadioButton 相关的问题 我用于检查 白点 和取消检查 没有白点 的图像未更新 我的问题是 我已经实现了一些 QRadioButton 第一次所有 QRadioButton 都检查为 false 因此 本
  • 无法锚定到不是父级或同级 QML QtQuick 的项目

    我正在使用 QML 开发 python 桌面应用程序 我的 QML 文件中有这个 SplitView anchors fill parent orientation Qt Horizontal Rectangle color 272822
  • 使用 Qt 在 xoverlay 之上绘制

    我希望在使用 Xoverlay 渲染的视频流之上绘制一些 UI 我正在使用 gstreamer 播放视频并使用 xoverlay 在 xvimagesink 上渲染它 我的小部件继承自 QGLWidget 我希望使用 QPainter 绘制
  • QDomDocument 无法设置带有 标记的 HTML 文档的内容

    当我使用QDomDocument对于 HTML 内容 如果存在则无法设置内容在文档的开头 但实际上为什么 例如 考虑以下代码片段 QDomDocument doc QString content a href bar foo a qDebu
  • 如何删除在设计器模式下创建的插槽?

    我已经创建了按钮cancelButton 然后我创建了函数槽on cancelButton clicked 使用上下文菜单项Go to slot 但是 过了一段时间 我删除了这个按钮 不再需要 并尝试删除该函数 但编译器给出错误undefi
  • 使用 Poppler Qt4 C++

    我需要在我的应用程序中使用 pdf 查看器库 我使用 C 和 QT 我下载了Poppler http poppler freedesktop org 和代码示例Poppler Qt4 界面库 http people freedesktop
  • 无法初始化静态QList?

    我收到以下错误 Cube cpp 10 error expected initializer before lt lt token 以下是头文件的重要部分 ifndef CUBE H define CUBE H include
  • 将信号/槽(QObject)添加到 QGraphicsItem:性能受到影响?

    我想将信号 槽添加到 QGraphicsItem 以便我可以从另一个线程访问 QGraphicsItemObjects 我知道有两个选项 使用 QGraphicsObject 或从 QObject 和 QGraphicsItem 继承 使用
  • 为 Visual Studio 2012 编译 Qt 4.8.x

    我应该采取哪些步骤来编译适用于 Visual Studio 2012 的 Qt 版本 4 8 x 我已经仔细遵循了已接受答案中的说明这个问题 https stackoverflow com questions 5601950 how to
  • 关于 GUI 计时器显示后台线程已用时间的建议?

    Issue 我有一个 PyQt GUI 用户按下按钮即可启动后台线程 workerThread 它是从QThread 我想要一个计时器显示 以QLabel 显示自此以来已经过去了多少时间workerThread开始 我希望这个计时器在wor
  • 将项目添加到自定义组件的布局

    我有一个习惯Footer Component我想在 QML 应用程序的不同位置重用它 Rectangle color gold height 50 anchors bottom parent bottom left parent left
  • 通过对 XmlHttpRequest (REST) 的响应在 QML 中显示图像

    我需要从 REST API 调用中获取 jpeg 图像 我使用 XMLHttpRequest 因为请求需要身份验证标头 即我不能只创建一个图像并将源设置为带有 user passwd url 的 URL 我认为我可以通过将 REST 数据设
  • cx_freeze:QODBC 驱动程序未加载

    我的 python 应用程序如下所示 test py from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4 import QtSql import sys import at
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字

随机推荐

  • 2021年wsl2中配置Ubuntu18.04+CUDA+Pytorch深度学习环境完全版

    2021年4月 wsl2 中配置深度学习环境完全版 windows10 RTX3090 wsl2 ubuntu18 04 cuda cudatoolkit11 0 cudnn11 0 gnome anaconda3 pycharm 写在前面
  • 使用tinyproxy简易搭建代理服务器

    需要 腾讯云服务器或阿里云服务器 虚拟机 步骤 第一步 在自己的云服务器上安装 tinyproxy 如果是 Ubuntu 就使用 apt install y tinyproxy 如果是 Centos 则使用 yum install y ti
  • 图像去模糊:MIMO-UNet 模型详解

    本内容主要介绍实现图像去模糊的 MIMO UNet 模型 论文 Rethinking Coarse to Fine Approach in Single Image Deblurring 代码 官方 https github com cho
  • opengles3.0 学习,顶点着色器(六)

    opengles3 0 学习 顶点着色器 六 顶点着色器输入包括 属性 用顶点数组提供的逐顶点数据 统一变量和统一变量缓冲区 顶点着色器使用的不变数据 采样器 代表顶点着色器使用的纹理的特殊统一变量类型 着色器程序 顶点着色器的源码 顶点着
  • 基于人脸的常见表情识别(3)——模型搭建、训练与测试

    基于人脸的常见表情识别 3 模型搭建 训练与测试 模型搭建与训练 1 数据接口准备 2 模型定义 3 模型训练 模型测试 本 Task 是 基于人脸的常见表情识别 训练营的第 3 课 如果你未学习前面的课程 请从 Task1 开始学习 本
  • 基于std::queue C++11 线程安全队列。

    网上看到的封装不错 记录一下 非原创 pragma once include
  • JAVA实现大文件多线程下载,提速30倍!(提供exe版)

    JAVA实现大文件多线程下载 提速30倍 前言 兄弟们看到这个标题可能会觉得是个标题党 为了解决疑虑 我们先来看下最终的测试结果 测试云盘下载的文件 46M 自己本地最大下载速度 2M 1 单线程下载 总耗时 603s 2 多线程下载 50
  • DDPMs扩散模型Pytorch代码实现附详细注释

    本文相当于是对The Annotated Diffusion Model的代码理解后加的注释 很详尽 具体有些公式图片不太好显示 在vx公众号 一蓑烟雨晴 回复 100 下载notebook版本的代码文件 import math from
  • 多目标跟踪笔迹十三:Learning by tracking Siamese CNN for robust target association

    1 Introduce 本文介绍了一种在行人跟踪背景下处理数据关联任务的新方法 引入了一种两阶段学习方案去匹配 检测对 首先 对 Siamese 卷积神经网络 CNN 进行了训练 以学习描述两个输入图像块之间的局部时空结构 聚合像素值和光流
  • 安装Ambari 2.7.5 + HDP3.1.5(附安装包)

    目录 前置准备 1 安装包准备 2 服务器配置 3 配置静态IP 4 配置主机名 5 关闭防火墙及selinux 6 配置ssh互信 7 安装pssh工具 非必须 8 配置ntp时钟同步 9 设置swap 10 关闭透明大页面 11 安装h
  • ubuntu创建自己的git远程仓库

    准备工作 先弄来一个服务器 可以先自行租赁一个服务器例如华为云 阿里云 腾讯云等等 这些服务器都可以哪个便宜就选择哪个吧 然后安装一个ubuntu的系统 这边我自用的是ubuntu系统 其他的系统没用搭建过 如果是Linux的系统大致都一样
  • 人工智能汇总---政策-应用--技术

    2017 8 2018 6月 那些脑袋迷糊的日子 不知啥是人工智能 接下来一步一步去了解 从大政策 到媒体 企业 学校 自己动手 逐步对人工智能有个初步的了解 下面对精华网址汇总 供有共同爱好的学习 讨论群 366244662 2017 8
  • VASP输入INCAR文件

    欢迎来到我的博客 坚持比努力重要 文章目录 欢迎来到我的博客 坚持比努力重要 目录 VASP输入INCAR文件 初始I O设置 读入 读出 Electronic Relaxation 电子步 Ionic Relaxation 离子步 Pol
  • Arduino使用Esp32-cam开发版

    首先你需要先准备一些硬件 1 Esp32 Cam开发版 2 TY OV2640 v2 0摄像头 3 烧录底座 可以用USB TTL 我用的是Esp8266的烧录底座 4 杜邦线母线x5 颜色不做要求 开始填坑 贴个大佬的玩法 如果你在开发版
  • 获取outputstream大小_java从输入流中获取数据并返回字节数组示例

    代码如下 import java io ByteArrayOutputStream import java io InputStream 从输入流中获取数据并以字节数组返回 public class StreamTool 从输入流获取数据
  • 神州网信政府版win10远程

    今天去客户公司部署系统 本来想着开好远程后马上回来远程操作 哪知道客户服务器安装的是 神州网信政府版win10远程 遇到一堆问题 处理了半天 记录下 1 参考 Windows10神州网信版的远程桌面开启 神州网信 远程桌面 dawn的博客
  • Using the SG3525 PWM Controller - Explanation and Example: Circuit Diagram / Schematic of Push-Pull

    5 Using the SG3525 PWM Controller Explanation and Example Circuit Diagram Schematic of Push Pull Converter PWM is used i
  • 【前端】Vue项目:旅游App-(1)搭建项目、重置css、配置router和store(pinia)

    文章目录 创建项目 搭建和配置项目 项目目录结构划分 重置CSS normalize css reset css 目录结构 配置router 对应页面组件 index js 配置store 创建项目 npm init vue latest
  • Markdown 公式编号及引用

    举一个简单的例子 前提条件是使用 mathjax 作为 LaTeX 渲染工具 Suppose we solve equations mathcal L U F tag 1 label eq1 In the equation eqref eq
  • Qt框架概述

    Qt框架概述 一 什么是Qt 二 了解QtCreator 三 创建Qt项目 Qt项目框架及文件介绍 四 设置窗口属性 五 按钮 创建按钮方式一 按钮属性设置 创建按钮方式二 六 对象模型 一 什么是Qt 概念 Qt是一个基于C 的 跨平台的