【Qt秘籍】[007]-LineEdit Pushbutton控件

       Qt的中有着各种各样的控件,相较于传统C/C++的输出默认只能在控制台实现,Qt中可以有不同的接口实现各种不同的功能,下面我们将实现不同功能的输出 hello world!

标签Label

【Qt秘籍】[006]-Label实现Hello World程序-编程第一步-CSDN博客

编辑框LineEdit/TextEdit

        在Qt中,用于输入和编辑文本的控件主要是QLineEditQTextEdit。这两个类提供了不同的功能和适用场景:

QLineEdit

        QLineEdit是一个单行文本编辑控件,通常用于输入较短的文本,如用户名、密码、搜索关键词等。它简单灵活,支持文本的输入、显示和基本操作。你可以设置占位符文本(placeholder text)、输入掩码(input mask)以及限制输入的字符类型或长度。QLineEdit还支持清空按钮、完成建议等功能。

常用方法

  • setText(const QString &text):设置编辑框中的文本。
  • setEchoMode(QLineEdit::EchoMode mode):设置密码输入模式等。
  • setPlaceholderText(const QString &placeholderText):设置占位符文本。
  • clear():清空编辑框内容。
  • text():获取编辑框中的当前文本。

QTextEdit

        QTextEdit是一个多行富文本编辑器,适合编辑包含格式化文本(如字体样式、大小、颜色等)的长文本。它基于HTML和CSS进行文本渲染,因此可以插入图片、超链接等复杂内容。如果你需要一个类似Word的编辑环境,QTextEdit是更好的选择。

常用方法

  • setHtml(const QString &html):设置编辑器内容为HTML格式的文本。
  • 文本格式相关的操作,如字体、颜色、对齐方式等,可以通过QTextCursorQTextCharFormat等类实现。
  • toPlainText():获取编辑器中的纯文本内容。
  • setPlainText(const QString &text):设置纯文本内容。
  • toHtml():获取编辑器内容为HTML格式的字符串。

        根据你的具体需求,选择合适的编辑框控件。对于简单的文本输入,使用QLineEdit;如果需要处理富文本或者多行文本编辑,则应使用QTextEdit

        下面,我们将创建一个文件,先制作一个以QLineEdit实现的hello world

QLineEdit图形化构建

1.创建文件。

【不知道如何创建的朋友请移步【Qt秘籍】[005]-Qt的首次邂逅-创建】

2.进入widget.ui

3.找到Line Edit,拖拽到右边

4.适当修改大小,直接输入hello world

5.保存后运行

此时我们发现,右边的QLineEdit栏中的text也显示出了hello world!

QLineEdit纯代码构建 

这里和Label的代码创建完全类似,不再赘述

//widget.cpp
#include "widget.h"
#include "ui_widget.h"#include <QLineEdit>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QLineEdit* edit = new QLineEdit(this);edit->setText("hello world!");
}Widget::~Widget()
{delete ui;
}

常规按钮Pushbutton

        Qt中的QPushButton是一个用于创建按钮的基本GUI(图形用户界面)组件。按钮是用户界面中非常基本且重要的交互元素,用户通过点击按钮来触发预定义的动作或事件。QPushButton继承自QWidget类,它允许开发者定义按钮的外观、行为以及与用户的交互逻辑。

QPushButton特点和功能

  • 文本或图标显示:按钮上可以显示文本标签、图标,或者两者同时显示。
  • 信号与槽机制:当按钮被点击时,它会发射一个clicked()信号,这可以通过Qt的信号与槽机制连接到相应的槽函数,以便执行特定的操作,如打开新窗口、关闭窗口、执行计算等。
  • 状态变化:按钮有不同状态,如正常状态、鼠标悬停状态、按下状态等,这些状态可以通过QSS(Qt样式表)来自定义视觉效果。
  • 可定制性:开发者可以通过子类化QPushButton来自定义按钮的行为,例如改变其外观、添加动画效果或修改事件处理逻辑。
  • 无障碍性:支持设置快捷键,提高界面的可访问性。

QPushButton一般步骤

  1. 创建按钮实例:QPushButton *myButton = new QPushButton("点击我", this);
  2. 设置按钮的属性,如大小、位置、图标等。
  3. 连接按钮的信号到槽函数:connect(myButton, &QPushButton::clicked, this, &MyClass::onButtonClicked);
  4. 实现槽函数onButtonClicked()以处理按钮点击事件。

pushbutton图形化构建

图形化界面实现步骤和之前的控件完全一样,不再赘述。

运行后的界面如下图

        但是,虽然这看起来是一个按钮,但是没有交互。

        如果要实现交互,需要先理解信号槽的概念。

【Qt知识】Qt框架中的信号(Signals)与槽(Slots)机制-CSDN博客

代码实现

//widget.h#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handleClick();
private:Ui::Widget *ui;
};
#endif // WIDGET_H
//widget.cpp#include "widget.h"
#include "ui_widget.h"
#include <QWidget>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handleClick);
}Widget::~Widget()
{delete ui;
}void Widget::handleClick()
{//当按钮每次被点击就进行文本切换if(ui->pushButton->text()==QString("hello world!")){ui->pushButton->setText("hello 叶孤程!");}else{ui->pushButton->setText("hello world!");}
}

运行代码,点击按钮前后

pushbutto纯代码构建

widget.h代码实现
//widget.h#ifndef WIDGET_H
#define WIDGET_H
#include <QPushButton>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void HandleClick();private:Ui::Widget *ui;QPushButton* myButton;
};
#endif // WIDGET_H
 widget.cpp代码实现
//widget.cpp#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);myButton = new QPushButton(this);myButton->setText("hello csdn!");connect(myButton,&QPushButton::clicked,this,&Widget::HandleClick);
}Widget::~Widget()
{delete ui;
}void Widget::HandleClick()
{//利用三目运算符(条件运算符)来简化if/else的逻辑myButton->setText(myButton->text() == "hello csdn!" ? "hello 1024!" : "hello csdn!");
}

运行代码,点击按钮前后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言王国——内存函数

目录 1 memcpy函数 1.1 函数表达式 1.2 函数模拟 2 memmove函数 2.1 函数的表达式 2.2 函数模拟 3 memset函数 3.1 函数的表达式 3.2 函数的运用 4 memcmp函数 4.1函数的表达式&#xff1a; 4.2 函数的运用 5 结论 接上回我们讲了C语言的字符和字符串函数&#…

MAC帧

基本问题 数据链路层的协议有很多&#xff0c;但是都有三个基本问题&#xff1a;封装成帧&#xff0c;透明传输和差错检测。 封装成帧 封装成帧&#xff08;Framing&#xff09;就是在一段数据的前后分别添加首部和尾部&#xff0c;这样就构成了一个帧。帧是数据链路层的传送…

vue中使用WebSocket心跳机制与Linux中的心跳机制

WebSocket心跳机制 一、WebSocket简介 WebSocket是HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术&#xff0c;属于应用层协议。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务端主动向客户端推送数据。 二、WebSocket事件与方法 …

曝光超1.5亿,迪丽热巴“抖音直播首秀”解锁德施曼智能锁科技革命

作为中国电商行业年中最大的消费狂欢节点&#xff0c;今年的618大促热闹依旧&#xff1b;各大品牌在今年极简的现货模式下展开了周期最长的品牌实力比拼。其中&#xff0c;高端智能锁领军品牌德施曼在618大促期间&#xff0c;携手代言人迪丽热巴&#xff0c;再次掀起智能锁消费…

设计模式(七)结构型模式---组合模式

文章目录 组合模式简介结构UML图具体实现UML图代码实现 组合模式简介 组合模式&#xff08;Composite Pattern&#xff09;又叫整体模式&#xff0c;它创建了对象组的树形结构&#xff0c;将对象组合成树状结构来表示“整体-部分”的层次关系。实际使用点&#xff1a;HashMap中…

Day04 左侧菜单导航实现

一.点击左侧菜单导航到对应的View页面 1.首先在MyToDo项目中,创建出左侧菜单所有的View(视图)及对应的ViewModel(视图逻辑处理类) ViewViewModel首页IndexViewIndexViewModel待办事项ToDoViewToDoViewModel忘备录MemoViewMemoViewModel设置SettingsViewSettingsViewModel

html+CSS+js部分基础运用11

一、改变新闻网页中的字号 1、设计如图1-1所示的界面&#xff0c;要求当网络访问者选择字号中的【大、中、小】时能实现页面字号大小变化&#xff0c;选择“中”时&#xff0c;页面效果如图1所示。 图1 单击前初始状态页面 图2 单击“中”链接后页面 2、div中内容如下&#x…

十大排序 —— 归并排序

十大排序 —— 归并排序 归并排序分治(排序)合归并排序的性能一些小总结 我们今天继续来学习排序算法 —— 归并排序: 归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种高效的、稳定的排序算法&#xff0c;它采用分治法&#xff08;Divide and Conquer&#xff09…

杂项——STM32ZET6要注意的一些问题——高级定时器问题和PB3,PB4引脚问题

ZET6可能会用到定时器&#xff0c;高级定时器要输出PWM要加上这样一行代码&#xff0c;否则无法正常输出PWM波 TIM_CtrlPWMOutputs(TIM8, ENABLE); // 主输出使能&#xff0c;当使用的是通用定时器时&#xff0c;这句不需要 ZET6中PB3,PB4引脚默认功能是JTDO和NJTRST,如果想将…

六一和侄子拼lego颗粒二维画

一、从泥巴到高科技&#xff1a;儿时玩具的变迁 在我童年的记忆里&#xff0c;最快乐的时光往往与简单的玩具和泥巴有关。在那个没有智能手机和电子游戏的年代&#xff0c;泥巴是我们的乐园&#xff0c;而玩具则是我们的伴侣。 小时候&#xff0c;泥巴是我们的创造力的源泉。…

Go跨平台编译

1.编译windows平台运行程序 # windows env GOOSwindows GOARCHamd64 go build main.go2.编译linux平台运行程序 # linux env GOOSlinux GOARCHamd64 go build main.go 3.编译macos平台运行程序 # macos env GOOSdarwin GOARCHamd64 go build main.go 编译结果:

Python3 match-case 语句

前言 本文主要介绍match-case语句与switch-case的区别&#xff0c;及match-case语句的基本用法。 文章目录 前言一、switch-case 和match-case的区别二、match-case的基本用法1、可匹配的数据类型2、多条件匹配3、通配符匹配 一、switch-case 和match-case的区别 C语言里面s…

Git操作笔记

学git已经好多次了。但是还是会忘记很多的东西&#xff0c;一些常用的操作命令和遇到的bug以后在这边记录汇总下 一.github图片展示 图片挂载&#xff0c;我是创建了一个库专门存图片&#xff0c;然后在github的md中用专用命令展示图片&#xff0c;这样你的md就不会全是文字那…

【C语言】文件操作(中卷)

前言 在文件操作&#xff08;上卷&#xff09;中&#xff0c;讲到的主要都是正式文件操作开始之前的前置知识&#xff0c;而这一卷中&#xff0c;我们将开始正式地操作文件。 在上卷中我们已经说到&#xff0c;stdin stdout stderr是三个C语言程序启动时默认打开的流。这三个流…

HarmonyOS应用开发学习历程(1)初识DevEco Studio

1.create project Bundle name&#xff1a;包名&#xff0c;标识应用程序&#xff0c;默认应用ID也使用该名 Compile SDK&#xff1a;编译时API版本 2.工程目录 AppScope&#xff1a;应用全局所需资源 entry&#xff1a;应用的主模块&#xff0c;含代码、资源 hvigor&#…

TimeDao-一篇文章了解清楚Subspace项目

1 项目简介 什么是Subspace网络&#xff1f; Subspace是为下一波加密创建者构建的第四代区块链。旨在实现web3规模扩容。 Subspace允许开发者以互联网规模运行 Web3 应用。它提供了一个简单的接口&#xff0c;用于快速部署按需求自动扩展的多链去中心化应用。Subspace由一个…

神经网络与深度学习——第7章 网络优化与正则化

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第7章 网络优化与正则化 网络优化与正则化 网络优化 网络结构多样性 高维变量的非凸优化 神经网络优化的改善方法 优化算法 小批量梯度下降 批量大小选择 学习率调整 学习率衰减 学习率预热 周期性学习率调…

HCIP-Datacom-ARST自选题库__EBGP【18道题】

一、单选题 1.在排除EBGP邻居关系故障时&#xff0c;你发现两台直连设备使用Loopback口建立连接&#xff0c;故执行display current-configurationconfiguration bgp查看peer ebgp-max-hop hop-count的配置&#xff0c;下列哪项说法是正确的? hop-count必须大于2 hop-count…

8条黄金准则,解决API安全问题

API&#xff08;应用程序编程接口&#xff09;是现代软件开发中不可或缺的一部分。它们允许不同的应用程序之间共享数据和功能&#xff0c;从而促进了软件系统的整合和互操作性。然而&#xff0c;随着API使用的普及&#xff0c;安全性问题也开始浮出水面。 API安全是指保护API免…

Windows 剪映专业版 v5.9.0 解锁VIP、解除限制功能!

介绍 该脚本具备多项高级功能&#xff0c;包括人像抠图、会员专属模板、超清画质以及素材预设。会员可使用的功能均通过此脚本解锁。 解锁剪映软件会员功能&#xff0c;包括人像抠图、会员模板、超清画质以及素材预设等。 在标准操作流程中&#xff0c;用户首先在电脑端启动…