enabled:描述了一个控件是否处于"可用"状态(相对的概念"禁用")。
API | 说明 |
---|---|
isEnabled() | 获取到控件的可⽤状态 |
setEnabled | 设置控件是否可使⽤. true 表⽰可⽤, false 表⽰禁⽤ |
- 所谓"禁用"指的是该控件不能接收任何用户的输入事件,并且外观上往往是灰色的。
- 如果一个Widget被禁用,则该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->setEnabled(false);
//将按钮信号与槽建立联系
connect(button, &QPushButton::clicked, this, &Widget::handleButton);
}
Widget::~Widget()
{
delete ui;
}
void Widget::handleButton()
{
qDebug() << "按钮未被禁用";
}
此时,按钮已经被禁用,处于灰色状态。
使用一个按钮控制另外一个按钮的状态的例子
首先,设置俩个按钮的时候需要注意俩个按钮的objectName。
在同一个界面中,要求不同的控件的objectName也是必须不同的(即不能重复),这样就可以通过ui->objectName的方式获取到对应的控件类型了。
例如:
ui->pushButton //获取到第一个按钮对应的对象。
ui->pushButton //获取到第二个按钮对应的对象。
在这里,Qt会根据ui文件,生成一个ui_widget.h文件生成的过程中就会感知到,界面上的控件及每个控件的objectName。
当前自动生成的objectName有一定规律,即根据控件的类型+下划线+数字。
但是,以数字的方式命名,不是一个好的编程习惯,可以手动更改合适的命名。
下面进行对执行俩个按钮点击信号后的槽函数:
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()
{
//调整上面按钮的禁用状态
//第一步:获取到上面当前按钮的状态
bool enable = ui->pushButton->isEnabled();
//第二步:调整上面当前按钮的状态
if(enable)
{
ui->pushButton->setEnabled(false);
}
else
{
ui->pushButton->setEnabled(true);
}
}