目录
1 -> 什么是 enabled 属性
在 Qt 中,enabled 是 QWidget 类的一个基础属性,它控制控件是否对用户输入做出响应。这个布尔属性决定了控件是否处于活动状态:
属性值 | 状态 | 用户交互 | 视觉效果 |
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 这一列的对钩去掉,则按钮的初始状态就是 “禁用” 状态。
感谢各位大佬支持!!!
互三啦!!!