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

相关文章:

  • 日本站群服务器与普通日本服务器对比
  • 服务器硬件电路设计之I2C问答(一):为什么I2C总线要加上拉电阻?
  • 汉明码:从原理到实现的深度解析
  • UniApp Vue3 TypeScript项目中使用xgplayer播放m3u8视频的显示问题
  • Emacs 折腾日记(二十九)—— 打造C++ IDE
  • 机柜内部除了服务器还有哪些组件?
  • 微软发布Project Ire项目:可自主检测恶意软件的人工智能系统
  • 微软公布Windows 2030,要彻底淘汰鼠标、键盘
  • 【概率论】均匀分布的伪随机数
  • WebForms 实例
  • 零成本建站:将 Windows 电脑变身为个人网站服务器
  • 如何规范你的Git commit?
  • WEEX参与欧洲两场重要Web3线下活动,助力社区协作与技术交流
  • 网络安全初学者学习心得
  • 半精度权重 及 Phi-3线性层的权重分布
  • Java基础知识总结
  • 若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用
  • php防注入和XSS过滤参考代码
  • linux-LVM 逻辑卷管理
  • 嵌入式硬件接口总结
  • Linux文档压缩打包与安装
  • 解决苍穹外卖项目中 MyBatis - Plus 版本冲突问题
  • 基于大数据的地铁客流数据分析预测系统 Python+Django+Vue.js
  • Java学习进阶--集合体系结构
  • 0_外设学习_ESP8266+云流转(no 0基础)
  • Vue 项目安全设置方案:XSS/CSRF 防护指南
  • UE4/UE5 Android 超大(视频)文件打包/防拷贝方案
  • 【开源工具】网络交换机批量配置生成工具开发全解:从原理到实战(附完整Python源码)
  • 小孙学变频学习笔记(十三)电动机参数的自动测量 矢量控制的转速反馈
  • 如何永久删除三星手机中的照片?