当前位置: 首页 > 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.xdnf.cn/news/1259839.html

相关文章:

  • GoLand 项目从 0 到 1:第六天 —— 权限接口开发与问题攻坚
  • npm run 常见脚本
  • HarmonyOS SDK助力讯飞听见App能力建设
  • Java技术栈/面试题合集(21)-Docker篇
  • 仅需8W,无人机巡检系统落地 AI 低空智慧城市!可源码交付
  • ADB打印设备日志相关
  • WWDC 25 玻璃态星际联盟:SwiftUI 视图协同“防御协议”
  • 深入理解 robots.txt:网站与搜索引擎的 “沟通协议”
  • Linux文档压缩打包与安装
  • zookeeper3.8.4安装以及客户端C++api编译
  • 天翼云与飞轮科技达成战略合作,共筑云数融合新生态
  • 2025 蓝桥杯C/C++国B 部分题解
  • 【Mybatis入门】配置Mybatis(IDEA)
  • LabVIEW多循环架构
  • [深度学习] 大模型学习4-RAG技术全景解析
  • 机械学习--k-means
  • K-Means 聚类
  • SonarQube 扫描多个微服务模块
  • 二、k8s 1.29 之 网络
  • MySQL definer does not exist 问题分析
  • 计算机网络:到底什么是可变长子网掩码VLSM?
  • 自适应反步控制:理论与设计
  • 【洛谷题单】--分支结构(二)
  • 脚本统计MongoDB集合结构信息
  • CSS BFC
  • 接口返回504 Gateway Time-out 错误,这意味着请求在网关或代理服务器等待上游服务器响应时超时。以下是可能的原因和排查建议:
  • provide 和 inject 最佳实践
  • 前端单元测试最佳实践(一)
  • webrtc弱网-EncodeUsageResource类源码分析及算法原理
  • Web 图像捕获革命:ImageCapture API 全面解析与实战指南