前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >01 qt快速入门

01 qt快速入门

作者头像
天天Lotay
发布于 2023-10-15 10:33:18
发布于 2023-10-15 10:33:18
32610
代码可运行
举报
文章被收录于专栏:嵌入式音视频嵌入式音视频
运行总次数:0
代码可运行

一 qt介绍

1.基本概念

1991年由Qt Company(奇趣)开发的跨平台C++图形用户界面应用程序开发框架,GUI程序和非GUI程序。优点:一套源码在不同的平台通过不同的编译器进行编译,就可以运行到该平台上目标机。面向对象的封装机制来对其接口封装。

  1. GUI —图形用户界面(Graphical User Interface),它的思想是基于MVC设计模式
  2. MVC ----- M —model — 看作是数据的封装模型
  3. V — View ---- 看作显示数据的控件
  4. C --Control ---- 处理M和V之间关联
  5. MMI — 人机交互(Man Machine interface)

Qt 提供了一种称为 signals/slots(信号和槽) 的安全类型来替代 callback(函数回调),这使得各个元件之间的协同工作变得十分简单。 各个元件 ----- 其实就是我们的控件,比如:文本控件 按钮控件 他们之间可以通信信号和槽来通信

2. 应用
  1. 桌面应用开发(比如:wps) MSVC ---- 微软的IDE集成开发:C++ qt SDK ---- Software Development Kit(软件开发工具集)
  2. 数据库(sqlite mysql)
  3. 嵌入应用软件开发

二 、Qt的第一个程序

第一步:创建项目

第二步:设置项目名和路径 ---- 跟C++创建项目一样 第三步:选择下一步

第四步:选择窗口界面的基类 ----- 基于图形窗口界面

建议:界面的基类通常选择QMainWindow

第五步:项目结构

第六步,编译程序并运行 ----- 跟C++编译一样,但是,编译出来的是用户界面,不是控制台 对于一个空的窗口就相当于一块画板,工程师可以根据自己项目需求,绘制自己界面

补充:如果在创建项目过程中,未勾选生成.ui文件,可以通过后续的操作来增加,比如: 第一步:右击项目 ----> new

根据需求,选择对应的模板设计,再点击选择按钮,进行下一步。 第二步:根据界面的基类类型,选择对应的模板

第三步:点击下一步,设置ui文件的名字

第四步:可以在ui文件中,进行界面设计,在设计结束后,当程序编译时,编译器会将ui文件编译成以ui_为前缀的头文件,编译器的编译目的是为了在代码中,可以使用ui文件上的控件,该头文件的路径位于(build-*****************目录下/ui_文件名.h),比如:build-qt_day1_2_project_noui-Desktop_Qt_5_14_2_MinGW_32_bit-Debug ui_AddWindow.h

编译器在帮助程序设计一个ui类,程序员只需要手动进行UI设计就可以

第五步:可以在源程序中,使用头文件并且使用头文件中类中的成员 详细步骤见代码 比如: 1)

2)

第七步:应用开发 编译模式 和UI界面模式切换

第八步:入口程序结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main(int argc, char *argv[])
{
    //[1] 在栈上创建一个QApplication对象a,QApplication它就是代表着qt一个应用程序
    QApplication a(argc, argv);
    //[2] 创建一个MyFirstWindow界面对象w,
    MyFirstWindow w;
    //[3] 将界面显示出来
    w.show();

   // MyFirstWindow* p = new MyFirstWindow;
   // p->show(); //在入口程序处,不建议使用堆对象,内存泄露
   // return 0;
    return a.exec(); //相当于while(1)一直进行死循环,除非接收到关闭的命令
}

三 qt开发

1.界面设计 ---- 静态界面 ---- qt设计师(ui文件)

控件栏介绍:

关于控件的属性和对象名设置

对于属性而言,qt都会对应一个接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//ui->infoLabel->setGeometry() //set属性名()
   // ui->infoLabel->geometry(); // 属性名()
//ui->infoLabel->setFont()
   // ui->infoLabel->font();

以上的set/get方法,主要用于代码中,来对控件进行设置

QLabel控件

QLineEdit — 单行输入框

QPushButton

QWidget----- 窗口小部件 -----> 它是所有控件的基类

设置窗口的大小:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //在构造函数中,设置窗口的固定大小或者大小
    //this ---->MyFirstWindow
    //this->width() ----- 获得ui文件上窗口的宽
    //this->height() ----- 获得UI文件上窗口的高
    this->setFixedSize(this->width(),this->height());
2.动态交互 ---- 用户操作界面上的控件 — 信号和槽

在项目 增加信号和槽的方法一:在UI设计师中增加 第一步:右击控件,在弹出的对话框,

在下 拉列表中,选择"转到槽",会弹出选择对话框

第二步:选择自己信号 会自动生成槽函数(.h和.cpp) 第三步:当点击相应的控件时,对应的槽函数就会被调用,从面是实现动态交互的效果 在代码中,使用qDebug()需要增加的头文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <QtDebug>
void MyFirstWindow::on_loginButton_clicked()
{
     //在Qt中 ,使用qDEBUG来输出信息  qDebug()相当于C++中cout
    qDebug() << "on_loginButton_clicked----";

    //[1] 获取用户输入的用户名和密码  系统默认的密码和用户名  123456 root
    /*
    QString text() const  ---- 获得控件上的文本内容
    void setText(const QString &) ---- 重新给控件上设置文本内容
    对应的属性:text
    */
   QString user =  ui->userLineEdit->text();
   qDebug() << "user = " << user;
  // user = user + "user"; ok
   if(user=="root") //字符串相等比较
   {

   }
   //[2] 比较用户名和密码,如果相等,输出对应的信息,如果不相等 ,也输出对应的信息

}

3.功能设计 — 需求的定制开发

1 通过帮助文档使用,setPixmap ,setMovie 接口,在标签(QLabel)中显示一张图片(png,jpg) 和 动态图(gif)。

QLabel常用接口:

  1. QMovie *movie() const 获取当前label 显示的动态图
  2. const QPicture *picture() const 获取当前label 显示的 静态图
  3. const QPixmap *pixmap() const
  4. QString text() const 获取当前label 的文本内容
  5. void clear() //清空标签中的文本
  6. void setMovie(QMovie *movie) //设置标签的动态图
  7. void setNum(int num) //设置标签中的数值 整型
  8. void setNum(double num)//浮点型。

设置标签中的图片

  1. void setPixmap(const QPixmap &)
  2. void setText(const QString &) //设置标签中的文本
  3. hide() //隐藏当前标签
  4. show() //显示当前标签
  5. width() const : int //获取标签的宽度
  6. height() const : int //获取当前标签的高度
  7. x() const : int //获取标签的 X 轴位置
  8. y() const : int //获取标签的Y 轴位置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   //给标准设置一张图片
   // void setPixmap(const QPixmap &)  采用逆向分析
    QPixmap map("D:/GZFX2104/02Qt/DAY1/图片/1.png"); //用户 能提供的就是一个图片路径 可以使用绝对路径或者相对,但是,路径的分隔是以Linux为准
    //可以让图片按控件的大小来缩放显示
    map = map.scaled(ui->iconLabel->width(),ui->iconLabel->height());
    ui->iconLabel->setPixmap(map);

2 利用Qt帮助手册,学习以下类的构造函数的原型和属性的方法

  1. QLabel
  2. QLineEidt
  3. QPushButton
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
优秀
优秀
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
有这样一个需求,通过配置 QT,在 linux 下实现显示我所想要显示的图片,实现的方式是我可以在命令行将图片的路径作为入参传入进去,从而对其进行显示,在之前的文章中已实现了在板子上运行 QT5 程序,此需求要自己写个 QT 程序,且需要对 buildroot 进行裁剪支持一些常用的图片格式即可。
Gnep@97
2023/08/10
6180
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
2.4默认创建有窗口类,yWidget,基类有三种选择:QWidget、QMainWindowQDialog
Arya
2024/10/31
5070
QT入门学习——从信号和槽到对话框,各种控件以及自定义控件
二、Qt定时器与文本编辑器制作《QT 入门到实战》
在 Qt 中使用 Label 可以显示文本,但 Label 不止可以显示文本,还可以用于图片的显示。
1_bit
2022/12/18
1.1K0
二、Qt定时器与文本编辑器制作《QT 入门到实战》
Qt学习:QLabel的用法及其程序示例
1.void setText(QString); //设置label框内的文本. 2.void hide(); //隐藏label框. 3.void setBuddy(QWidget*); //把另一个部件设为label框的伙伴,方便快捷使用. 4.void clear(); //清空label框内所有内容. 5.void setPixmap(QPixmap(QString)); //设置图片. 6.void setMovie(QMovie*); //设置电影. 7.void setScaledContents(bool); //设置是否按比例填充满整个label框(非常重要) 8.void setToolTip(QString); //设置信息提示,鼠标放在label框上面会自动跳出文字. 9.void setToolTipDuration(int); //设置信息提示的持续时间,单位是毫秒. 10.void setAlignment(Qt::Alignment); //设置label框的对齐格式. 11.void setStyleSheet(QString); //设置label框的样式.
全栈程序员站长
2022/08/03
1.9K0
Qt学习:QLabel的用法及其程序示例
【C++】Qt:QWidget介绍与注册登陆界面示例
QWidget 是 Qt 框架中的一个基类,用于创建用户界面的可视化组件。它是所有用户界面组件的基础,包括窗口、对话框、按钮、文本框等。QWidget 提供了一组通用的功能和属性,以及与用户交互的事件处理机制。
DevFrank
2024/07/24
7510
【C++】Qt:QWidget介绍与注册登陆界面示例
Qt入门系列(五)
新建一个class C++: MyCoin,简称mc,继承QWidget ,将其修改为继承于QMyPushButton
用户9831583
2022/06/16
9520
Qt入门系列(五)
【QT】Qt 窗口 (QMainWindow)
QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。QMainWindow 包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow 中 各组件所处的位置:
YoungMLet
2024/07/16
4330
【QT】Qt 窗口 (QMainWindow)
Qt实战:云曦日历篇
自国务院印发《推进普惠金融发展规划(2016—2020年)》通知以来,各省、自治区、直辖市人民政府、国务院各部委各直属机构积极响应,认真贯彻执行,普惠金融发展已经进入了高潮阶段,各大互联网公司和高校紧跟时代潮流,推出了各种创新性产品和软件,该软件作为一款以培养兴趣,提高学生软件项目的编程项目能力为目的,所创建的一款实用性的软件,以日历为依托,创建了许多相关的特效,优美界面和天气查询、日程管理等实用性功能,且界面等均符合当下青少年的审美需求,是一款紧跟潮流的日历软件
灵彧
2022/10/31
1.5K0
Qt实战:云曦日历篇
[Qt] 基于 Qt 的文件选择与图片显示功能实现
在这篇博客中,我们将带领 Qt 的初学者一步步实现一个简单的图片选择与显示功能,并逐渐优化代码,从最基础的版本开始,逐步添加更多的功能。本文中使用了 Qt 中多个重要的类和函数,例如 QFileDialog、QSettings、QPixmap 等。文章为每个版本的实现进行详细讲解,帮助更好地理解 Qt 的使用。
DevKevin
2024/10/06
4470
QT的基本知识「建议收藏」
QT是一个跨平台应用程序和UI开发框架。具体的安装以及源文件的下载这里不详细介绍。 要在QT界面上添加一个按钮,可以有两种方法:一个是直接拖放一个按钮即可;另一种则是通过程序来添加一种按钮。
全栈程序员站长
2022/08/29
6350
QT的基本知识「建议收藏」
【QT】事件系统入门——QEvent 基础与示例
事件本身是 操作系统提供的 机制,Qt 也同样把操作系统事件机制进行了封装拿到了 Qt 中,但由于 事件 对应的代码编写起来不方便,因此 Qt 对于事件机制 又进行了进一步的 封装,就得到了 信号槽
IsLand1314
2025/03/14
1160
【QT】事件系统入门——QEvent 基础与示例
Qt入门教程---项目创建全过程&内存泄漏解释
之前的这个教程里面已经介绍了这个qt里面的项目的创建过程以及创建出来的这个代码的一些说明
阑梦清川
2025/02/24
710
Qt入门教程---项目创建全过程&内存泄漏解释
初识Qt · 信号与槽 · 自定义和参数
目前接触到的函数是connect,当我们使用的时候,我们发现connect关联的信号和槽,即便是函数,也是Qt中已经存在的,即内置函数,那么我们是否能够自己自定义信号或者说是自己自定义槽函数呢?
_lazy
2025/03/07
1310
初识Qt · 信号与槽 · 自定义和参数
Qt学习(二)------实例mynotepad制作
最近在看高老师的视频教程,自己跟着做了一个txt编辑器,功能很简单,能实现编辑,保存,撤销,复制粘贴等基础功能;关于那边有一些特效
致Great
2023/08/26
2100
Qt学习(二)------实例mynotepad制作
Fdog系列(五):使用Qt模仿QQ实现登录界面到主界面,功能篇。
Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
花狗Fdog
2021/05/06
3.2K0
QT入门学习——从鼠标事件,定时器事件到绘图学习,绘图设备
Arya
2024/11/06
2220
QT入门学习——从鼠标事件,定时器事件到绘图学习,绘图设备
1. qt 入门-整体框架[通俗易懂]
总结: 本文先通过一个例子介绍了Qt项目的大致组成,即其一个简单的项目框架,如何定义窗口类,绑定信号和槽,然后初始化窗口界面,显示窗口界面,以及将程序的控制权交给Qt库。
全栈程序员站长
2022/09/20
1.7K0
1. qt 入门-整体框架[通俗易懂]
【QT】编写第一个 QT 程序 & 对象树 & Qt 编程事项 & 内存泄露问题
① 创建好一个项目后,我们可以点击 widget.ui 进入图形化界面设计,可以直接通过拖拽的方式进行添加
IsLand1314
2024/12/20
1630
【QT】编写第一个 QT 程序 & 对象树 & Qt 编程事项 & 内存泄露问题
学习 QT 过程中的一些笔记
学习 QT 时候做的一些笔记 目录 目录 按钮常用控件 API QT 窗口体系 信号和槽 点击按钮关闭窗口 自定义信号和槽 当自定义信号和槽出现重载 无参信号和有参信号与槽连接 Lambda 表达式 利用 Lambda 表达式实现点击按钮关闭窗口 QMainWindow 菜单栏 工具栏 状态栏 标签控件 浮动窗口 核心部件 资源文件 对话框 话框分类: 标准对话框 其他标准对话框 界面布局 控件 按钮组 QListWidget 列表容器 按钮常用控件 API QPushButton * btn = new
HauHau
2022/01/12
1.2K0
Qt项目DeskGirl开发
不能播放gif,太大了,给个静态图片吧,实际上桌面壁纸是动态的,人物也是动态的,可自定义桌面壁纸,有默认的数字时钟壁纸
DeROy
2020/07/28
9770
Qt项目DeskGirl开发
推荐阅读
相关推荐
荔枝派Zero(全志V3S)基于QT实现在LCD显示图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验