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

news2024/11/21 0:16:28

文章目录

前言

一、简单介绍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.coloradmin.cn/o/1798596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界

目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景&#xff1a;总结 谈及推荐系统&#xff0c;不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同&#xff0c;所谓协同&#xff0c;也就是群体互帮互助&#xff0c…

图解通用网络IO底层原理、Socket、epoll、用户态内核态······

LInux 操作系统中断 什么是系统中断 这个没啥可说的&#xff0c;大家都知道&#xff1b; CPU 在执行任务途中接收到中断请求&#xff0c;需要保存现场后去处理中断请求&#xff01;保存现场称为中断处理程序&#xff01;处理中断请求也就是唤醒对应的任务进程来持有CPU进行需要…

Mac 使用Docker安装Elasticsearch、Kibana 、ik分词器、head

安装ElasticSearch 通过docker安装es docker pull elasticsearch:7.8.1 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…

减调食谱攻略:美味低卡又健康

早餐主要求质&#xff0c;也就是求营养&#xff0c;更确切的说是“均衡的营养&#xff0c;多重的营养元素”确保每天早餐不重样就差不多了。 早餐主食&#xff1a;蛋羹、糖心水煮蛋&#xff0c;皮蛋瘦肉粥、南瓜粥、小米粥&#xff0c;蒸煮玉米、南瓜、芋头、红薯&#xff0c;…

深度神经网络——什么是深度强化学习?

除了无监督机器学习和监督学习之外&#xff0c;人工智能创造的另一种常见形式是强化学习。除了常规的强化学习之外&#xff0c; 深度强化学习 由于它结合了深度学习和强化学习的最佳方面&#xff0c;因此可以带来令人惊讶的令人印象深刻的结果。让我们具体看看深度强化学习是如…

李廉洋:6.6黄金原油怎么看?今日行情分析及最新策略。

黄金消息面分析&#xff1a;美指走强未能抑制金价升势。黄金价格大幅上涨&#xff0c;在美国公布喜忧参半的经济数据后&#xff0c;金价与周二的走势发生180度大转弯&#xff0c;这些数据可能保证美联储设定的借贷成本降低。美国10年期基准国债收益率下跌3个基点&#xff0c;至…

项目进度管理必备:15款最佳项目进度跟踪工具推荐

15好用的款主流项目进度管理软件&#xff1a;PingCode、Worktile、Trello、Tower、Asana、Smartsheet、Teambition、ClickUp、Wrike、Monday.com、Notion、禅道、飞书、云效、蓝凌。 严格的进度管理有助于更好地控制项目进展&#xff0c;提升团队效率&#xff0c;最终实现项目成…

Android音频进阶之1.0到14.0音频焦点变化(七十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

小白学linux | 使用正则表达式审计ssh登录ip地址

Ubuntu /var/log/auth.log记录了所有与身份验证相关的事件&#xff0c;包括SSH登录尝试 grep -i "failed password" /var/log/auth.log | \awk {if($11 ~/^[0-9]\.[0-9]\.[0-9]\.[0-9]$/)print $11 ; else print $13} | \uniq -c | sort -nr -k1 RedHat系发行版 /va…

MK米客方德 SD NAND与文件系统:技术解析与应用指南

随着数字存储技术的飞速发展&#xff0c;SD NAND(贴片式T卡&#xff09;已成为我们日常生活中不可或缺的存储工具。我们将深入探讨SD NAND的文件系统&#xff0c;特别是SD 3.0协议支持的文件系统类型&#xff0c;以及它们在实际应用中的作用和用户可能遇到的问题。 MK米客方德的…

微前端之旅:探索Qiankun的实践经验

theme: devui-blue 什么是微前端&#xff1f; 微前端是一种前端架构方法&#xff0c;它借鉴了微服务的架构理念&#xff0c;将一个庞大的前端应用拆分为多个独立灵活的小型应用&#xff0c;每个应用都可以独立开发、独立运行、独立部署&#xff0c;再将这些小型应用联合为一个完…

[pixi.js] 入门简单案例 简易时钟

老实说pixi虽然之前拿来做个几个简单的游戏&#xff0c;但是是好久前的了&#xff0c;又忘了&#xff0c;现在算是重新入门。 官网版本已经更新到v8去了&#xff0c;而react相关的pixi库pixi-react 虽然支持react18 但还是v6-v7的版本&#xff0c;既然已经看了v8的文档&#xf…

解决富文本中抖音视频无法播放的问题——403

问题 富文本中的抖音视频无法播放&#xff0c;资源状态码是403禁止访问打开控制台&#xff0c;可以看到在项目中打开&#xff0c;数据请求的请求头多了一个Referer: http://localhost:3000/而复制链接在新窗口直接打开&#xff0c;请求头中并不会携带Referer 解决方案 在ind…

书客护眼大路灯Sun再次引领先锋,守护青少年视力健康!

在这个信息化高速发展的时代&#xff0c;我们的眼睛承受着前所未有的压力。每年的护眼日&#xff0c;不仅是提醒我们关注眼睛健康的时刻&#xff0c;更是全社会共同努力&#xff0c;为青少年营造健康用眼环境的契机。 “守护明亮视界&#xff0c;预防近视从我做起”。随着国内青…

【Vue2源码学习分析】

# 文件结构 源码目录 # 调试环境搭建 安装依赖: npm i安装rollup: npm i -g rollup修改dev脚本&#xff0c;添加sourcemap&#xff0c;package.json "dev": "rollup -w -c scripts/config.js --sourcemap --environment TARGET:web- full-dev",运行开发命令…

SkyWalking之P0业务场景输出调用链路应用

延伸扩展&#xff1a;XX业务场景 路由标签打标、传播、检索 链路标签染色与传播 SW: SkyWalking的简写 用户请求携带HTTP头信息X-sw8-correlation “X-sw8-correlation: key1value1,key2value2,key3value3” 网关侧读取解析HTTP头信息X-sw8-correlation&#xff0c;然后通过SW…

Linux网络编程:网络层协议|IP

目录 前言&#xff1a; 1.IP协议 1.1.IP协议格式 1.2.网段划分 1.2.1.知识引入 1.2.2.IP地址划分和子网掩码 1.3.IP地址分类 1.3.1.特殊IP地址 ​编辑 1.3.2.私有IP和公网IP 1.3.3.浅谈NAT技术 1.4.路由 1.4.1.什么是路由 1.4.2.路由表 1.5.网络层数据切片和组装…

Allegro导入DXF文件

阿里狗导入DXF文件 点击File–>Import–>DXF&#xff0c;注意DXF file那边不能使用中文路径和文件名以及非法字符&#xff0c;DXF units一般为mm&#xff0c;结构那边一般都用mm制作图&#xff0c;右边三个选项只需要勾选中间那个&#xff0c;意思是以增加的形式导入&am…

jail管理器CBSD实践@FreeBSD

CBSD介绍 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具&#xff0c;用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。 虽然CBSD没有提供额外的操作系统级功能&#xff0c;但它极大地简化了…

Codeforces Round 951 (Div. 2) F. Kostyanych‘s Theorem(思维题 交互好题)

题目 交互题&#xff0c;n&#xff08;n<1e5&#xff09;个点的完全图&#xff0c;无向的&#xff0c;初始恰好删了n-2条边 每次询问可以输入一个d&#xff1a;? d 交互器会输出一个当前度>d的点v&#xff0c; 如果有多个这样的点&#xff0c;输出度最小的&#xff…