首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初学Qt(一)

初学Qt(一)

作者头像
用户5908113
发布2019-09-25 15:36:33
1.8K0
发布2019-09-25 15:36:33
举报
文章被收录于专栏:Pou光明Pou光明

如果是一个小白,那么该如何学习Qt呢?接下来我从自己的学习经历中总结一下,希望对初学Qt的同志能有一点儿帮助。

一、初识Qt——信号和槽、跨平台开发框架

首先要知道的是Qt是基于C++的跨平台应用程序开发框架,所谓跨平台就是你在Windows下写的程序放在Linux下也能用,而且图形化风格也会随着系统的改变而改变。此外它拥有大量的组件,以方便和加速开发过程,如它的IDE(集成开发环境)—— Qt Creator、Qt Designer、Qt Assistant等,还有很多,不一一列举。除此之外,提到Qt我们可能最先想到的就是信号和槽——它为我们提供了一种方便对象间通讯的机制。举个例子,你的应用程序界面有个按钮,你想让它在被按下后弹出一个Qt入门程序Demo与讲解的对话框,

可能对于初学者而言还是有点蒙圈,不过没关系,现在知道Qt能跨平台、有一个独特的信号和槽的机制就可以了。

二、应用程序类型与三大界面基类

Qt开发环境搭建完成后,我们会建立自己的工程(工程就是Qt会把预处理、编译、汇编、链接等工作搞定),之后写下第一个关于Qt的程序。在创建工程这块,我要说的是要了解Qt提供的一些模板:如左侧第一个默认的是应用程序,第二个是创建库模板。在右侧,创建应用程序可以是窗体程序或是控制台程序(没有图像化界面),其他的类型没有使用过,不做介绍。如果左侧选择的是Library模板,对应右侧会是不同的选项。

以我们常用的应用程序和窗体程序为例,必须要继承三大基类中的一个。他们分别是QMainWindow、QWidget、QDialog。MainWindow带有菜单条,工具条和一个状态条的主应用程序窗口;Widget是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元 ;Dialog是对话框窗口的基类,对话框窗口主要用于短期任务和用户进行短期通讯的顶级窗体。下方Generate form默认是勾选的,也就是创建.ui文件。不是很懂?没关系,每次建工程都会选,选着选着就会有感情了。

三、Qt控件概述与应用举例

Qt的控件有很多很多,直到现在我也有很多没有用过。说到这,提一下,我们可以使用Qt Designer的快速设计和布局各种窗体部件,也可以使用纯代码进行窗体设计。初学者建议先使用Designer进行设计。

开启PPT模式:

Layouts:布局器,垂直、水平、栅格布局等方式

Buttons:各种按钮,单选按钮、多选按钮、对话框按钮等

Item Views:Qt Model/View的显示部分,列表、树、表格等,使用时需要通过Model设置数据源

Item Widgets:Model/View的简便类,可直接进行增删改查等功能

Containers:容器,很常用。。。常用到可能会单独说一说。

Input Widgets:输入窗体,可以自己继承里面的Plain Text Edit或Text Edit控件自己实现一个文本编辑器

Display Widgets:显示窗体。

这块通过一个小Demo串几个知识点:信号和槽,控件的简单使用,如何根据自己的功能去查找文档以及有一点难度的应用。总共三小部分:

①点击一个按钮,弹出一个标题为“闲鱼搜索”的通知对话框,

对话框为HTML样式的“Qt入门程序与Demo讲解!!!”。这个是通

过信号和槽实现的。

②Input Widgets下的lineEdit,通过Qt帮助文档查找一些信号和槽。

Linux 下Qt Assistant 在Qt安装目录/opt/Qt5.5.1/5.5/gcc/bin下

③lineEdit本身没有鼠标点击焦点的信号发出,我想在编辑框被点

击时得到信号,该如何操作?

①打个广告。。

这里面可以设置HTML样式的显示。

 QMessageBox::information(this,tr("闲鱼搜索"),
                             tr("<font color=red><h2>Qt入门程序
与Demo讲解!!!</h2></font>")) ;

②lineEdit 帮助文档阅读

紫色部分是该类需要包含的头文件、模块以及它的基类

点击上边图片那个More,找到了几个信号,我们试一下。这里面提下,Qt调试信息输出需要包含QDebug类,使用qDebug()输出。我们看到字符改变会立即将信号传递到槽中输出,按下回车键后对应的槽也进行了响应。挺好玩的。

③如何获取点击lineEdit编辑框的通知(定制自己想要的功能)

lineEdit编辑框被点击时是没有信号发出的,若想得到这个通知,有两种方式:

一是继承QLineEdit,自己重新实现鼠标点击事件,二是使用事件过

滤器。下面我们以事件过滤器为例:

lineEdit安装事件过滤器,重新实现eventFilter(QObject

*watched, QEvent *event)。打印下结果如下图:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档