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

相关推荐
liulilittle几秒前
VGW 虚拟网关用户手册 (PPP PRIVATE NETWORK 基础设施)
开发语言·网络·c++·网关·智能路由器·路由器·通信
Devil枫10 分钟前
Kotlin高级特性深度解析
android·开发语言·kotlin
ChinaDragonDreamer12 分钟前
Kotlin:2.1.20 的新特性
android·开发语言·kotlin
安之若素^34 分钟前
启用不安全的HTTP方法
java·开发语言
一个天蝎座 白勺 程序猿1 小时前
Python(28)Python循环语句指南:从语法糖到CPython字节码的底层探秘
开发语言·python
持梦远方1 小时前
C 语言基础入门:基本数据类型与运算符详解
c语言·开发语言·c++
zzywxc7872 小时前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
灵性花火2 小时前
Qt的前端和后端过于耦合(0/7)
开发语言·前端·qt
DES 仿真实践家3 小时前
【Day 11-N22】Python类(3)——Python的继承性、多继承、方法重写
开发语言·笔记·python
Code Warrior4 小时前
【每日算法】专题五_位运算
开发语言·c++