QT——其他方式实现HelloWrold

embedded/2024/9/23 14:33:29/

QT——其他方式实现HelloWrold

  • 使用输入框实现
    • 使用代码实现
  • 通过按钮实现
    • 信号槽
    • 代码方式实现

我们之前对QT实现HelloWorld有了一些基本的了解,用了一些简单的方法实现了HelloWorld,如果对QT还不怎么了解的,可以点击这里:

https://blog.csdn.net/qq_67693066/category_12625974.html

我们今天继续来看用其他方式来实现HelloWorld:

使用输入框实现

我们新建项目,然后进入ui界面:
在这里插入图片描述
往下滑,找到这个:
在这里插入图片描述
拖到界面上:
在这里插入图片描述我们可以往上面输入文字:
在这里插入图片描述
这个时候运行我们的程序,我们的文字就可以显示了:
在这里插入图片描述

并且我们可以修改我们的文字:
在这里插入图片描述

使用代码实现

我们也可以不用ui来实现,我们可以使用纯代码来实现:
QLineEdit就是单行文本框,我们可以使用QLine来实现:
切换到widget.cpp中,导入头文件:
在这里插入图片描述设置文字:
在这里插入图片描述在这里插入图片描述

通过按钮实现

我们也可以通过按钮来实现:
进入ui文件,找到按钮那一栏:
在这里插入图片描述
像以前一样,拖上去:
在这里插入图片描述修改上面的文字就行了:
在这里插入图片描述运行程序:
在这里插入图片描述

我们可以点击这个按钮,但是看不出有什么变化。如果要实现这样的功能,就要涉及到信号槽的概念。这里我们简单了解一下:

信号槽

信号槽是Qt框架中的一种通信机制,它类似于观察者模式。在Qt中,当某个事件发生时,如按钮被点击,会发出一个信号(signal)。如果有对象对这个信号感兴趣,可以使用connect()函数将信号与自己的一个函数(称为槽,slot)连接起来。这样,当信号发出时,被连接的槽函数会自动被回调。

我们可以使用一下,我们回到widget.cpp写下这一行代码:
在这里插入图片描述

在这里插入图片描述
我们把代码补充完整:
在这里插入图片描述

这里我们的handleClick还没有写,所以会报错,我们先整体看看这个代码的含义:
在这里插入图片描述我们补充完handleClick的实现,首先在widget.h中声明:
在这里插入图片描述之后在widget.cpp中实现:
在这里插入图片描述
我们再次运行程序:
在这里插入图片描述点击按钮之后:
在这里插入图片描述但是之后再点,就不会变了,我们可以稍微调整一下:

void Widget::handleClick()
{//点击按钮时,切换文本if(ui->pushButton->text() == QString("Hello World!!!")){ui->pushButton->setText("hello C++");}else{ui->pushButton->setText("Hello World!!!");}}

再次运行就可以了:
在这里插入图片描述
在这里插入图片描述再次点击:
在这里插入图片描述

代码方式实现

我们也可以只用代码方式来实现:
首先我们可以在widget.h中添加一个私有的QPushButton成员变量:
在这里插入图片描述
然后在widget.cpp中初始化:
在这里插入图片描述

handleClick大体的逻辑没有变:
在这里插入图片描述

void Widget::handleClick()
{//点击按钮时,切换文本//if(ui->pushButton->text() == QString("Hello World!!!"))//{//      ui->pushButton->setText("hello C++");// }//else//{//      ui->pushButton->setText("Hello World!!!");// }if(myButton->text() == QString("Hello World!!!")){myButton->setText("hello C++");}else{myButton->setText("Hello World!!!");}}

两种方法大体上没有什么差别,但是一些细节还是要注意:
在这里插入图片描述


http://www.ppmy.cn/embedded/21029.html

相关文章

day04--react中state的简化

一、简化state 回顾我们之前的写法: state是在构造器里面定义的。 1)我们为什么要在构造器里面定义? 答:对于创建一个实例对象时,我们对要传进来的数据进行接收,那么我们必须要写一个构造器来接收传进来的…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端,Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能,还有实用的差异查看器,你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

航拍图像拼接 | 使用C++实现的无人机航拍图像拼接

项目应用场景 面向无人机航拍图像拼接场景,项目使用 C 实现,使用 harris 角点查找特征点 非极大值抑制,由于航拍图像没有严重的尺度旋转变化,使用了 berief 描述子,然后使用 RANSAC 求 H,最后进行图像拼接…

LeetCode39题: 组合总和(原创)

【题目描述】 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复…

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理过…

AI自动生成PPT文档 aippt的API介绍文档

官方链接直达! 产品介绍​ 能力介绍​ AiPPT 是一款智能生成演示幻灯片的在线工具。专业设计团队打造海量模板资源,输入标题即可轻松生成完整的PPT。同时 AiPPT 支持导入多格式文档一键生成 PPT,让 PPT 创作更加高效。聚焦于内容&#xff0…

李沐-35 分布式训练【动手学深度学习v2】

batchsize增加超过一定范围,有可能会导致训练效率下降。batchsize大到一定程度,每个batch内的样本的多样性不会比之前有多大增长,对梯度的贡献也不会比之前的batch大多少,但是大的batchsize会带来更多的训练时间,就造成…

【JavaParser笔记04】如何使用JavaParser依赖库生成Java类、接口、方法、属性、注释等内容

这篇文章,主要介绍如何使用JavaParser依赖库生成Java类、接口、方法、属性、注释等内容。 目录 一、JavaParser代码生成 1.1、引入依赖 1.2、生成Java类 1.3、生成属性和setter、