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

相关推荐
郝学胜-神的一滴几秒前
深入理解QFlags:Qt中的位标志管理工具
开发语言·c++·qt·程序人生
柯南二号1 小时前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
我是哈哈hh1 小时前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
Sammyyyyy3 小时前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
William一直在路上3 小时前
Python数据类型转换详解:从基础到实践
开发语言·python
看到我,请让我去学习4 小时前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
创想未来CTF4 小时前
Qt同步处理业务并禁用按钮
qt
GUET_一路向前4 小时前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔4 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
三千道应用题4 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf