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

01 qt快速入门

作者头像
天天Lotay
发布于 2023-10-15 10:33:18
发布于 2023-10-15 10:33:18
32600
代码可运行
举报
文章被收录于专栏:嵌入式音视频嵌入式音视频
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kotlin | 2.Kotlin基础
在定义了val变量的代码块执行期间,val变量只能进行唯一一次初始化。但是,如果编译器能确保只有唯一一条初始化语句被执行,可以根据条件使用不同的值来初始化它:
Jingbin
2019/03/29
7510
Kotlin | 2.Kotlin基础
Kotlin与Java的异同(一)
Kotlin是一种针对Java 平台的新编程语言。Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务端开发、Android应用等等。Kotlin 可以很好地和所有现存的Java库和框架一起工作,而且性能和Java旗鼓相当。
全栈程序员站长
2022/09/08
1.9K0
Kotlin实战【三】表示与选择
你会发现kotlin中使用enum同时还要使用class这与java中不同,思考下这是为什么?
先知先觉
2019/01/21
6640
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
人与人之间通过语言来交流沟通,互相协作。人与计算机之间怎样“交流沟通”呢?答案是编程语言。一门语言有词、短语、句子、文章等,对应到编程语言中就是关键字、标识符、表达式、源代码文件等。通常一门编程语言的基本构成如下图所示
一个会写诗的程序员
2018/08/17
2.7K0
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
Kotlin | 一份10万字的随查笔记,妈妈再也不担心我不会Ctrl+F了
关于Kotlin相关记录,如果有意查看我的github,其超10w字(其中8w是代码吗,哈哈)。。
Petterp
2022/03/18
2.9K0
Kotlin | 一份10万字的随查笔记,妈妈再也不担心我不会Ctrl+F了
Kotlin for Java Developers 学习笔记
Kotlin 被编译为 Java 字节码,所以从 Java 代码的层面看,这两者是一样的,都有一个 Constructor 和两个 Getter
凝神长老
2020/12/14
1.8K0
Kotlin for Java Developers 学习笔记
《Kotlin极简教程》第3章 Kotlin语言基础第3章 Kotlin语言基础《Kotlin极简教程》正式上架:参考资料
学习任何东西,都是一个由表及里的过程。学习一门编程语言也一样。对于一门编程语言来说,“表” 就是基本词汇(关键字、标识符等)、句子(表达式)和语法。
一个会写诗的程序员
2018/08/17
1.7K0
《Kotlin 程序设计》第四章 Kotlin 语法基础
Kotlin 可以省略变量定义的类型声明,但是在定义参数列表和定义返回值类型时则必须明确指定类型(这个类型推断Kotlin居然没做,这地方用起来比Scala,Groovy要繁琐点)。
一个会写诗的程序员
2018/08/17
1.5K0
Kotlin基础
与Java中不一样,kotlin中 “==” 和 equals() 一样,equals( , true)是忽略大小写
用户9854323
2022/06/25
3330
Kotlin基础
Kotlin 基础语法
以上例中 test() 的全名是 com.runoob.main.test、Runoob 的全名是 com.runoob.main.Runoob。
zhangjiqun
2024/12/16
1210
kotlin基础语法
最近在学kotlin,这是本人看菜鸟教程后所做的笔记,很多会内容和菜鸟教程重复,仅供参考
HelloJack
2018/10/25
2.1K0
开心档-Kotlin 基础语法
以上例中 test() 的全名是 com.kxdang.main.test、Runoob 的全名是 com.kxdang.main.Runoob。
爱学iOS的小麦子
2023/02/08
6940
浅谈Kotlin中的函数
Kotlin,已经被Android官方宣布 kotlin first 的存在,去翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin。Kotlin的务实作风,提供了很多特性帮助开发者减少冗余代码的编写,可以提高效率,也能减少异常。
2020labs小助手
2019/11/04
2.6K0
Android:这是一份全面 & 详细的Kotlin入门学习指南
点击Android Studio Preference -> Plugins -> 搜索Kotlin Languages插件
Carson.Ho
2020/01/13
2.9K0
Android:这是一份全面 & 详细的Kotlin入门学习指南
From Java To Kotlin 2:Kotlin 类型系统与泛型终于懂了
上期主要分享了 From Java To Kotlin 1 :空安全、扩展、函数、Lambda。
Seachal
2023/06/06
4830
From Java To Kotlin 2:Kotlin 类型系统与泛型终于懂了
Kotlin学习笔记(二)-程序结构(上 )
上节我们主要讲了Kotlin的数据类型,这节我们主要从程序结构,包括方法,类成员,运算符的角度去认识Kotlin
g小志
2019/12/19
6390
Kotlin实战【二】Kotlin基本要素
本章我们将学习怎么用kotlin声明任何程序都存在的基本要素:变量、函数、类以及属性的概念
先知先觉
2019/01/21
1.2K0
Kotlin热身篇: 简介与基本用法
改不完的 Bug,写不完的矫情。公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域;只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. kotlin 简介 Kotlin 拥有强大的生态,因为 Kotlin 是一门跑在 Java 虚拟机上的函数式语言,完全符合 JVM 的设计规范,如: 类型擦除,装箱和拆箱等等。所以也可以像 Java 一样支持 Android 原生环境开发,服务端,甚至大前端方向。那么 Kotlin 和 Java 有什么共同点
小木箱
2020/11/25
1.6K0
《Kotlin 程序设计》第十二章 Kotlin的多线程
Kotlin 1.1 introduced coroutines, a new way of writing asynchronous, non-blocking code (and much more). In this tutorial we will go through some basics of using Kotlin coroutines with the help of the kotlinx.coroutines library, which is a collection of helpers and wrappers for existing Java libraries.
一个会写诗的程序员
2018/08/17
3.3K0
Kotlin系列一:基础知识快速入门
Android 1.5系统中Google 引入了NDK功能,支持使用C和C++语言来进行一些本地化开发。
许进进
2022/01/08
8350
推荐阅读
相关推荐
Kotlin | 2.Kotlin基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验