Qt中的多种输出方式,信号与槽的基本使用

完成Hello World可以通过很多控件实现

如采用编辑框来完成hello world

编辑框分为单行编辑框----QLineEdit

和多行编辑框---QTextEdit

采用单行编辑框,创建项目后,展开forms文件夹,双击ui文件进入

qt designer设计页面

找到line edit

拖到页面中,双击进行文本输入

运行后就能输出hello world

输出了一个文本框,可以进行修改

使用纯代码方式实现

在weight构造函数中引入一个QLineEdit类,插入对象树,并设置文本,需引入头文件

运行后就能输出文本框和设置的内容

使用按钮的方式实现helloworld

双击ui文件进入Qt Designer

使用push button,设置文本内容后,同样可以进行文本输出

并且可以进行点击,若想通过点击实现一定操作,使点击具有反馈,就需要使用Qt中的信号槽机制

信号槽机制

本质就是给按钮的点击操作关联上一个处理函数,当用户进行点击的时候,就会执行这个处理函数

同样是在weight的构造函数处实现

调用connet函数,将信号与槽绑定

ui->pushButton是指向ui文件中创建的控件,在Qt Designer中创建一个控件的时候就会为其分配一个objectName属性,值是唯一的,可以进行修改,表示由谁发送信号

&QPushButton::clicked是一个信号,点击按钮时就会发送信号,表示发送什么信号

this表示由weight进行信号接收,表示由谁接收信号

&Weight::handleClick表示接收到信号后所调用的处理函数

在头文件中进行处理函数的声明

在cpp文件中实现函数的定义,实现点击一次就切换内容,通过对button中的文本的判断来实现随着点击发送信号,调用处理函数,内容进行切换

为什么可以可以通过ui->pushButton的方式来访问button的内容?

在创建按钮时,自动在ui_widget.h----根据widget.ui文件生成的文件中包含一个QPushButton* pushButton成员,与Designer界面中设置的objectName值一致,在ui文件编译时,会生成一个C++头文件,其中会定义一个Ui::XXX的类,该类包含ui界面中的所有控件的成员变量

通过代码实现QPushButton

在头文件中包含QPushButton头文件,将QPushButton设置为成员变量,声明处理函数

在cpp文件中实现成员变量定义,文本设置,信号与槽连接,处理函数定义

纯代码版本和通过Qt Designer设置button的区别

纯代码需自己new一个QPushButton,将其设置为widget成员变量后,通过this指针直接访问

而Designer的按钮对象不需要进行new,new对象的操作是由Qt自动生成的,按钮对象被作为ui对象中的一个成员变量进行访问

相关推荐
夜晚中的人海2 分钟前
【C++】滑动窗口算法习题
开发语言·c++·算法
~无忧花开~3 分钟前
CSS学习笔记(五):CSS媒体查询入门指南
开发语言·前端·css·学习·媒体
kesteler5 分钟前
R-切割数据
开发语言·r语言
哞哞不熬夜11 分钟前
JavaEE--SpringIoC
java·开发语言·spring boot·spring·java-ee·maven
newxtc16 分钟前
【猿辅导-注册安全分析报告-无验证方式导致安全隐患】
开发语言·selenium·安全·yolo·安全爆破
张人玉18 分钟前
c#WPF基础知识
开发语言·c#·wpf
std78791 小时前
Rust 与 Go – 比较以及每个如何满足您的需求
开发语言·golang·rust
报错小能手1 小时前
python(入门)map内置函数及import模块导入,as别名
开发语言·人工智能·python
梵得儿SHI1 小时前
Java 反射机制实战:对象属性复制与私有方法调用全解析
java·开发语言·java反射机制的实际应用·对象属性复制·反射调用私有方法·私有字段·类型兼容性和敏感字段忽略
sulikey1 小时前
C++的STL:深入理解 C++ 的 std::initializer_list
开发语言·c++·stl·list·initializerlist·c++标准库