【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.pswp.cn/pingmian/92276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92276.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 配置性能優化賽:核心策略與實戰技巧

在數據庫性能優化領域,MySQL 配置調優如同一場精密的競技比賽 —— 既要深刻理解數據庫內核機制,又要根據硬件環境和業務場景靈活調整參數,最終在性能指標上脫穎而出。本文將圍繞 MySQL 配置性能優化的核心維度,解析關鍵參數調優策略與實戰經驗。 一、性能優化的底層邏輯:…

C++ WonderTrader源碼分析之自旋鎖實現

一、介紹 在WonderTrader的文件SpinMutex.hpp定義了跨平臺的自旋鎖的實現。 二、實現原理 1、類 SpinMutex&#xff1a;自旋鎖實現SpinMutex 是一個輕量級的自旋鎖&#xff08;Spinlock&#xff09;實現&#xff0c;用于多線程之間保護臨界區資源。自旋鎖通過不斷嘗試獲取鎖而不…

【AI大模型】Spring AI 基于Redis實現對話持久存儲詳解

目錄 一、前言 二、Spring AI 會話記憶介紹 2.1 Spring AI 會話記憶概述 2.2 常用的會話記憶實現方式 2.2.1 集成數據庫持久存儲會話實現步驟 2.3 適用場景 三、Spring AI基于內存會話記憶存儲 3.1 本地開發環境準備 3.2 工程搭建與集成 3.2.1 添加核心依賴 3.3.2 添…

Numpy科學計算與數據分析:Numpy數據分析與圖像處理入門

Numpy實戰&#xff1a;從數據分析到圖像處理 學習目標 通過本課程&#xff0c;學員將學會運用Numpy庫進行數據分析和圖像處理。學習如何使用Numpy進行數據的高效處理&#xff0c;以及如何利用Numpy進行基本的圖像操作。 相關知識點 Numpy的數據分析和圖像處理 學習內容 1…

Vue框架總結案例

目錄 一、驗證用戶名是否已經被注冊過 二、過濾器 三、圖書管理系統 四、axios網絡請求 一、驗證用戶名是否已經被注冊過 1.案例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script src"j…

hyper-v虛擬機啟動失敗:Virtual Pci Express Port無法打開電源,因為發生錯誤,找不到即插即用設備

啟動錯誤 今天啟動某個hyper-v虛擬機時&#xff0c;啟動失敗了&#xff0c;大概的錯誤信息為&#xff1a;嘗試更改“ubuntu_desktop_2204”的狀態時應用程序遇到錯誤。Virtual Pci Express Port (實例 ID 0445948B-C377-4912-AEEB-58A3D45C5694): 無法開機&#xff0c;因…

CSS包含塊與百分比取值機制完全指南

引言&#xff1a;為什么需要理解包含塊&#xff1f; 在CSS布局的世界中&#xff0c;包含塊(Containing Block) 是一個基礎但至關重要的概念。它就像是一個隱形的參考框架&#xff0c;決定了元素如何定位、尺寸如何計算以及百分比值如何解析。許多CSS開發者在使用百分比單位時遇…

Numpy科學計算與數據分析:Numpy數組操作入門:合并、分割與重塑

Numpy數組操作實戰 學習目標 通過本課程的學習&#xff0c;學員將掌握Numpy中數組的基本操作&#xff0c;包括數組的合并、分割以及重塑等技巧&#xff0c;能夠靈活運用這些操作處理數據&#xff0c;為后續的科學計算和數據分析打下堅實的基礎。 相關知識點 Numpy數組操作 …

11_Mybatis 是如何進行DO類和數據庫字段的映射的?

11_Mybatis 是如何進行DO類和數據庫字段的映射的&#xff1f; 假設 VideoAbnormalContentMapper.xml 文件有如下方法&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN&quo…

2025年滲透測試面試題總結-06(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 邏輯漏洞 一、三大高危業務邏輯漏洞及修復方案 1. 訂單金額篡改&#xff08;參數操縱&#xff09; 2. 重…

SpringBoot激活指定profile的方式

題目詳細答案在 Spring Boot 中&#xff0c;可以通過多種方式激活指定的 Profile&#xff0c;以便在不同的環境中使用不同的配置。在application.properties文件中激活可以在默認的application.properties文件中通過spring.profiles.active屬性激活某個 Profile。# application…

Pytest項目_day10(接口的參數傳遞)

接口的參數傳遞 如果我們需要在一個測試用例中使用另一個測試用例中獲得的數據&#xff0c;應該怎么辦&#xff1f; 解決方案一&#xff1a;使用函數返回值 - 我們可以在另一個測試用例中使用return來返回所需的數據&#xff0c;并在其他的測試用例中調用該測試用例&#xff08…

深信服GO面試題及參考答案(上)

Go 和 Java 的特點和區別是什么? Go 和 Java 都是靜態類型、編譯型語言,但在設計理念、語法特性、并發模型等方面存在顯著差異,具體如下: 從語言設計目標來看,Go 由 Google 開發,旨在解決大型系統開發中的復雜性,強調“簡單、高效、并發”,語法簡潔,摒棄了許多傳統面向…

BGP筆記及綜合實驗

BGP基礎一、BGP產生背景 - BGP定義&#xff1a;邊界網關協議&#xff08;BGP&#xff09;是自治系統間的動態路由協議&#xff0c;屬于外部網關協議&#xff08;EGP&#xff09;。 - 自治系統&#xff08;AS&#xff09;&#xff1a;由統一管理、運行同一IGP協議的路由器組成&a…

全棧:如何判斷自己應該下載哪個版本的Tomcat

版本兼容性矩陣 https://tomcat.apache.org/whichversion.html https://tomcat.apache.org/download-11.cgi 介紹一下這些版本的不同點&#xff1a; 一、按系統選&#xff08;優先看這個&#xff09; 1.Windows 系統&#xff08;普通使用&#xff0c;非服務自啟&#xff09…

Redis的Linux安裝

可以直接命令下載 wget http://download.redis.io/releases/redis-5.0.4.tar.gz下載好之后解壓縮&#xff0c;并且重命名為redis 由于redis是c語言編寫的&#xff0c;所以我們需要先安裝gcc&#xff0c;安裝的命令如下&#xff1a;yum -y install gcc 安裝成功后輸入 : gcc -v…

14-netty基礎-手寫rpc-提供方(服務端)-06

netty系列文章&#xff1a; 01-netty基礎-socket02-netty基礎-java四種IO模型03-netty基礎-多路復用select、poll、epoll04-netty基礎-Reactor三種模型05-netty基礎-ByteBuf數據結構06-netty基礎-編碼解碼07-netty基礎-自定義編解碼器08-netty基礎-自定義序列化和反序列化09-n…

連續時間和數字之間頻率的偏差以及相位補償

接下來需要講解在連續時間域下的角頻率以及在離散化后的數字角頻率。上面可以知道模擬角頻率和數字的區別 接下來介紹相位 相位單位是弧度無頻偏&#xff1a; 對于數字來說是對連續信號采樣后的結果&#xff0c;數字的角頻率 &#xff0c;就是相位的遞增量&#xff0c;表示每個…

《Git從入門到精通:告別版本管理混亂》

堅持用 清晰易懂的圖解 代碼語言&#xff0c;讓每個知識點變得簡單&#xff01; &#x1f680;呆頭個人主頁詳情 &#x1f331; 呆頭個人Gitee代碼倉庫 &#x1f4cc; 呆頭詳細專欄系列 座右銘&#xff1a; “不患無位&#xff0c;患所以立。” 《Git從入門到精通&#xff1a…

小紅書開源多模態視覺語言模型DOTS-VLM1

項目簡介與模型基本介紹 DOTS-VLM1 是由小紅書希實驗室(Rednote HiLab)開源的多模態視覺語言模型(Vision-Language Model, VLM),旨在推動視覺與語言理解的融合研究。DOTS-VLM1 采用主流的編碼-融合-解碼架構,支持圖片與文本的聯合理解與生成,適用于圖文問答、圖片描述、…