当前位置: 首页 > news >正文

QT 第三讲 --- 基础篇 初用信号槽与命名规范

前言:

欢迎来到《QT 第三讲——基础篇 初用信号槽与命名规范》!
在上一讲《QT 第二讲——基础篇 Qt的第一个程序》中,我们一起完成了第一个Qt窗口程序的创建,初步熟悉了Qt Creator的开发环境,并掌握了Qt项目的基本结构。通过简单的代码实践,大家已经能够感受到Qt框架的便捷性与跨平台特性。

从这一讲开始,我们将正式使用Qt的核心机制之一——信号与槽(Signals & Slots)。作为Qt框架区别于其他GUI库的重要特性,信号槽机制实现了对象间的高效通信,是Qt开发中不可或缺的“魔法工具”。本讲将通过实例演示如何初步使用信号槽,并深入探讨Qt开发中的命名规范,帮助大家从起步阶段养成规范编码的习惯,为后续复杂项目打下坚实基础。
让我们开始学习如何用信号槽连接界面与逻辑,同时掌握代码可读性与可维护性的关键技巧吧!


目录

前言:

一、hello world的其他写法

1.1 Line Edit 图形化编辑

1.2 Line Edit代码编程

二、初用信号槽

2.1 button图形化编写

 2.2 button代码编写

三、QT使用技巧与命名规范

3.1 快捷键

3.2 命名规范

3.3 查询文档

四、初识QT坐标系

总结:


一、hello world的其他写法

在上一讲当中我们使用了,label的图形化界面与代码方式编写,但是我们下面将要讲解另一个控件---Line Edit,它是我们在平常界面当中看到的编辑框

 下面还有一个控件Text Edit 它同样是编辑框不过是更大的文本编辑框,但是我们hello world很明显不需要使用它,我们这里使用Line Edit来掩饰。

1.1 Line Edit 图形化编辑

这里很简单就不再浪费大家时间,操作流程是与上一讲的Label是一样的。

1.2 Line Edit代码编程

这里的操作与上一讲几乎是一致的,这里不在过多的介绍。

这里的使用的就不再介绍了。 


二、初用信号槽

这里我们就要第一次接触了,QT的一个重要概念那---信号与槽,但是这里我们只是第一次使用一下信号槽但是正式的介绍QT还是要等到下一讲。

我们这里还是以Hello World程序为演示,我们这里再介绍一个控件button,他就是我们平常界面当中的按钮,而我们再QT当中选择Push Button,这是我们QT最常用的按钮,它就是一个普通的按钮。

2.1 button图形化编写

还是一样的,我们打开一个项目,然后再左边栏找到button图标就好。

预期效果图,然后我们正常编译一下就好了 

 

效果图: 

但是按钮与上面的QLineEdit与QLable不同,button按钮可以发出信号的,信号我们很熟悉嘛,毕竟信号也是进程间通信的一种方式,在Linux当一个进程接收到一个信号就可以根据提前设置好的信号处理函数,处理信号。

我们关于信号与槽,也可以这样认为,当用户与我们的界面交互的时候,会发个信号给我们,我们就可以根据信号来调整相关控件的表现。

如果大家听不懂,大家可以等到下节课。

这里我们以代码的形式第一次使用槽函数。

我们想要使用槽函数,我们就必须完成信号与槽函数的链接,使用的函数的是connect,但是这个函数与TCP套接字的connect函数没啥太大的联系。

这里我们使用的直接是图形化界面的方式编写的,我们想要使用这个控件建立槽函数,我们就必须知道这个控件的名字,在上一讲当中我们也介绍到了。

QT此时就会给这个控件分配一个objectName属性
这个属性的值,要求是在界面中得是唯一的.(不能和别人重复)会自动生成一个名称
而qmake在预处理.ui文件的时候,就会根据这里的objectName生成对应的
也可以手动修改成别的名称
该QPushButton对象的变量名字就是这里的objectName.
这个变量就是ui属性中的成员变量.。 后面我们想要connect的时候,使用的就是这个变量名。

当然具体的connect的讲解,还是要等到下一讲,大家这时候听个响就好。

现在我们正式编写pushButton的槽函数,目标是 这个函数:我们按一下按钮,就可以改变按钮的文字

最后的效果图 

 2.2 button代码编写

当然我们根据上面的初步使用,想要改变为代码。

但是也是有几个需要注意的地方,就像是我们上面使用了一个新的函数,但是我们的代码时通过new出一个新的变量,它是一个临时变量,是没法直接再另一个函数内使用,所以我们在使用之前必须提前为Widget提前声明一个变量。

然后再进行上面的操作,就可以看到了。

这里就不再详细演示了,直接展示代码。

//widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QPushButton>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handleClick();private:Ui::Widget *ui;QPushButton* Button;
};//这个函数我们就是想要按一下按钮,就可以改变按钮的文字#endif // WIDGET_H
//widget.cpp#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//这里我们完成了初步的控件搭建//接下来我们使用槽函数Button=new QPushButton(this);Button->setText("hello world");connect(Button,&QPushButton::clicked,this,&Widget::handleClick);
//    connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);
}void Widget::handleClick()
{if(Button->text() == QString("hello world")){Button->setText("hello QT");}else{Button->setText("hello world");}
}Widget::~Widget()
{delete ui;
}

这是最后的效果图,本人不会动图不好演示,大家下来实践就好了。


三、QT使用技巧与命名规范

3.1 快捷键

这个部分主要是和大家分享一下在QT中,方便我们编写代码的快捷键。

• 注释:ctrl + /

• 运⾏:ctrl + R

• 编译:ctrl + B

• 字体缩放:ctrl + ⿏标滑轮

• 查找:ctrl + F

• 整⾏移动:ctrl + shift + ⬆/⬇

• 帮助⽂档:F1

• ⾃动对⻬:ctrl + i;

• 同名之间的 .h 和 .cpp 的切换:F4

• ⽣成函数声明的对应定义: alt + enter

•转到定义  :crtl+左键

•返回:alt+左方向键

3.2 命名规范

给变量/函数/文件/类起名字,非常有讲究的

1. 起的名字要有描述性,不要使用abc,xyz这种比较无规律的名字来描述。

2.如果名字比较长,由多个单词构成的,就需要使用适当的方式来进行区分不同单词,

之前的C/C++博客当中,偏好使用空格,来进行单词的分割
形如:

student count
unordered map

这种方法被称为蛇形命名法,如下图那样,横线就是我们的空格。

但是编程界也有其他比较流行的命名规范,如下面的那种。

priority_queue,这种命名方法被称为驼峰命名法。,下划线就是峰顶。

在编程届,驼峰命名法的规则,使用程度比蛇形命名更广泛,

Qt中,偏好使用大写字母来进行单词分割的.
形如:studentCount 小驼峰
给变量/函数,主要就是 C/C++/Python 偏好蛇形命名.,而Java/JS/Go……偏好驼峰命名.
当然最好使用什么命名规范,只有一个要求:入乡随俗。
你公司中使用的项目,使用的是驼峰/蛇形/其他??照着公司的做就可以了。

3.3 查询文档

大家一定要有查询文档的意识!!
未来实际开发中,一定会用到很多的第三方库和框架的
很可能用到的库/框架,比较小众,网上很难找到一些相关资料,
最核心的参考资料,就是官方文档,(大概率是英文的)

打开帮助⽂档有三种⽅式. 实际编程中使⽤哪种都可以.

1、光标放到要查询的类名/⽅法名上, 直接按 F1

2、Qt Creator 左侧边栏中直接⽤⿏标单击 "帮助" 按钮:

3、找到 Qt Creator 的安装路径,在 "bin" ⽂件夹下找到 assistant.exe,双击打开;

 


四、初识QT坐标系

QT坐标系与我们中学数学的坐标系不同,它是左手坐标系,就是坐标体系:以左上⻆为原点(0,0),X向右增加,Y向下增加。

对于嵌套的控件来说,其坐标是相对于⽗窗⼝来说的。

⽰例:使⽤Qt中的坐标系设置控件的位置; 【通过move函数可以设置控件相对于原点的位置】

移动的单位是像素


总结:

通过本讲的学习,你已经掌握了Qt信号槽的基本用法,理解了其“松耦合”设计的优势,并学会了如何通过规范的命名让代码更加清晰易懂。现在,你不仅能够通过信号槽实现简单的界面交互,还能通过合理的命名让代码逻辑一目了然,这对团队协作和长期维护至关重要。

在下一讲《QT 第四讲——基础篇 信号和槽》中,我们将进一步深入信号槽的进阶用法,包括自定义信号与槽信号槽的参数传递以及跨线程通信的注意事项。通过更复杂的案例,你将彻底掌握这一机制的精髓,并能灵活运用它解决实际开发中的各类交互问题。

我们下一讲见!

相关文章:

  • tomcat组件架构设计
  • 【仿生机器人】建模—— 图生3D 的几个办法
  • 2020年IS SCI2区,多样本和遗忘能力粒子群算法XPSO,深度解析+性能实测
  • 阿里云服务状态监控:实时掌握云服务健康状况
  • 基于cornerstone3D的dicom影像浏览器 第三十一章 从PACS服务加载图像
  • 生态系统服务(InVEST模型)供给与需求、价值核算技术及人类活动、重大工程项目、自然保护区、碳中和等
  • 如何在网页里填写 PDF 表格?
  • 免费在线PDF转图片工具
  • XXE漏洞知识
  • 免费PDF转图片软件
  • 学习 Hooks【Plan - June - Week 2】
  • 免费PDF转图片工具
  • 在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
  • 一桩多用:新能源汽车智慧充电桩的多元化智能管理方案
  • 深入理解 S3 标签字符清洗的正则表达式实践
  • 解决ubuntu20.04无法唤醒的问题的一种方法
  • 2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
  • 多模态学习路线(2)——DL基础系列
  • 视觉slam十四讲实践部分记录——ch2、ch3
  • Linux字符串占用空间统计方法
  • wap网站和app开发/竞价关键词优化软件
  • 厦门商场网站建设/网络营销推广方案案例
  • 平板上做网站的软件/电商运营主要工作内容
  • 织梦做的网站能做seo吗/产品推广公司
  • 从化企业网站建设/seo怎么读
  • 沈阳企业网站设计制作/百度竞价托管哪家好