【QT5】<总览一> QT环境搭建、快捷键及编程规范

文章目录

前言

一、简单介绍QT

二、安装QT Creator

三、第一个QT项目

四、常用快捷键

五、QT中的编程规范


前言

在嵌入式Linux应用层开发时,经常使用QT作为图形化界面显示工具。为学习Linux下的QT编程,在Ubuntu和开发板中搭建QT开发环境,并记录学习中的知识点与代码。本篇基于Ubuntu 18.04和QT 5.12.9,参考教程视频:【正点原子】Qt教程。若存在版权问题,请联系作者删除!


一、简单介绍QT

1. QT简介

  • QT是一个跨平台的C++开发库,主要用于开发图形用户界面(GUI)。
  • QT官网:https://www.qt.io/
  • QT下载网址:http://download.qt.io/archive/qt/
  • QT5新功能介绍:https://doc.qt.io/qt-5/qt5-intro.html

2. QT历史

  • 起源:Haavard Nord和Eirik Chambe-Eng于1991年开始开发Qt
  • 公司:1994年创立公司,最早名为Quasar Technologies,然后更名为TrollTech,再改为Trolltech,中文名为“奇趣科技”。
  • 版本:2020年发布Qt6。

二、安装QT Creator

1. QT Creator:是QT开发的集成开发环境(IDE)。

2. Windows安装QT Creator:跟随视频教程windows下安装QT Creator。

3. Ubuntu安装QT Creator:考虑磁盘空间有限,只在Ubuntu中安装了QT。

①打开Ubuntu终端,使用wget命令下载QT 5.12.9的qt-opensource-linux-x64-5.12.9.run

wget https://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run

②添加可执行权限:

chmod +x qt-opensource-linux-x64-5.12.9.run

③使用sudo安装,这样会安装在/opt 目录下:

sudo ./qt-opensource-linux-x64-5.12.9.run

④点击Ubuntu右上角,turn off网络再安装,可以跳过QT账号信息。

⑤安装时选择常用的组件即可,否则会占用大量空间,如下图所示。

⑥点击Ubuntu左下角,双击QT Creator打开,如下图所示。

4. 配置QT Creator配置中文:Ubuntu下配置Qt Creator输入中文。

5. Ubuntu中C++环境配置:

①前置说明:若在QT Creator新建c++工程后,无法正常编译,就是缺少相关指令,需要安装g++和相关库。

②安装指令:

sudo apt-get install gcc g++
sudo apt-get install lsb-core lib32stdc++6

③测试结果:


三、第一个QT项目

1. 新建项目:

  • 可以参考正点原子的文档。
  • 具体流程:点击"文件"--->"Application (Qt)"和"Qt Widgets Application"--->设置项目名称和地址--->选择"qmake"--->选择基类"QMainWindow"或"QWidget"(前者有标题和状态栏,后者是单个界面)--->一直下一步即可。
  • Cannot find -lgL报错解决:在终端输入如下指令:
  • sudo apt-get install libglu1-mesa-dev

2. 项目文件介绍:

3. 程序启动流程:

在创建一个项目,自定义窗口类为MyWindow后,QT会生成main.cpp、mywindow.cpp、mywindow.h、mywindow.ui文件,解下来我们逐一分析。

①main.cpp:

#include "mywindow.h"
#include <QApplication>

//main函数是程序入口
//argc是命令行参数个数,argv保存参数
int main(int argc, char *argv[])
{
    //QApplication a(argc, argv):管理QT程序运行并设置QT应用程序,针对QWidget
    //QGuiApplication a(argc, argv):管理QT程序运行并设置QT应用程序,针对非QWidget
    //QCoreApplication a(argc, argv):管理QT程序运行并设置QT应用程序,针对无界面程序
    QApplication a(argc, argv);
    MyWindow w; //实例化的对象
    w.show();   //显示图形化窗口
    //事件循环,底层调用QEventLoop::exec(),等待鼠标或键盘输入
    return a.exec();
}

②mywindow.h:

#ifndef MYWINDOW_H
#define MYWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MyWindow; }
QT_END_NAMESPACE

//自定义的MyWindow继承了QMainWindow类
class MyWindow : public QMainWindow
{
    //宏定义:涉及QT信号槽
    Q_OBJECT

public:
    MyWindow(QWidget *parent = nullptr);//构造函数
    ~MyWindow();//析构函数

private:
    Ui::MyWindow *ui;//成员变量:绑定图形化窗口
};
#endif // MYWINDOW_H

③mywindow.cpp:

#include "mywindow.h"
#include "ui_mywindow.h"

//MyWindow构造函数的具体实现
MyWindow::MyWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MyWindow)
{
    ui->setupUi(this);
}

//MyWindow析构函数的具体实现
MyWindow::~MyWindow()
{
    delete ui;
}

④mywindow.ui:用于ui设计,可以创建精美的ui界面。如下图,可以拖动左边的控件到中间的界面上,同时在右边属性栏设置坐标、字体大小和颜色等属性。


四、常用快捷键

【1】新建项目:Ctrl+N

【2】自动对齐代码:Ctrl+I

【3】移动代码至上一行/下一行:Ctrl+Shift+UP/Ctrl+Shift+DOWN

【4】跳转到上一行/下一行:Ctrl+Shift+Enter/Ctrl+Enter

【5】切换头文件和源文件:F4

【6】查看某个类的父类和子类:Ctrl+Shift+T


五、QT中的编程规范

  • 文件名:全小写
  • 类名:大驼峰XxxYyyZzz
  • 函数名:小驼峰xxxYyyZzz
  • 变量名:小驼峰xxxYyyZzz

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

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

相关文章

纠偏控制比例换向阀放大器

纠偏控制比例换向阀放大器是一种用于提高工业自动化控制系统精度和可靠性的关键组件。在现代工业生产中&#xff0c;精确控制生产线上材料的运行轨迹对于确保产品质量和提高生产效率至关重要。伺服阀根据接收到的信号推动设备进行相应的移动&#xff0c;直到材料边缘回到目标位…

推荐低成本低功耗的纯数字现场可重构IC

CPLD采用CMOS EPROM、EEPROM、快闪存储器和SRAM等编程技术&#xff0c;从而构成了高密度、高速度和低功耗的可编程逻辑器件。 RAMSUN提供的型号LS98003是通用可配置的数字逻辑芯片&#xff0c;有体积小、超低功耗和高可靠性等特点。客户可以根据自己的功能需求设计芯片&#x…

中介模式实现聊天室

中介者模式的核心逻辑就是解耦对象‘多对多’的相互依赖关系。当遇到一大堆混乱的对象呈现“网状结构”&#xff0c;利用通过中介者模式解耦对象之间的通讯。 代码案例 抽象中介类 public abstract class AbstractChatRoom {public abstract void notice(String message , Us…

复合材料数据整合与自动识别抽取系统

概述&#xff1a;为材料行业的研发提供自动化数据整合与识别抽取系统&#xff0c;以降低研发成本、提升效率并推动行业智能化转型。 客户背景 在复合材料行业中&#xff0c;信息的获取和整合是一个复杂且成本高昂的过程。由于该行业的数据分散在各种文献、报告、网站等渠道&am…

【Web API DOM02】如何获取、操作DOM元素

一&#xff1a;获取DOM元素 1 根据CSS选择器获取 语法格式如下&#xff1a; &#xff08;1&#xff09;选中一个DOM元素 document.querySeletor(CSS选择器) <ul><li>1</li><li>2</li><li>3</li> </ul> document.querySel…

对人脸图像进行性别和年龄的判断

判断性别和年龄 导入必要的库加载预训练的人脸检测模型加载预训练的性别和年龄识别模型定义性别和年龄的标签列表创建Tkinter窗口&#xff1a;定义选择图片的函数&#xff1a;创建一个按钮&#xff0c;用于打开文件选择对话框定义显示图片的函数创建预测性别和年龄的函数创建预…

员工转正申请精选12个模板供参考

随着社会在不断地进步&#xff0c;我们会经常使用各种各样的申请书&#xff0c;转正申请书就是申请书的一种&#xff0c;那么转正申请书是怎么写的呢&#xff1f;下面是我收集整理的员工转正申请书几个版本&#xff0c;仅供参考&#xff0c;希望能够帮助到大家。别忘了一键三连…

入门到实践,手把手教你用AI绘画!

前言 一款无需魔法的PS插件&#xff01;下载即用&#xff0c;自带提示词插件&#xff0c;无论你是小白还是大神都能轻松上手&#xff0c;无配置要求&#xff0c;win/mac通通能用&#xff01; AI绘画工具——StartAI 官网&#xff1a;StartAI官网 (istarry.com.cn) 近段时间…

Vue3+vite+Tailwindcss 构建自适应页面 暗黑 高亮 主题

资源tailwind css&#xff1a;Tailwind CSS Templates - Tailwind UITailwind CSS Templates - Tailwind UITailwind CSS Templates - Tailwind UI 1、安装tailwindcss npm install -D tailwindcss postcss autoprefixer2、安装配置&#xff1a; npx tailwindcss init -p 运…

Python使用trule库画小猪佩奇

在这篇博客中&#xff0c;我将向大家展示如何使用Python的Turtle模块来绘制一个可爱的小猪佩奇。这个项目不仅可以帮助你熟悉Turtle绘图&#xff0c;还可以让你在编程的过程中享受到绘画的乐趣。 并非百分百原创&#xff0c;有部分参考其他博主&#xff0c;请理性对待&#xff…

抖音小店怎么找厂家代发?从沟通到发货,全流程不容错过!

哈喽~ 我是电商月月 新手做抖音小店&#xff0c;无货源模式的商家不知道怎么找货源&#xff1f; 今天月月就给大家讲解一下抖音小店从找厂家&#xff0c;到和厂家沟通&#xff0c;最后协商发货的方法步骤都有哪些&#xff1f; 满满干货&#xff0c;不容错过&#xff0c;建议…

库卡机械手伺服电机过压报警维修措施

一、KUKA机械手伺服电机过压报警原因库卡机器人电机过压报警通常是由于电机供电电压过高、电机绕组短路、电机负载过大等原因引起的。当电机供电电压超过额定电压一定范围&#xff0c;或者电机绕组出现短路故障&#xff0c;或者电机负载过大导致电流过大时&#xff0c;电机电流…

头颈肿瘤在PET/CT中的分割:HECKTOR挑战赛| 文献速递-深度学习肿瘤自动分割

Title 题目 Head and neck tumor segmentation in PET/CT: The HECKTOR challenge 头颈肿瘤在PET/CT中的分割&#xff1a;HECKTOR挑战赛 01 文献速递介绍 高通量医学影像分析&#xff0c;常被称为放射组学&#xff0c;已显示出其在揭示定量影像生物标志物与癌症预后之间关…

Unity 自定义编辑器根据枚举值显示变量

public class Test : MonoBehaviour {[HideInInspector][Header("数量")][SerializeField]public int num;[Header("分布类型")][SerializeField]public DistributionType distType;[HideInInspector][Header("位置")][SerializeField]public Li…

LLaMA-Factory实战推理

LLaMA-Factory官网&#xff1a;https://github.com/hiyouga/LLaMA-Factory 安装环境 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310按照llama-factory要求的标准格式组织数据集&#xff…

汽车分销商文件流转优化:实现稳定高效的文件分发处理

在汽车圈里&#xff0c;分销商可是个不可或缺的角色。他们既要跟汽车厂家紧紧绑在一起&#xff0c;还得跟下游的销售渠道或者直接跟消费者打成一片&#xff0c;文件来回传递那是家常便饭。 这文件发放的速度快不快&#xff0c;安不安全&#xff0c;直接影响到分销商做事的效率…

收到“由于找不到emp.dll无法继续执行代码”错误提示时有什么解决办法?分享emp.dll丢失的修复方法

当你收到“由于找不到emp.dll无法继续执行代码”的错误时&#xff0c;意味着你想要运行的程序依赖于名为“emp.dll”的动态链接库&#xff08;DLL文件&#xff09;&#xff0c;但系统无法在指定的位置或默认搜索路径中找到这个文件。 emp.dll文件的详细介绍 emp.dll是一个重要…

vue3【实战】可撤销重做的 input 输入框

效果预览 实现思路 用 list 数组保存每次输入后输入框的值&#xff08;响应 input 事件&#xff09;用 indexRef 作为指针&#xff0c;指向当前 list 数组中对应当前输入框的值撤销时&#xff0c;指针左移重做时&#xff0c;指针右移输入时&#xff0c;对 list 数组按指针1做截…

(函数)分类统计字符串中不同类型的数量(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明分类统计函数&#xff1b; void statistics(char a[100]);int main() {//初始化变量值&#xff1b;char a[100] { 0 };//获取用户输入数据&#xff1b;pr…

电脑记事本怎么恢复之前的内容记录

每个人都曾有过这样的时刻——在记事本上精心记录下的重要内容&#xff0c;一不小心就被删除了。那种心情&#xff0c;仿佛一瞬间从山顶跌落到谷底&#xff0c;无尽的懊悔涌上心头。我也曾遭遇过这样的困境&#xff0c;那些消失的文字对我来说意义非凡&#xff0c;它们的丢失仿…