【Qt秘籍】[005]-Qt的首次邂逅-创建

一、如何创建文件?

        当我们打开Qt Creator,你会发现整个界面类目繁多。现在,让我们直接开始新建一个项目。

1.点击左上角的“文件”==>点击“新建文件或项目”

2.如图,选择“Application”==>“Qt Wifgets application”==> “Choose...”


3.如图,选择填写名称和路径,点击下一步

【可以点击设为默认的项目路径

注意:路径中请勿使用中文,因为可能会导致后续的报错!

        

Qt的构建我该选什么?

在Qt中构建有三种选择,即:qmake、CMake、Qbs,接下来我们将逐一介绍。


qmake

        qmake是一种用于自动创建makefile的构建工具。Qmake支持跨平台施工。Qmake编辑带有后缀的文件。赞成的意见。


CMake

        CMake是一个跨平台的构建工具。CMake本身不是一个编译器,而是一个允许编译器理解编译过程的工具。让CMake采取行动来构建系统,例如Makefiles和Visual Studio项目文件。CMake是第三个具有大量文件的工具。


Qbs

        Qbs(QtbuildSuite:QtbuildSuite)与qmake相同,CMake工具都是构建工具。Qbs被称为下一代构建工具,具有更快的qmake编译速度。Qbs没有绑定到Qt版本,它根据项目的高级项描述生成正确的依赖关系表。创建传统的MakeFile工具,如qmake和CMake,在创建MakeFile工具后,将实际命令交给Make工具执行。


Qt官方声明:由于市场原因,Qbs已被弃用。对于Qt用户来说,Qmake是目前使用最广泛的构建工具,CMake位居第二。 

4.综上所述,如图,选择“qmake”

 Qt基类的关系是什么?

QWidget

        QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QMainWindow

        QMainWindow类提供一个有菜单条锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态变得更容易。继承使创建当用户点击菜单项或者工具条按钮时被调用的槽成为可能。你也可以使用Qt设计器来创建主窗口。

QDialog

        QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。

三者关系图

 我们只需要使用Qwidget即可。

5.如图,选择“QWidget”然后点击下一步。

 注意:类名和文件名最好有关联性!以便于后续的代码编写。

Translation File是什么?

        选择翻译文件对应的语言,使得软件国际化若是以日常学习为用途,此处直接忽略。

6.如图,直接点击下一步。

7.如图,直接点击下一步。

8.如图,直接点击完成。

注意:如果想把代码提交到码云或者github,可以在此处选择git作为版本控制系统。

         通过上述8个步骤,终于完成了项目的创建。虽然看似复杂,但是当你熟练操作后,一套流程绝对行云流水,不到十秒即可创建完成!

二、程序的运行及代码解释

1.main.cpp

使用QtCreator创建任何新进程后,main.cpp文件将自动生成以下代码:

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

直接点击运行即可。 

运行后出现了一个矩形的空白窗口。 


1.Qt系统提供的标准类名头没有。h后缀


2.每个Qt类对应一个表头,类名为表头名称


3.QAapplication是一个应用程序类;Q应用程序a(a是应用程序对象,只有一个。)
⚫ QAapplication管理图形应用程序的控制流和主要设置。
⚫ QAapplication是Qt整个后端管理的生命线。它包含主事件循环,其中窗口系统和其他系统来自
所有事件处理和资源调度。它还处理应用程序的初始化和终止,并提供对话管理。
⚫对于任何使用Qt的图形应用程序,无论是否使用,都只存在一个QAApplication对象
此应用程序是否同时具有0、1、2或多个窗口。


4.myWidgetw//实例化窗口对象


5.w.show()//调用show函数显示窗口


6.a.exec():程序进入一个消息循环,等待对输入消息的响应。这里main()将控制权转移到Qt,Qt完成作为一个事件处理操作,exec()的值将在应用程序退出时返回。在exec()中,Qt接受并处理数据传达系统事件并将其传递给相应的窗口组件。

2.widget.h

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

前两行代码保证头文件仅仅包含一次

//前两行代码保证头文件仅仅包含一次
#ifndef WIDGET_H
#define WIDGET_H
//等同于下列写法
#pragma once

 创建项目时,选择的父类,并且要包含头文件

#include <QWidget>//包含头文件,和类名一致

class Widget : public QWidget    //创建项目时,选择的父类
{

}

 Q_OBJECT是Qt内置的宏,展开后会生成大量代码

Q_OBJECT

 构造函数和析构函数(Qt引入“对象树”机制)

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

和form file密切相关

private:
    Ui::Widget *ui;

 3.widget.cpp

 widget.cpp

#include "widget.h"    //创建生成的头文件
#include "ui_widget.h"    //form file被qmake生成的头文件

Widget::Widget(QWidget *parent)    //构造函数
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);    //把form file生成的界面和当前widget关联起来
}

Widget::~Widget()    //析构函数
{
    delete ui;
}

4.form file -- widget.ui

双击后会调用 Qt Designer 打开ui文件,即为图形化的界面编辑器

左侧栏都是Qt中内置的控件。

如果我们拖拽左侧的控件到程序窗口中,就可以创建出具体的界面了。

右侧是编辑属性。

每个控件都有其独特的属性,影响到控件的行为。

点击点击左上角的编辑,就会显示ui文件的本体。

 这个格式实际上就是xml格式。类似于html,他们都是使用成对的标签表示数据。

笔者碎碎念: 虽然新建文件可能对你都是一个不小的挑战,不过好在你坚持了下来。下面的内容相信对你来说也是小菜一碟!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ list类

目录 0.前言 1.list介绍 1.1优势 1.2劣势 1.3容器属性 2.list使用 2.1构造函数 2.1.1默认构造函数 2.1.2填充构造函数 2.1.3范围构造函数 2.1.4拷贝构造函数 2.1.5初始化列表构造函数 2.2迭代器 2.2.1 begin() 2.2.2 end() 2.2.3 cbegin() 2.2.4 cend() 2.2.…

Sectigo证书介绍以及申请流程

Sectigo (原Comodo CA)是全球SSL证书市场占有率最高的CA公司&#xff0c;目前将近40%的SSL证书用户选择了Sectigo。由于其产品安全&#xff0c;价格低&#xff0c;受到大量站长的信任和欢迎。Sectigo旗下的SSL证书品牌包括Sectigo, Positive SSL, Sectigo Enterprise等。 品牌…

AI虚拟试穿革命:I2VEdit技术引领电商视频内容创新

在当今快速迭代的电子商务领域,用户体验与内容创新是企业竞争力的核心要素。随着AI技术的飞速进步,AI虚拟试穿已不再局限于静态图像,而是迈向了动态视频的新纪元。本文将深入解析一项革新性技术——I2VEdit,如何以其独到之处,为电商尤其是服装零售行业带来一场内容创作与产…

RAG 高级应用:基于 Nougat、HTML 转换与 GPT-4o 解析复杂 PDF 内嵌表格

一、前言 RAG&#xff08;检索增强生成&#xff09;应用最具挑战性的方面之一是如何处理复杂文档的内容&#xff0c;例如 PDF 文档中的图像和表格&#xff0c;因为这些内容不像传统文本那样容易解析和检索。前面我们有介绍过如何使用 LlamaIndex 提供的 LlamaParse 技术解析复…

手摸手教你uniapp原生插件开发

行有余力,心无恐惧 这篇技术文章写了得有两三个礼拜,虽然最近各种事情,工作上的生活上的,但是感觉还是有很多时间被浪费.还记得几年前曾经有一段时间7点多起床运动,然后工作学习,看书提升认知.现在我都要佩服那会儿的自己.如果想回到那种状态,我觉得需要有三个重要的条件. 其…

安卓赤拳配音v1.0.2Ai配音神器+百位主播音色

Ai配音神器 本人自用版本&#xff01;超级稳定&#xff01;百位主播音色 登陆即可用 链接&#xff1a;https://pan.baidu.com/s/1WVsrYZqLaPAriHMMLMdPBg?pwdz9ru 提取码&#xff1a;z9ru

【数据结构与算法 | 链表篇】力扣876

1. 力扣876 : 链表的中间节点 (1). 题 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表…

设计模式详解(六):适配器模式——Adapter

目录导航 适配器模式及其作用现实生活举例 适配器模式的好处适配器模式的实现关系图实现步骤 适配器模式的适用场景适配器模式示例 适配器模式及其作用 适配器模式是一种结构型设计模式。所谓结构型是指在代码结构方面的设计模式。适配器模式作为中间层&#xff0c;可以让交互…

Lightweight Robust Size Aware Cache Management——论文泛读

TOC 2022 Paper 论文阅读笔记整理 问题 现代键值存储、对象存储、互联网代理缓存和内容交付网络&#xff08;CDN&#xff09;通常管理不同大小的对象&#xff0c;例如&#xff0c;Blob、不同长度的视频文件、不同分辨率的图像和小文件。在这种工作负载中&#xff0c;大小感知…

【云原生】Kubernetes----PersistentVolume(PV)与PersistentVolumeClaim(PVC)详解

目录 引言 一、存储卷 &#xff08;一&#xff09;存储卷定义 &#xff08;二&#xff09;存储卷的作用 1.数据持久化 2.数据共享 3.解耦 4.灵活性 &#xff08;三&#xff09;存储卷的分类 1.emptyDir存储卷 1.1 定义 1.2 特点 1.3 示例 2.hostPath存储卷 2.1 …

NVR对接三方相机预览黑屏问题案例

一、 问题现象 【问题现象】NVR接入三方相机,通道状态显示在线,但本地、web预览显示黑屏。更换H.264&#xff0c;H.265均预览黑屏&#xff0c;且NVR侧的萤石云手机APP预览报错260025。 【现场拓扑】现场拓扑如下 &#xff08;1&#xff09; IPC使用onvif协议添加至NVR&#xff…

YOLOv5改进 | 主干网络 | 用repvgg模块替换Conv【教程+代码 】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。…

IC617 虚拟机下载 RHEL6_ic617_hspice2015_spectre15

下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1kFEkq-SVkpSXcSS49THkiA?pwdtpm8 提取码&#xff1a;tpm8

tomcat学习--部署java项目

主流开发项目&#xff0c;springboot框架下&#xff0c;jar部署java传统的tomcat发布war包 一 什么是tomcat&#xff1f; 是一个用于运行java程序的软件&#xff0c;发布的时候&#xff1a;开发将源码使用maven打包&#xff0c;生产war包 二 安装tomcat tomcat是java写的&a…

磁带存储:“不老的传说”依然在继续

现在是一个数据指数增长的时代&#xff0c;根据IDC数据预测&#xff0c;2025年全世界将产生175ZB的数据。 这里面大部分数据是不需要存储的&#xff0c;在2025预计每年需要存储11ZB的数据。换算个容易理解的说法&#xff0c;1ZB是10^18Bytes, 相当于要写5556万块容量18TB的硬盘…

【介绍下运维开发】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

【1.文件和目录相关(上)】

一、Linux的文件系统结构 1、Linux文件系统就是一个树形的分层组织结构。 2、文件系统层次结构标准FHS&#xff1a;用于规范文件目录命名和存放标准。 &#xff08;1&#xff09;/bin:是二进制英文缩写。 &#xff08;2&#xff09;/boot:存放的是系统启动时要用到的程序。 …

个股期权开户的准入条件

今天带你了解个股期权开户的准入条件。个股期权是一种金融行生品&#xff0c;投资者可以通过购买期权来获得在未来某个时间点以约定价格买入或卖出某只股票的权利&#xff0c;但不承担义务。 个股期权开户的准入条件 场外个股期权&#xff08;OTC股票期权&#xff09;相对于交…

【后端开发】服务开发场景之分布式(CAP,Raft,Gossip | API网关,分布式ID与锁 | RPC,Dubbo,Zookeeper)

【后端开发】服务开发场景之分布式&#xff08;CAP&#xff0c;Raft&#xff0c;Gossip | API网关&#xff0c;分布式ID与锁 | RPC&#xff0c;Dubbo&#xff0c;Zookeeper&#xff09; 文章目录 1、如何设计一个分布式系统&#xff1f;&#xff08;底层原理&#xff09;理论&a…

服务器感染了. rmallox勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 近年来&#xff0c;随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。其中&#xff0c;勒索病毒作为一种严重的网络威胁&#xff0c;对个人和企业数据造成了巨大的威胁。本文将重点介绍.rmallox勒索病毒的特点、传播途径以及应对策略&#xff0c;旨…