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对象中的一个成员变量进行访问

相关推荐
Boilermaker19921 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
MM_MS1 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
꧁Q༒ོγ꧂1 小时前
LaTeX 语法入门指南
开发语言·latex
njsgcs2 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
alonewolf_992 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
古城小栈2 小时前
Rust 迭代器产出的引用层数——分水岭
开发语言·rust
ghie90902 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体12 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk9982 小时前
VSC优化算法MATLAB实现
开发语言·算法·matlab
AI小怪兽2 小时前
基于YOLOv13的汽车零件分割系统(Python源码+数据集+Pyside6界面)
开发语言·python·yolo·无人机