QT入门操作

1-Qt简介

  1. Qt是什么?

这门课程的定位:

  • C++的实践课。
  • 系统性的认识图形用户界面编程
  • 新的就业方向

Qt是一个基于C++的图形用户界面(GUI)开发框架,但是Qt不仅仅能开发界面,还包括很多传统编程中的计数:多线程、数据库、图像处理、网络通信、文件IO。。。。。等等。

以下是Qt开发的具体产品:

等等等,包含但不限于以上场景。

Qt主要的优势是优良的跨平台特性(一次编程,到处编译)。

比如说:windows、linux、android、SunOS。。。。。。等等

另外Qt也拥有一些常规特性:

  • 面向对象开发(使用C++进行编程)
  • 丰富的API调用接口,配套了对应的开发文档。
  • 开源(源代码开放,学习资料多)。

 欧路词典下载C++/Qt常用词汇

2、新建项目

本次Qt仍然使用C++课程中的Qt Creator,先更改编码,改为UTF-8

更改完成后,创建正常的支持中文的Qt项目了。操作步骤如下:

  1. 在Qt Creator中点击
  2. 在弹出的窗口中,按照下图所示进行操作。

  1. 在弹出的窗口中设置项目名称和路径,注意不能包含中文字符。可以设置默认的项目路径。

  1. 直接点击下一步

  1. 在弹出的窗口中,选择基类为“QDialog”,取消“创建界面”选项,然后点击 “下一步”。

  1. 在项目管理界面,直接点击完成,可以看到项目中包含的文件。

  1. 点击可以编译并运行项目,项目运行之后可以看到一个可视化的窗口。

3、构建目录和工作目录

项目运行之后,存在两个重要的目录:构建目录和工作目录

3.1 构建目录

存放项目编译过程中生成的文件,这个目录的位置:

如果新创建的项目无法正常运行:

解决方法1:

如果排查了各种问题仍然无法解决,可以尝试取消Shadow build选项,此时项目目录会与工程目录,合二为一,不建议正常使用的用户这样操作。

构建目录在课程最后一天会重点涉及,前期用的比较少。

3.2 工作目录

工作目录就是创建项目时设置的目录,用于存放源代码文件,开发配置文件等。

工作目录可以通过下面这种方式定位:

工作目录中包含的文件有:

本门课程的作业提交方式为工作目录打包。

4、项目结构

4.1 项目配置文件.pro

在windows的文件管理器中,直接双击.pro文件即可导入项目。

4.2 用户文件.user

用户文件在Qt Creator中不可见,但是确实存在于工作目录中。(项目构建后)。

此文件时Qt 根据当前计算机的开发环境自动生成的文件,每个计算机几乎不通用此文件,因此在提交代码时,先删除此文件。

4.3 主文件 main.cpp

程序的入口,包含主函数,通常不需要改动主文件代码。

#include "dialog.h"
// QApplication 类管理GUI应用程序的控制流和主设置
#include <QApplication>
int main(int argc, char *argv[])
{
    // 创建了一个管家类对象(栈内存)。管理整个应用程序
    QApplication a(argc, argv);
    // 创建了一个自定义对话框窗口类的栈内存对象
    Dialog w;
    // 显示(显示窗口)
    w.show();
    // 进入主时间循环
    return a.exec();
}

4.4 头文件dialog.h

在Qt中一个自定义类的声明都写在.h中,这个类用到的所有其它类的头文件,也在此文件中引入。

#ifndef DIALOG_H
#define DIALOG_H
// 添加头文件QDialog对话框基类,Qt自带类型通常使用Q开头
#include <QDialog>
// 自定义对话框类
// 继承于QDialog类
class Dialog : public QDialog
{
    // 先放着
    Q_OBJECT
public:
    Dialog(QWidget *parent = 0);    // 构造函数
    ~Dialog();      // 析构函数
};
#endif // DIALOG_H

4.5 源文件dialog.cpp

包含与同名头文件配套的类外定义。

#include "dialog.h"
// 构造函数定义
// parent 参数
Dialog::Dialog(QWidget *parent): QDialog(parent)   // 透传构造
{
}
// 析构函数类外定义
Dialog::~Dialog()
{

}

5、帮助文档

学习Qt一定要学习如果查询文档,通常对于不是很常用内容在编程开发当中都是随用随查的。官方文档就是第一手资料。

有三种查询文档的方式:

1、直接启动Assistant,是一个独立的文件程序。

打开Assistant程序后,点击索引,在输入框中输入想要查询的内容即可。

2、在Qt Creator中直接点击帮助,可以打开一个内嵌的Assistant程序

3、 光标定位到要查询的内容上,双击键盘F1,可以直接跳到对应的文件内容。

6、调试信息

在C语言或者C++中,无论是printf或Cout输出的内容都不分前后台,但是Qt中输出内容是区分前后台的。通常前台指的是图形用户界面,用户可以直接通过软件界面看到。

后台值是在Qt Creator的(控制台)中,这里显示的信息用户是不可见的,只对开发者开放。

如果想输出到后台,需要使用QDebug类的qDebug() 函数输出调试信息,支持中文输出,整个的使用方式与cout类似,但是有以下区别:

  • 连续输出时,自动添加空格。
  • 每处输出语句结束时,自动添加换行。

输出到后台:QDebug类的qDebug() 函数输出调试信息

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

// 添加头文件QDialog对话框基类,Qt自带类型通常使用Q开头
#include <QDialog>
#include <QDebug>

// 自定义对话框类
// 继承于QDialog类
class Dialog : public QDialog
{
    // 先放着
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);    // 构造函数
    ~Dialog();      // 析构函数
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

// 构造函数定义
// parent 参数
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)   // 透传构造
{
    qDebug() << "构造函数 hello world";
}

// 析构函数类外定义
Dialog::~Dialog()
{

}

7、注意

当程序运行时,再次运行可能会出现下面的情况,只需要关闭当前运行的项目,重新运行即可。

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

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

相关文章

【C语言】指针——从底层原理到应用

C语言指针-从底层原理到花式技巧&#xff0c;用图文和代码帮你讲解透彻 目录 一、前言二、变量与指针的本质 1. 内存地址2. 32位与64位系统3. 变量4. 指针变量5. 操作指针变量 5.1 指针变量自身的值5.2 获取指针变量所指向的数据5.3 以什么样的数据类型来使用/解释指针变量所指…

深入了解 Vite:快速、简洁、高效的前端构建工具(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【Matplotlib】基础设置之图像处理05

图像基础 导入相应的包&#xff1a; import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np %matplotlib inline导入图像 我们首先导入上面的图像&#xff0c;注意 matplotlib 默认只支持 PNG 格式的图像&#xff0c;我们可以使用 mpimg.im…

管理系统-基于javaweb的图书管理系统

基于javaweb的图书管理系统 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 本项目采用eclipse工具开发&#xff0c;jspservlet技术编写&#xff0c;样式采用了layui…

Python综合数据分析_根据订单求RFM值

文章目录 0.导入数据1.数据可视化2.数据清洗3.特征工程4.构建User用户表5.求R值6.求F值7.求M值 0.导入数据 import pandas as pd #导入Pandas df_sales pd.read_csv(订单.csv) #载入数据 df_sales.head() #显示头几行数据 1.数据可视化 import matplotlib.pyplot as plt #导…

Linux链接的创建,删除,修改

目录 1. 概述2. 硬链接2.1 创建硬链接2.2 删除硬链接 3. 软链接3.1 创建软链接3.2 删除软链接 5. 常用的终端工具下载 计算机基础–Linux详解 1. 概述 在Linux系统中&#xff0c;链接是一种文件系统中的重要概念。链接允许用户在文件系统中创建指向另一个文件的引用&#xff0c…

2024年HCIE认证有什么用?华为HCIE好考吗?

随着信息技术的迅速发展&#xff0c;网络工程师的需求越来越高&#xff0c;而HCIE作为华为认证体系中的最高级别认证&#xff0c;备受从业者关注。本文将深入研究2024年HCIE认证的价值、考试难度以及报名费用等方面的信息。 2024年HCIE认证有什么用? 新的一年即将到来&#x…

Java学习,一文掌握Java之SpringBoot框架学习文集(5)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

NGINX 配置本地HTTPS(免费证书)

生成秘钥key,运行: $ openssl genrsa -des3 -out server.key 2048 会有两次要求输入密码,输入同一个即可。输入密码然后你就获得了一个server.key文件。 以后使用此文件(通过openssl提供的命令或API)可能经常回要求输入密码,如果想去除输入密码的步骤可以使用以下命令: $ op…

2023全球软件研发技术大会(SDCon2023)-核心PPT资料下载

一、峰会简介 本次峰会包含12大会议主题&#xff1a;云原生设施与平台、微服务架构实践、软件质量与效能、大数据实践与前沿、架构设计与演进、高可用与高性能架构、Web与大前端开发、编程语言与平台、AIGC与大模型、推荐系统实践、AI智能应用与研究、机器学习架构实践。 软件…

一款好用的漏洞扫描工具

APIDetector 是一款强大而高效的工具&#xff0c;旨在测试各个子域中公开的 Swagger 端点&#xff0c;并具有独特的智能功能来检测误报。对于从事 API 测试和漏洞扫描的安全专业人员和开发人员来说特别有用。 功能&#xff1a; 灵活输入&#xff1a;接受文件中的单个域或子域列…

【JaveWeb教程】(7)Web前端基础:Vue组件库Element介绍与快速入门程序编写并运行 示例

目录 Element介绍快速入门示例 Element介绍 不知道同学们还否记得我们之前讲解的前端开发模式MVVM&#xff0c;我们之前学习的vue是侧重于VM开发的&#xff0c;主要用于数据绑定到视图的&#xff0c;那么接下来我们学习的ElementUI就是一款侧重于V开发的前端框架&#xff0c;主…

2024 年 API 安全:预测和趋势

随着技术以前所未有的速度不断进步&#xff0c;API&#xff08;应用程序编程接口&#xff09;安全性的复杂性也随之增加。随着 API 在现代应用程序和服务中的激增&#xff0c;组织将需要更好地了解其 API 环境以及 API 给运营带来的风险。 到 2024 年&#xff0c;预计几个关键…

多线程-互斥锁

从写互斥锁 #include <myhead.h>char buf[128]; //临界资源//1.创建互斥锁 pthread_mutex_t mutex;//定义分支线程 void *task(void *arg) {while(1){//2.获取锁资源pthread_mutex_lock(&mutex);printf("分支线程中:buf %s\n",buf);strcpy(buf,"l…

OpenShift 4 - 在 Jupyter Notebook 中使用 Elyra 执行 AI 处理流水线

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 RHODS 2.50 的环境中验证 说明&#xff1a;请先根据《OpenShift 4 - 管理和使用 OpenShift AI 运行环境》一文完成 MinIO 的安装。 注意&#xff1a;如无特殊说明&#xff0c;和 OpenS…

WWDG---窗口看门狗

一.简介 窗口看门狗跟独立看门狗一样&#xff0c;也是一个递减计数器不断的往下递减计数&#xff0c;必须在一个窗口的上限值&#xff08;用户定义&#xff09;和下限值&#xff08;0X40&#xff0c;固定不能变&#xff09;之间喂狗不会复位&#xff0c;在上限值之前和下限值之…

LabVIEW开发自动光学焊点检测系统

LabVIEW开发自动光学焊点检测系统 LabVIEW于开发了一个自动光学焊点检测系统&#xff0c;旨在提高电子元件焊接的质量和效率。通过利用LabVIEW的高级视觉开发模块&#xff0c;该系统能够准确地识别和分类电路板上的不同焊点类型&#xff0c;如桥接、虚焊、漏焊和多锡。这一进步…

<软考高项备考>《论文专题 - 53 进度管理(4) 》

6 过程5-制定进度计划 6.1 问题 4W1H过程做什么分析活动顺序、持续时间、资源需求和进度制约因素&#xff0c;创建进度模型&#xff0c;从而落实项目执行和监控的过程作用&#xff1a;为完成项目活动而制定具有计划日期的进度模型为什么做为项目制定衡量项目的进度标尺谁来做…

PCL 大地坐标转空间直角坐标(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 二、代码实现 头文件及读取保存函数见:PCL 空间直角坐标转大地坐标(直接求解法C…

如何制作活动报名收集系统,支持填表者单选、多选

发布者制作填表信息时&#xff0c;有些信息希望让用户直接选择&#xff0c;能够节省不必要的填写时间。 易查分【无需条件填表】以及【可修改列】功能可以制作支持9种填表类型的信息收集系统&#xff0c;本次就来介绍如何使用此功能。 &#x1f4cc;使用教程 &#x1f4d6;案例…