初学Qt(一)

如果是一个小白,那么该如何学习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)。打印下结果如下图:

本文分享自微信公众号 - Pou光明(pou0230),作者:PouG

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初学Qt(二) 中高级功能列举

    上一次和大家聊了聊Qt的三大基类,信号和槽的使用以及重新实现一些事件等话题。如果在学习Qt之前有一定的C语言编程,可能对响应界面操作还会有些不习惯。这次聊一聊Q...

    用户5908113
  • Windows10下Qt程序打包发布 (与配置环境变量)

    当初对程序还很懵懂的时候(现在是蒙圈),就很想知道程序是怎么被打包发布的。虽然现在还不会制作安装包,但是在Qt官方提供的工具下,可以制作Windows下Qt的“...

    用户5908113
  • Qt项目之高亮关键字Python编辑器实现

    之前大部分内容在写Qt一些小部件以及基础模块的用法,不成体系,大部分时候还是用什么找什么。随着对Qt的逐渐熟悉,应该做一些项目,这样可以在实际应用的过程中加深对...

    用户5908113
  • Qt 5.14版本正式发布(带下载链接)

      我们今天(2019-12-12)发布了Qt 5.14。该版本以及明年的Qt 5.15 LTS开始为通向Qt 6铺平道路。

    Qt君
  • Qt 6的技术概览

    本文转载自Qt 6的技术概览 原文:Technical vision for Qt 6 原作者:Lars Knoll 翻译校对:Richard Lin 自从七...

    ccf19881030
  • 【技术创作101训练营】Qt也是一种选择

    提到Qt,大多数人可能不知道,但是你一定知道C/C++,我们刚学习C/C++,运行界面是黑框框,那么当你C/C++学习到一定程度,有没有想过怎么把黑框框变成好看...

    花狗Fdog
  • Qt widget vs Qt Quick

    并不是说web语言不好, 我很喜欢web, 从一开始学习html到后来入坑nodejs可以说web领域给我带来了很多的见识同时还payed my bil...

    Jean
  • Qt6的安装以及相关资料

    QT6从2020年12月8号就开始发布了,具体可以参考Qt 6.0 Released这篇博客,如下图所示:

    ccf19881030
  • Qt配置使用VS2010进行开发

    它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。

    阳光岛主
  • QT Creator 快速入门教程 读书笔记(一)

    一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入...

    用户1198337

扫码关注云+社区

领取腾讯云代金券