当前位置: 首页 > news >正文

【Qt开发】常用控件(二) -> enabled

目录

1 -> 什么是 enabled 属性

2 -> API

3 -> 代码示例

3.1 -> 创建禁用状态按钮

3.2 -> 通过按钮切换按钮的禁用状态


1 -> 什么是 enabled 属性

在 Qt 中,enabledQWidget 类的一个基础属性,它控制控件是否对用户输入做出响应。这个布尔属性决定了控件是否处于活动状态

属性值状态用户交互视觉效果
true启用可交互正常显示
false禁用不可交互通常变灰

2 -> API

API说明
isEnabled()获取到控件的可用状态
setEnabled()设置控件是否可使用。true 表示可用,false 表示禁用
  • 所谓 “禁用” 指的是该控件不能接收任何用户的输入事件,并且外观上往往是灰色的。
  • 如果一个 widget 被禁用,则该 widget 的子元素也被禁用。

3 -> 代码示例

3.1 -> 创建禁用状态按钮

使用代码创建一个禁用状态的按钮

widget.cpp

#include "widget.h"
#include "ui_widget.h"#include <QPushButton>
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button = new QPushButton(this);button->setText("按钮");// 此时按钮处于禁用状态button->setEnabled(false);connect(button, &QPushButton::clicked, this, &Widget::handle);
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{qDebug() << "handle";
}

运行程序,可以看到按钮处于灰色状态,无法被点击。

3.2 -> 通过按钮切换按钮的禁用状态

通过 按钮2 切换 按钮1 的禁用状态。

1. 使用 Qt Designer 拖两个按钮到 widget 中。

两个按钮的 objectName 分别是 pushButton 和 pushButton_2。

QObject 的 objectName 属性介绍:

QObject 是 QWidget 的父类。里面最主要的属性就是 objectName。

在一个 Qt 程序中,objectName 相当于对象的身份标识,彼此之间不能重复。

在使用 Qt Designer 时,尤其是界面上存在多个 widget 的时候,可以通过 objectName 获取到指定的 widget 对象。

Qt Designer 生成的 ui 文件,本身是 xml 格式的。qmake 会把这个 xml 文件转换成 C++ 的 .h 文件(这个文件生成在 build 目录中),构成一个 ui_widget 类。

每个 widget 的 objectName 最终就会成为 ui_widget 类的属性名字。

最终这个类的实例,就是 Ui::Widget *ui,因此就可以通过形如 ui->pushButton 或者 ui->pushButton_2 这样的代码获取到界面上的 widget 对象了。

2. 生成两个按钮的 slot 函数

  • 使用 isEnabled 获取到当前按钮的可用状态。
  • 使用 setEnabled 修改按钮的可用状态。此处是直接针对原来的可用状态进行取反后设置。

widget.cpp

#include "widget.h"
#include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{qDebug() << "执行了槽函数";
}void Widget::on_pushButton_enable_clicked()
{// 切换第一个按钮的禁用状态// 1. 获取到第一个按钮的当前可用状态bool enable = ui->pushButton->isEnabled();if (enable){ui->pushButton->setEnabled(false);}else{ui->pushButton->setEnabled(true);}
}

运行程序,可以看到,在初始情况下,上面的按钮是可用状态。

点击下方按钮,即可使上方按钮被禁用;再次点击下方按钮,上方按钮就会解除禁用。(禁用状态的按钮为灰色,且不可点击)

注意:

在 Qt Designer 中创建按钮的时候,可以设置按钮的初始状态是 “可用” 还是 “禁用”。

如果把 enabled 这一列的对钩去掉,则按钮的初始状态就是 “禁用” 状态。


感谢各位大佬支持!!!

互三啦!!!

http://www.dtcms.com/a/320495.html

相关文章:

  • Prometheus监控平台部署
  • java分布式定时任务
  • 使用 Setup Project 打包
  • 在嵌入式操作系统中,TerminateTask函数
  • Java 使用 SSHJ 执行 SSH 命令和 SFTP 文件上传和下载
  • 亚麻云之平步轻云
  • GDB中thread apply all命令使用指南
  • 正确使用 JetBrains
  • Upscayl – 免费开源的 AI 图像放大工具,跨平台使用
  • FastAPI的BackgroundTasks如何玩转生产者-消费者模式?
  • HTML 与 CSS:从 “认识标签” 到 “美化页面” 的入门指南
  • application.properties配置文件详解
  • 【Android笔记】Android 自定义 TextView 实现垂直渐变字体颜色(支持 XML 配置)
  • Linux 内存管理之page folios
  • Kiro智能化代码重构实战:从遗留系统到现代架构的AI驱动转型
  • STM32HAL 快速入门(二):用 CubeMX 配置点灯程序 —— 从工程生成到 LED 闪烁
  • ELK+Redis+Nginx多节点部署实战:从日志收集到可视化分析
  • 大语言模型提示工程与应用
  • 破界之光:DeepSeek 如何重构AI搜索引擎的文明坐标 || #AIcoding·八月创作之星挑战赛#
  • 分治-快排-215.数组中的第k个最大元素-力扣(LeetCode)
  • GPT OSS 双模型上线,百度百舸全面支持快速部署
  • MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用
  • 构建响应式在线客服聊天系统的前端实践 Vue3+ElementUI + CSS3
  • RAG实现:.Net + Ollama + Qdrant 实现文本向量化,实现简单RAG
  • 【优选算法】BFS解决拓扑排序
  • Spring Boot + ECharts 极简整合指南:从零实现动态数据可视化大屏
  • Java Stream API 详解与实战案例
  • 广东省省考备考(第七十天8.8)——言语、判断推理(强化训练)
  • Ubuntu 22.04 安装 Docker 完整指南
  • flutter TLS protocol versions: (TLSv1.2, TLSv1.3)