Qt 之 QPushButton,信號與槽機制

文章目錄

  • 前言
  • 一、QPushButton
  • 二、信號與槽機制
  • 總結

前言


一、QPushButton

當我們開發基于Qt框架的圖形用戶界面(GUI)應用程序時,經常需要在界面上添加按鈕來實現用戶交互。Qt提供了一個名為 QPushButton 的類作為按鈕控件的實現。QPushButton是Qt中的標準按鈕類,旨在簡化按鈕的創建和使用。
頭文件 :#include < QPushButton >

QPushButton 用于接受用戶點擊事件
QPushButton 是功能性組件,需要 父組件 作為 容器 QPushButton 能夠在父組件中進行定位。

以下是QPushButton的常用函數及其作用的表格:

函數名作用
setText(const QString&)設置按鈕的文本內容。
setIcon(const QIcon&)設置按鈕的圖標。
setEnabled(bool)設置按鈕是否可用。
setChecked(bool)設置按鈕是否處于選中狀態。
setShortcut(const QKeySequence&)設置按鈕的快捷鍵。
setDefault(bool)設置按鈕是否為默認按鈕,即按下回車鍵時觸發。
toggle()切換按鈕的選中狀態。
animateClick(int)以動畫效果模擬按鈕點擊。
isCheckable()判斷按鈕是否可選中。
isChecked()判斷按鈕是否選中狀態。
isDown()判斷按鈕是否被按下。
click()模擬按鈕點擊。
showMenu(QMenu)顯示與按鈕關聯的彈出菜單。
setMenu(QMenu)設置與按鈕關聯的彈出菜單。
setStyleSheet(const QString&)設置按鈕的樣式表,用于定制按鈕的外觀。
resize(int, int)調整按鈕的大小。
move(int, int)移動按鈕的位置。
setToolTip(const QString&)設置按鈕的工具提示文本,當鼠標懸停在按鈕上時顯示。
setToolTipDuration(int)設置按鈕工具提示的顯示持續時間。
setAutoRepeat(bool)設置按鈕是否自動重復發出點擊信號。
setAutoRepeatDelay(int)設置按鈕自動重復發出點擊信號的延遲時間。
setAutoRepeatInterval(int)設置按鈕自動重復發出點擊信號的時間間隔。
這些函數提供了對按鈕的屬性、狀態、外觀和行為進行設置和控制的方法。通過使用這些函數,我們可以實現自定義的按鈕邏輯和交互效果,并為用戶界面增添更多的交互性和可視化效果。

例如:

Qwidget w;			//生成 QWidget對象,頂級組件QPushButton b ( &w);		//生成QPushButton對象,其父組件為QWidgetb.setText ( "Button") ; 		//設置顯示的字符串
b.move ( 10,10);		//移動到坐標(10,10)
b.resize ( 100,25);		//設置大小width = 100,height = 25

二、信號與槽機制

  1. 信號與槽是Qt框架中一種強大的機制,用于實現對象之間的通信和交互

它是一種事件驅動的通信機制,可讓 象之間以松散耦合的方式進行通信,實現高效的模塊化設計和編程。

在Qt中,每個QObject派生類都可以定義信號和槽。信號用于發出通知或事件,而槽用于接收并響應這些通知或事件。當信號被觸發時,與之關聯的一個或多個槽函數會被自動調用。
Qt

  1. Qt中定義了與系統消息相關的概念:
  • 信號(Signal ) :由操作系統產生的消息
  • 槽(Slot ) : 程序中的消息處理函數
  • 連接( Connect ) : 將系統消息綁定到消息處理函數
    在這里插入圖片描述
    信號 到 槽的連接必須發生在 兩個 Qt 對象之間。
  1. Qt 中的關鍵字:
  • SIGNAL :用于指定消息名
  • SLOT : 用于指定消息處理函數名
  • Q_OBJECT : 所有自定義槽的類必須在類聲明的開始處加上
  • slots : 用于在類中聲明消息處理函數
  1. connect 函數
bool connect (const Qobject*sender , 			// 發送對象const char* signal,						// 消息名const Qobject* receiver,				// 接收對象const char* method ,					// 接受對象的成員函數Qt : : ConnectionType type = Qt : : AutoConnection) ;

函數的參數包括信號的 發出者、信號的名稱、槽函數的接收者 和 槽函數 的名稱。
連接之后,當信號被觸發時,與之連接的槽函數會被自動調用。


總結

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38992.shtml

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

相關文章

基于RoCE的應用程序的MTU注意事項

目錄 基于RoCE的應用程序的MTU注意事項 探測網絡中的MTU設置 概要 原文 MTU測試結果 DOC: CentOS安裝tshark抓包工具 基于RoCE的應用程序的MTU注意事項 原文&#xff1a;https://support.mellanox.com/s/article/MLNX2-117-1682kn InfiniBand協議最大傳輸單元&#xff…

WSL2 Ubuntu子系統安裝OpenCV

文章目錄 前言一、&#xfeff;基本概念二、操作步驟1.下載源碼2.安裝依賴3.運行編譯4.配置路徑 前言 OpenCV用C語言編寫&#xff0c;它的主要接口也是C語言&#xff0c;但是依然保留了大量的C語言接口。該庫也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。這些語…

C#委托事件的區別

在C#中&#xff0c;委托&#xff08;delegate&#xff09;和事件&#xff08;event&#xff09;經常一起使用&#xff0c;但它們之間確實有一些基本的區別&#xff1a; 委托&#xff08;Delegate&#xff09;&#xff1a;委托是一個引用類型&#xff0c;它可以引用一個或多個具…

[python] 安裝numpy+scipy+matlotlib+scikit-learn及問題解決

這篇文章主要講述Python如何安裝Numpy、Scipy、Matlotlib、Scikit-learn等庫的過程及遇到的問題解決方法。最近安裝這個真是一把淚啊&#xff0c;各種不兼容問題和報錯&#xff0c;希望文章對你有所幫助吧&#xff01;你可能遇到的問題包括&#xff1a; ImportError: N…

高并發數據抓取實戰:使用HTTP爬蟲ip提升抓取速度

又到每天一期學習爬蟲的時間了&#xff0c;作為一名專業的爬蟲程序員&#xff0c;今天要跟你們分享一個超實用的技巧&#xff0c;就是利用HTTP爬蟲ip來提升高并發數據抓取的速度。聽起來有點高大上&#xff1f;別擔心&#xff0c;我會用通俗易懂的話來和你們說&#xff0c;讓你…

自定義組件引入使用單標簽還是雙標簽好

在許多前端框架和庫中&#xff0c;自定義組件可以使用單標簽或雙標簽進行引入和使用。讓我為您解釋一下這兩種方式的區別和使用場景。 單標簽&#xff08;Self-closing Tag&#xff09;&#xff1a;使用單標簽來引入自定義組件意味著您在組件的使用中只需要一個標簽&#xff0…

自動切換HTTP爬蟲ip助力Python數據采集

在Python的爬蟲世界里&#xff0c;你是否也被網站的IP封鎖問題困擾過&#xff1f;別擔心&#xff0c;我來教你一個終極方案&#xff0c;讓你的爬蟲自動切換爬蟲ip&#xff0c;輕松應對各種封鎖和限制&#xff01;快來跟我學&#xff0c;讓你的Python爬蟲如虎添翼&#xff01; 首…

如何使用mysql命令行導出csv文件?

首先打開ssh&#xff0c;使用命令行登錄mysql mysql -uroot -p123456 其中-u后面的root是用戶名&#xff0c;-p后面的123456是密碼 &#xff0c;替換成自己的賬戶和密碼即可 然后切換到自己需要操作的數據庫&#xff0c;例如test數據庫 use test 接下來執行語句來選擇要導…

服務器托管中1U是什么意思?

U的概念 U是一種表示服務器外部尺寸的單位&#xff0c;是unit的縮略語。 1U4.44514.445cm 2U4.44528.89cm 4U4.445*413.335cm 在托管服務器時&#xff0c;服務商經常說的“1U”是外形滿足EIA&#xff08;美國電子工業協會&#xff09;規格、厚度為4.445cm的產品&#xff0c;設…

uniapp-微信小程序篇

uniapp-微信小程序篇 一、創建項目(以Vue3TS 項目為示例) 可以通過命令行的方式創建也可以通過HBuilderX進行創建&#xff08;通過HBuilderX創建的項目建議選擇最簡單的模板&#xff09;&#xff0c;個人建議使用命令行方式。 (1) 命令行方式&#xff1a; npx degit dcloudio…

ABAP 期初庫存批量導入 demo1

&--------------------------------------------------------------------- *& Report ZMMCP005 &--------------------------------------------------------------------- 作者&#xff1a; Liv完成日期&#xff1a;描述&#xff1a; 期初庫存導入需求簡要說明&…

uni-app 面容、指紋識別插件(uni-face-login)

面容、指紋識別插件(uni-face-login) 介紹 人臉指紋登錄授權&#xff0c;可以使用手機自帶的人臉、指紋進行生物識別&#xff0c;進而判斷是否機主本人&#xff0c;從而進行授權驗證&#xff0c;適配安卓、iOS、鴻蒙設備 猛戳這里去插件市場看看 使用 該插件支持鴻蒙、安卓…

UE4/5C++多線程插件制作(二十一、使用)

目錄 DemoPawn.h DemoPawn.cpp 會出現的bug 插件 相關的插件制作在上一節已經完成了。 具體的使用方式在第0章已經寫了,get之后去綁定即可。 而后筆者做了一個接口,具體的綁定方式也就在這個接口里面。 接下來最重要的是進行使用,對此我做了一個與藍圖相關的接口,里…

TypeScript教程(一)簡介與安裝

一、簡介 TypeScript 是 JavaScript 的一個超集&#xff0c;擴展了JavaScript的語法&#xff0c;因此現有的JavaScript可與TypeScript一起工作無需修改&#xff0c;支持 ECMAScript 6 標準&#xff08;ES6 教程&#xff09;。 語言特性&#xff1a; 1.類型批注和編譯時類型檢…

怎么學習AJAX相關技術? - 易智編譯EaseEditing

學習AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;相關技術可以讓你實現網頁的異步數據交互&#xff0c;提升用戶體驗。以下是一些學習AJAX技術的步驟和資源&#xff1a; HTML、CSS和JavaScript基礎&#xff1a; 首先&#xff0c;確保你已經掌握了基本的HTML…

【Redis】Redis三種集群模式-主從、哨兵、集群各自架構的優點和缺點對比

文章目錄 前言1. 單機模式2. 主從架構3. 哨兵4. 集群模式總結 前言 如果Redis的讀寫請求量很大&#xff0c;那么單個實例很有可能承擔不了這么大的請求量&#xff0c;如何提高Redis的性能呢&#xff1f;你也許已經想到了&#xff0c;可以部署多個副本節點&#xff0c;業務采用…

Android系統-進程-Binder1-概述

目錄 引言&#xff1a; 一次拷貝 Binder一次通信過程 應用啟動中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR數據結構&#xff1a; 引言&#xff1a; Android的binder是從openbinder發展過來的。包括了binder驅動&#xff0c;Native層&#xff0c;Java層。用…

光耦繼電器:實現電氣隔離的卓越選擇

光耦繼電器是一種常用的電子元件&#xff0c;用于實現電氣隔離和信號傳輸。在工業控制、自動化系統和電力電子等領域&#xff0c;光耦繼電器具有獨特的特點和優勢。本文將從可靠性、隔離性、響應速度和適應性等方面對光耦繼電器的特點進行概述。 光耦繼電器是一種典型的固態繼電…

Mysql內儲存JSON字符串,根據條件進行查詢(包含多層級復雜JSON查詢)

1.模糊查詢json類型字段 存儲的數據格式&#xff08;字段名 people_json&#xff09;&#xff1a; {“name”: “zhangsan”, “age”: “13”, “gender”: “男”} 代碼如下&#xff08;示例&#xff09;&#xff1a; select * from table_name where people_json->$.n…

部署工業物聯網可以選擇哪些通信方案?

部署工業物聯網有諸多意義&#xff0c;諸如提升生產效率&#xff0c;降低管理成本&#xff0c;保障生產品質穩定&#xff0c;應對長期從業勞動力變化趨勢等。針對不同行業、場景&#xff0c;工業物聯網需要選擇不同的通信方案&#xff0c;以達到成本和效益的最佳平衡。本篇就簡…