Qt按鍵響應

信號與槽機制是一個非常強大的事件通信機制,是 Qt 最核心的機制之一,初學者掌握它之后,幾乎可以做任何交互操作。

信號(Signal) 是一種“事件”或“通知”,比如按鈕被點擊、文本改變、窗口關閉等。
槽(Slot) 是一個“處理函數”,用于響應信號。

當信號發生時,自動調用連接的槽函數,實現邏輯響應。

簡單的信號與槽構建示例

+-構建

如果你的欄布局與主包一樣,如下

在黑框右鍵,點擊“重置為默認布局”,就能出現如下“+”“-”號

點擊“+”號,雙擊(<發送者>等)輸入內容,示例為點擊打開按鈕,就關閉窗口?

點擊要刪除的命令,再點擊“-”號就能刪除

Edit Signals塊

我覺得使用相對麻煩,就不詳細介紹了,大家可以不學這種。

?點擊符號后,將鼠標放在對象上會變紅,點擊要選擇的信號發送者

點擊后會由對象伸出一條紅色的單項箭頭,點擊要選擇的接收者,選擇發送者發出的信號和接收者的響應操作

點擊左邊的Edit Widgets退出編輯操作

代碼方式實現

ui+代碼

右鍵按鈕,點擊“轉到槽”

選擇信號,點擊“OK”

就跳轉到了widget.cpp文件,會自動生成相關槽函數,.h文件也會增添相應聲明

我們可以在槽函數里輸出一句話(記得在.h文件增添頭文件<iostream>),保存

點擊“打開”按鈕后出現如下輸出

QObject::connect函數

在構造函數中進行信號與槽的綁定

打開widget.cpp,輸入如下連接代碼

QObject::connect(發送者,SIGNAL(檢測信號),接收者,SLOT(超函數));

this代表這個窗口 ,SLOT()超函數需在頭文件聲明

函數實現

聲明后右鍵函數,點擊“Refactor”,點擊“在widget.cpp中添加定義”

在跳轉后的widget.cpp中的生成函數中輸入如下代碼

點擊“關閉”按鈕后,輸出如下

?lambda表達式

也可以直接寫lambda表達式,就不用聲明函數了(是匿名函數),接收者this要不需要寫,默認為窗體本身

點擊“保存”鍵后輸出如下

?使用函數指針

與使用connect函數構建相似,不再贅述,給出widget.cpp文件中的代碼

QObject::connect(ui->Bclose,&QPushButton::clicked,this,&widget::on_fortch_clicked);

自定義信號與槽

先在.h頭文件聲明信號,聲明槽(紅杠處為添加部分)?

在.cpp文件中實現槽函數

QDebug輸出

QDebug是Qt中用于輸出調試信息的類,提供了一種方便的方式來輸出文本到標準輸出,返回一個QDebug對象,使用流操作符<<輸出各種數據類型,與cout使用類似

需在.h中引入<QDebug>頭文件

在.cpp的構造函數中連接信號與槽(connect前面可以聲明QObject也可以不寫,因為Widget是QObject的派生類,可使用基函數的成員函數)

再使用emit關鍵字觸發信號,輸出如下

帶參數

.cpp代碼如下

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(this,SIGNAL(mysignal(int)),this,SLOT(myslot(int)));emit mysignal(100);
}Widget::~Widget()
{delete ui;
}void Widget::myslot(int value)
{qDebug()<<"myslot";qDebug()<<value;
}

運行結果如下

雖然我們約定信號與槽的形參要一樣,但是參數不一樣在Qt中其實也允許發生?

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

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

相關文章

【Git】常見命令整理

Git分區與操作關系&#xff1a;Working Directory&#xff08;工作區&#xff0c;對于本地的編輯和修改在此進行&#xff09;->Staging Area&#xff08;暫存區/Index&#xff0c;在工作區進行git add操作后的位置&#xff09;->Git Repository&#xff08;本地倉庫&…

Linux-Shell腳本基礎用法

1.變量定義變量命名規則&#xff1a;可以包含字母&#xff0c;數字&#xff0c;下劃線&#xff0c;首字母不能用數字開頭&#xff0c;中間不能又空格&#xff1b;為變量賦值等號之間不能為空格&#xff1b;變量命名不能使用標點符號&#xff0c;不能使用bash的關鍵字&#xff1…

JS中的Map和WeakMap區別和聯系

JavaScript 中 Map 與 WeakMap 的區別、聯系及示例核心區別特性MapWeakMap鍵的類型允許任意類型的鍵&#xff08;對象、原始值&#xff09;鍵必須是對象&#xff08;非原始值&#xff09;垃圾回收強引用鍵 → 阻止垃圾回收弱引用鍵 → 不影響垃圾回收可遍歷性支持遍歷&#xff…

Linux 環境 libpq加載異常導致psql 連接 PostgreSQL 庫失敗失敗案例

文章目錄局點現象定位結論局點環境補充知識點如下庫文件加載順序關鍵事實&#xff1a;您系統中的證據&#xff1a;優先級對比表&#xff1a;解決方案強化&#xff1a;最終檢查&#xff1a;本局點解決方法局點現象 數據庫 mdm 升級失敗檢查日志, 發現是由于 psql 連接數據庫報錯…

C# XML 文件

在 C# 中處理 XML 文件是非常常見的操作&#xff0c;可以使用System.Xml命名空間中的類來實現。以下是一些常用的 XML 操作示例&#xff1a; 手冊鏈接&#xff1a; System.Xml 命名空間 XmlDocument 創建一個xml數據格式的文檔 XmlDocument xml new XmlDocument(); Xml…

LOVON——面向足式Open-Vocabulary的物體導航:LLM做任務分解、YOLO11做目標檢測,最后L2MM將指令和視覺映射為動作(且解決動態模糊)

前言 因為項目需要(比如我們在做的兩個展廳講解訂單)&#xff0c;近期我一直在研究VLN相關&#xff0c;有些工作哪怕暫時還沒開源(將來可能會開源)&#xff0c;但也依然會解讀&#xff0c;比如好處之一是構建完整的VLN知識體系&#xff0c;本文便是其中一例 我在解讀過程中&am…

【Django】-3- 處理HTTP響應

HttpResponse 家族” 的常用操作&#x1f31f;1. 設置狀態碼 &#x1f44b;狀態碼是服務器告訴客戶端 “請求處理結果” 的數字暗號&#xff08;比如 404 表示 “沒找到頁面”&#xff09;。Django 里有 3 種設置方式&#xff1a;方式 1&#xff1a;直接寫數字&#xff08;簡單…

《React Router深解:復雜路由場景下的性能優化與導航流暢性構建》

路由系統是連接用戶操作與應用功能的中樞神經,而React Router作為React生態中處理路由邏輯的核心工具,其在復雜應用中的表現直接決定著用戶體驗的優劣。當應用規模擴張至數十甚至上百個路由,嵌套層級跨越多層,導航控制中的性能問題便會逐漸凸顯——從首屏加載的延遲到路由切…

網絡與信息安全有哪些崗位:(4)應急響應工程師

想知道網絡與信息安全領域有哪些具體崗位嗎&#xff1f; 網絡與信息安全有哪些崗位&#xff1a;&#xff08;1&#xff09;網絡安全工程師-CSDN博客 網絡與信息安全有哪些崗位&#xff1a;&#xff08;2&#xff09;滲透測試工程師_網絡安全滲透工程師-CSDN博客 網絡與信息安…

Leetcode 3634. Minimum Removals to Balance Array

Leetcode 3634. Minimum Removals to Balance Array 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3634. Minimum Removals to Balance Array 1. 解題思路 這一題思路上就是一個滑動窗口的思路。 我們首先將整個數組有序排列&#xff0c;然后分別從左向右考察每一個元素作為…

C#/.NET/.NET Core優秀項目和框架2025年7月簡報

前言 每月定期推廣和分享的C#/.NET/.NET Core優秀項目和框架&#xff08;每周至少會推薦兩個優秀的項目和框架當然節假日除外&#xff09;&#xff0c;推文中有項目和框架的詳細介紹、功能特點、使用方式以及部分功能截圖等。注意&#xff1a;排名不分先后&#xff0c;都是十分…

第 10 篇:深度學習的“軍火庫”——CNN、RNN與Transformer,AI如何看懂世界?

《人工智能AI之機器學習基石》系列⑩ 專欄核心理念: 用通俗語言講清楚機器學習的核心原理,強調“洞察 + 技術理解 + 應用連接”,構建一個完整的、富有啟發性的知識體系。 引

深度學習—功能性函數代碼 common.py

函數&#xff1a;返回GPU def try_gpu(i0): #save"""如果存在&#xff0c;則返回gpu(i)&#xff0c;否則返回cpu()"""if torch.cuda.device_count() > i 1: # 如果存在第 i 個 GPUreturn torch.device(fcuda:{i}) # 返回第 i 個 GPU 設…

南太平洋金融基建革命:斐濟-巴新交易所聯盟的技術破局之路 ——從關稅動蕩到離岸紅利,跨境科技如何重塑太平洋資本生態

一、今日焦點&#xff1a;全球關稅震蕩與南太平洋的“技術聯盟”機遇 1. 特朗普關稅大限引爆亞太市場波動&#xff0c;小經濟體承壓尋路 2025年8月1日&#xff0c;特朗普正式簽署行政令&#xff0c;對多國征收10%-41%的“對等關稅”。韓國首當其沖&#xff0c;綜合指數暴跌近4%…

python爬取豆瓣電影評論通用代碼

最近在自學python爬蟲&#xff0c;今天閑來無事&#xff0c;爬了一下豆瓣數據 這個網站對于初學者來說還是很友好的注意&#xff1a;有python環境的朋友運行的時候&#xff0c;要把cookie換成自己的 通用性&#xff1a;可以自己換不同的電影id進行數據爬取 Tip&#xff1a;slee…

構建屬于自己的第一個 MCP 服務器:初學者教程

為什么需要 MCP 服務器&#xff1f; 你是否遇到過這樣的場景&#xff1a;向 AI 助手&#xff08;比如 GitHub Copilot&#xff09;詢問 “北京今天的天氣”&#xff0c;得到的回復卻是 “我無法訪問實時天氣數據”&#xff1f; 這是因為大多數 AI 模型本身 “與世隔絕”—— 它…

個人項目介紹:語音識別小助手

一、項目內容 基于STM32F103RCT6制作了一款集語音識別、按鍵控制、信息顯示、溫濕度監測等多功能于一體的智能設備&#xff0c;滿足多樣化的交互需求。 二、個人工作內容 依據項目需求&#xff0c;選定 STM32F103RCT6 單片機、SU-03T語音識別模組、AHT25 溫濕度傳感器等核心元件…

【Django】-1- 開發項目搭建

一、PDM Django 搭建項目&#x1f447;&#x1f3af; 核心目標用 PDM&#xff08;更現代的 Python 包管理工具&#xff09;&#xff0c;快速創建并管理 Django 項目&#xff08;Web 框架&#xff09;&#xff0c;讓開發流程更絲滑?&#x1f9e9; 分步拆解1. 創建項目用 PDM 初…

c++:設計模式訓練

寫一個鳥類&#xff1a;有一個多態函數&#xff1a;run 寫一個企鵝類&#xff0c;繼承自鳥類&#xff1a;重寫 run 寫一個鴕鳥類&#xff0c;繼承自鳥類&#xff0c;重寫 run 寫一個老鷹類&#xff0c;繼承自鳥類&#xff0c;重寫run 寫一個鳥籠&#xff0c;能夠存放 不同的鳥…

配置Mybatis環境

配置Mybatis環境MyBatis是什么配置Mybatis環境MyBatis是什么 MyBatis 一個支持普通 SQL 查詢、存儲過程以及高級映射的持久層框架。MyBatis 免除了幾乎所有的 JDBC 代碼以及設置參數和獲取結果集的工作&#xff0c;使得開發者可以更專注于 SQL 本身&#xff0c;而不必花費過多…