目錄
1 -> 什么是 enabled 屬性
2 -> API
3 -> 代碼示例
3.1 -> 創建禁用狀態按鈕
3.2 -> 通過按鈕切換按鈕的禁用狀態
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 這一列的對鉤去掉,則按鈕的初始狀態就是 “禁用” 狀態。
感謝各位大佬支持!!!
互三啦!!!