Qt-初识

2023-11-02

一、是什么?

Qt是一个由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。Qt广泛地应用于嵌入式开发和传统软件开发中。

二、特点与优势

​​​​​​​​​​​​​​1.跨平台,几乎支持所有的平台——跨平台特性指的是:一次编程,到处编译。
2.接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
3.一定程度上简化了内存回收机制
4.开发效率高,能够快速的构建应用程序。

三.开发环境

此处主要使用版本:qt-opensource-windows-x86-mingw48_opengl-5.2.1

创建一个新的Qt项目的步骤如下:

1. 启动Qt Creator后,点击

按钮。

2. 在弹出窗口中,按照下图所示进行操作。

3. 在弹出的窗口中,编辑项目的名称和工作目录的位置,要求同之前C++,设定后点击“下一步”。

4. 在弹出的窗口中,直接点击“下一步”。

5. 在弹出的窗口中,按照下图所示进行操作,更改基类为QDialog,以便于日常学习方便。

6. 在项目管理界面直接点击“完成”,可以看到项目包含的各种文件,如下所示。

7. 点击运行按钮,观察程序执行效果。

四. 查看帮助文档

Qt自带了大量的帮助文档,可以通过以下几种方式打开:

法一:直接打开Assistant程序,可以在一个独立窗口中打开帮助文档。

法二:在Qt Creator中点击左栏的“帮助”,可以打开一个内置的帮助文档。

法三:在Qt Creator中,光标定位到要查询的内容,双击键盘F1,可以直接通过内置的帮助文档查询到对应的内容。

每个类在文档中需要注意下面的部分。

五. 解析默认文件代码

1 项目配置文件

#-------------------------------------------------
#
# Project created by QtCreator 2023-01-30T21:19:35
#
#-------------------------------------------------

# 当前项目需要添加的模块
QT       += core gui

# 当Qt主版本号大于4时,添加widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = HelloQt # 可执行文件名称
TEMPLATE = app # 当前项目的构建模式

# 当前项目包含的源文件
SOURCES += main.cpp\
        dialog.cpp

# 当前项目包含的头文件
HEADERS  += dialog.h

# 当前项目包含的界面文件
FORMS    += dialog.ui

此文件除了添加的模块外,通常不需要程序员手动维护。

2 Dialog类文件

默认的Qt项目会创建一个Dialog类,此类包含三个文件:

dialog.h

#ifndef DIALOG_H #define DIALOG_H #include <QDialog> namespace Ui { class Dialog; } /** * @brief The Dialog class * 自定义类继承了源代码的QDialog类 */ class Dialog : public QDialog { Q_OBJECT public: explicit Dialog(QWidget *parent = 0); // 构造函数 ~Dialog(); // 析构函数 private: Ui::Dialog *ui; // 成员变量 }; #endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

/**
 * 构造函数
 */
Dialog::Dialog(QWidget *parent) :
    QDialog(parent), // 透传构造
    ui(new Ui::Dialog) // 构造初始化列表
{
    ui->setupUi(this);
}

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

dialog.ui

略,后续有单独章节讲解

3 主文件

main.cpp

#include "dialog.h" #include <QApplication> /** * @brief main 程序的入口,主函数 * @return */ int main(int argc, char *argv[]) { // 创建一个应用程序管理类对象 QApplication a(argc, argv); // 创建了一个Dialog类对象w Dialog w; // 显示对象w在UI上 w.show(); return a.exec(); // 进入循环状态,程序持续运行 }

六. 调试函数

之前C++课程中更改了Qt Creator的文件编码,现在需要恢复之前的默认编码,操作如下:

前期学习为了代码更加精简,在创建项目时,更改第5步为:

其它步骤不变,这样的项目没有了界面文件,代码更加简洁。

Qt中调试信息是不能在界面上被用户看到的,因此需要使用QDebug类将调试信息在后台输出,这样的信息用户无法看到。

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
// 引入头文件
#include <QDebug>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    // 注意Qt中命名规范与C++有不同
    // 函数与变量使用 驼峰命名法(小驼峰命名法):
    //第一个单词全小写,后面的单词首字母大写
    qDebug() << "构造函数"; // 结束后会自动换行
}

Dialog::~Dialog()
{
    qDebug() << "析构函数";
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt-初识 的相关文章

随机推荐

  • 服务失效判断

    题目描述 某系统中有众多服务 每个服务用字符串 只包含字母和数字 长度 lt 10 唯一标识 服务间可能有依赖关系 如A依赖B 则当B故障时导致A也故障 依赖具有传递性 如A依赖B B依赖C 当C故障时导致B故障 也导致A故障 给出所有依赖
  • liuseroj 网址

    点我进入liuseroj 如果打不开请点击备用线路
  • Java如何将文件下的所有文件进行批量更改和替换

    Java如何将文件下的所有文件进行批量更改和替换 将F盘下tmp文件夹下的文件循环取出 进行文件的替换 这里将李替换成1 修改完成写入到文件夹中 public class Test public static void main Strin
  • 高德地图内存泄露LocationManager$GnssStatusListenerTransport.mGnssCallback

    在使用高德地图的时候 喜提了一个内存泄露 GC Root Global variable in native code android location LocationManager GnssStatusListenerTransport
  • Altium Designer 详细入门教程-原理图绘画-AD2016

    这是我两年使用AD2016的总结和归纳 介绍AD2016原理图绘画的基本操作和比较高级的操作 主要面向0基础入门学习的爱好者 操作平台 win10 Altium Dsigner 2016 建议电脑使用屏幕较大的 因为有些对话框不太友好 或者
  • 【Android Jetpack系列】五、ViewModel和LiveData的使用

    ViewModel和LiveData的使用 时 摸 隔 鱼 了小半个月 终于开始了ViewModel和LiveData 首先 在开始之前 说明一下 什么是ViewModel 什么又是LiveData 什么是ViewModel 老套路 Vie
  • 利用Vulnhub复现漏洞 - Jenkins远程命令执行漏洞(CVE-2018-1000861)

    Jenkins远程命令执行漏洞 CVE 2018 1000861 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 漏洞复现 POC 检验 Vulnhub官方复现教程 https vulhub org environments je
  • idea修改 项目代码,浏览器页面不生效 解决方案

    使用快捷键ctrl shift delete 清理浏览器缓存 1 问题描述 idea修改前端项目代码 运行谷歌浏览器不起作用 我也试过 rebuild project 重启idea 等方法都不管用 再次运行谷歌浏览器 还是没有变化 2 尝试
  • “震撼你的前端技能:完整的前端面试指南”

    HTML基础 1 HTML 文件中的 DOCTYPE 是什么作用 HTML超文本标记语言 是一个标记语言 就有对应的语法标准 DOCTYPE 即 Document Type 网页文件的文档类型标准 主要作用是告诉浏览器的解析器要使用哪种 H
  • 八.AD域中启用用户和禁用用户

    c LDAP代码实现启用账户或禁用账户 这个功能单独拿出来写的原因可以猜猜 region 启用用户或禁用用户
  • Cesium Token申请

    一 什么是Cesium ion Cesium ion是一个提供瓦片图和3D地理空间数据的平台 支持把数据添加到用户自己的应用程序中 二 为什么需要access token 使用Cesium ion需要申请access token 当用户将数
  • How To Reload the SYS.DBMS_STATS Package (文档 ID 1310365.1)

    APPLIES TO Oracle Server Enterprise Edition Version 9 2 0 1 to 11 2 0 2 Release 9 2 to 11 2 Information in this document
  • springmvc+sitemesh2+freemarker整合

    1 背景 最近在搭建自己的springmvc sitemesh2 freemarker框架时 遇到了一个问题 就是sitemesh2整合springmvc时 springmvc没有正确的渲染sitemesh2的模板页面 在一番百度之后 发现
  • Springboot +tk.mybatis+generator 自动生成Mapper xml 插件配置及 常见 错误 MapperException 、BaseSelectProvider

    1 新建sprintboot项目 先把需要的 选项勾选上 如Mysql jdbc web mybatis 等你需要的 这是第一步 如果你需要配置tk mybatis 你需要额外的导入 新的jar包 以及 pom xml 的 build 中p
  • mybatis 注解传入 list 集合

    这里写一个查询的sql语句 第一种方式 首先看 mapper SelectProvider type SqlModel class method listDeviceIndex Results value Result column ind
  • Python 设计模式 - 适配器模式

    精通Python设计模式第二版 第 4 章 适配器模式 学习笔记 适配器模式 适配器模式是一种结构型设计模式 能帮助我们使两个不兼容的接口兼容 假设我们想使用function a 作为接口 但是只有function b 则可以使用适配器将f
  • 理解全虚拟、半虚拟以及硬件辅助的虚拟化

    接触过的一些搞了几年云计算的童鞋 也没明白常见的几种虚拟机技术方案的异同 比如只是记住了半虚拟要在虚拟机装驱动而全虚拟不需要 也不知道有时候为什么需要打开BIOS里的VT项 本人呢 在看了各种讲解虚拟化的书籍之后 有些概念虽然不是很清晰 但
  • HashPasswordForStoringInConfigFile 已过时

    https blog csdn net ibenxiaohai123 article details 77453340 https docs microsoft com en us dotnet api system security cr
  • 【ES6】对象的扩展

    文章目录 一 对象的扩展 二 用法详解 1 属性的简洁表示 2 属性名表达式 3 Object is 4 扩展运算符与Object assign 5 in 6 对象的遍历方式 一 对象的扩展 属性的简洁表示法 属性名表达式 Object i
  • Qt-初识

    文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 一 是什么 Qt是一个由Qt Company开发的跨平台C 图形用户界面应用程序开发框架 它既可以开发GUI程序 也可用于开发非GUI程序 比如控制台工具