P3 Qt 控件 —— pushButton

前言

? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

🎬 個人主頁:@ChenPi

🐻推薦專欄1: 《C++_@ChenPi的博客-CSDN博客》????

🔥 推薦專欄2: 《Linux C應用編程(概念類)_@ChenPi的博客-CSDN博客》???
🌺本篇簡介 ?:這一章我們學一下Qt中經常使用控件——按鈕

主要用來開發圖形用戶界面(Graphical User Interface,簡 稱 GUI)程序

Qt 雖然經常被當做一個 GUI 庫,用來開發圖形界面應用程序,但這并不是 Qt 的全部

Qt 除了可以繪制漂亮的界面(包括控件、布局、交互),還包含很多其它功能

比如多線程、 訪問數據庫、圖像處理、音頻視頻處理、網絡通信、文件操作等

所以如果學嵌入式,那么Qt就是其中一個大方向了

本專欄的使用的

  1. Linux操作系統是Ubuntu18.4?
  2. Qt的版本是Qt5.12.9

01 控件介紹

pushButton就是一個正常的按鈕,我們點擊,松開,懸停這些Qt都有對應的信號可以觸發,我們只要把信號和槽連接起來就可以使用了

02用法介紹

pushButton按鈕控制窗口換膚,通過單擊不同的按鈕,改變窗口的顏色。

就像這樣三個按鈕,控制窗口背景顏色?

我們先新建一個Qt的項目,如果還不會的話可以看上一章

P2 Qt Creator創建第一個Qt程序-CSDN博客

?

我們來看下代碼如何實現

我們先看下頭文件

還有個箭頭忘記標的slots就是槽函數的意思了

定義了三個槽函數

看完頭文件,我們來看下mainwindow.cpp的類構造函數吧

?我們開分析一下我們的代碼

?

沒按下按鈕前的樣子?

第6行:setGeometry就是設置窗口的位置及大小

第8-10:實例化對象,這些就是C++的內容了

12-15行:這個是設置按鈕顏色,可以稍微記一下setStyleSheet這個函數

這個函數是設置樣式的,就是想要各種花里胡哨的,就可以通過它設置

?

然后我們設置顏色的方式也有很多,圖中就有三種不同的方式

如果想要設置更好看的,可以參考一下

QPushButton {
background-color: rgb(0, 150, 0);
color: rgb(255, 255, 255);
color: white;                    /* 文字顏色 */
background-color: #473C8B;       /* 背景色 */
border-style: outset;            /* 邊框風格 */
border-width: 2px;               /* 邊框寬度 */
border-radius: 5px;              /* 邊框圓角 */
border-color: #8B7355;           /* 邊框顏色 */
font: bold 14px;                 /* 字體 */
min-width: 2em;                  /* 控件最小寬度 */
min-height: 2px;                 /* 控件最小高度 */
font-family: 華文新魏;            /* 字庫 */
padding: 5px;                    /* 內邊距 */
padding-left:6px;                /* 文字橫向偏移 */
padding-top:6px;                 /* 文字縱向偏移 */
}

那么顏色的RGB值這些這么知道呢??

?RGB顏色查詢對照表|RGB顏色|三原色配色表 (sojson.com)

瀏覽器搜一下RGB對照表就有

17-19行:就是設置按鍵的位置及大小了

22-24行:這個是信號槽連接了

我們看到這里有一個connet函數,就是連接的意思

有四個參數,第一個參數是pushbutton就是我們前面定義的按鍵對象 ,也就是信號的發出者

那誰接收信號?那就是第三參數this,this是一個關鍵字,就是當前代表類,C++的知識,我的C++

專欄有

參數2和參數4就是信號和槽了

簡單來說,就是參數1按鍵被按下后,觸發了點擊clicked信號,然后返送給this,最后就執行槽函數了

那我們槽函數到底干了什么呢?

?我們剛不是說了嘛?當按鍵按下后,發出信號,最后槽函數執行

我們看下槽函數的內容,是不是很熟啊,setStylesheet啊,剛見過

所以槽函數就是我們設置窗口顏色的地方了

只要對應顏色對應按鍵按下后,我們窗口就變為對應顏色

我們接著看

03效果運行

為了看清我們那個按鍵按下,我們加個打印

在qt中我們打印需要頭文件

?我們加一下打印,我們跑一下是不是這樣

Ctrl + R運行

大概就是這樣?

如果有什么不對的,歡迎指正

有哪里不理解的,歡迎請教

mainwindow.c代碼,需要源碼也可以找我,太多了,就不貼了

#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setGeometry(0,0,800,480);   //800.480設置窗口的大小  0 0為窗口左上角的坐標pushbutton1 = new QPushButton("紅色",this);   //實例化對象pushbutton2 = new QPushButton("綠色",this);pushbutton3 = new QPushButton("藍色",this);pushbutton1->setStyleSheet("QPushButton{background-color:red;}");  //設置樣式pushbutton2->setStyleSheet("QPushButton{background-color:#00EE00;}");pushbutton3->setStyleSheet("QPushButton{background-color:rgb(0,0,255);}");pushbutton1->setGeometry(200,200,80,50);  //設置按鍵的位置即大小pushbutton2->setGeometry(300,200,80,50);pushbutton3->setGeometry(400,200,80,50);connect(pushbutton1,SIGNAL(clicked()),this,SLOT(pushButton1_Clicked()));  //信號槽連接connect(pushbutton2,SIGNAL(clicked()),this,SLOT(pushButton2_Clicked()));connect(pushbutton3,SIGNAL(clicked()),this,SLOT(pushButton3_Clicked()));
}MainWindow::~MainWindow()
{
}//槽函數,設置窗口顏色的變化
void MainWindow::pushButton1_Clicked()
{this->setStyleSheet("MainWindow{background-color:red}");qDebug()<<"按鍵1按下"<<endl;
}void MainWindow::pushButton2_Clicked()
{this->setStyleSheet("MainWindow{background-color:green}");qDebug()<<"按鍵2按下"<<endl;}void MainWindow::pushButton3_Clicked()
{this->setStyleSheet("MainWindow{background-color:blue}");qDebug()<<"按鍵3按下"<<endl;}

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

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

相關文章

Python evalml 庫:自動化機器學習的新前景

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 在機器學習領域&#xff0c;evalml 庫嶄露頭角&#xff0c;為開發者提供了一個強大而高效的自動化機器學習框架。本文將深入介紹 evalml 的核心功能、使用方法以及在實際項目中的應用。通過詳實的示例代碼&#…

前端高頻面試題大全-面試必看

內容較多&#xff0c;建議查看目錄&#xff0c;方便食用 高頻 React和Vue的區別 通常解法&#xff1a;vue是采用指令結合vue-loader實現構件用戶界面的漸進式框架&#xff0c;React是采用JSX構件用戶界面的組件化開發 詳細解法&#xff1a;在渲染界面的時候DOM操作是昂貴的&…

【Linux系統編程】項目自動化構建工具make/Makefile

介紹&#xff1a; make和Makefile是用于編譯和構建C/C程序的工具和文件。Makefile是一個文本文件&#xff0c;其中包含了編譯和構建程序所需的規則和指令。它告訴make工具如何根據源代碼文件生成可執行文件&#xff0c;里面保存的是依賴關系和依賴方法。make是一個命令行工具&a…

智匯恒星科技|控樂屋.全宅智能冠軍代言來啦, 智慧家居千億藍海

隨著5G、大數據、云計算、物聯網等技術的發展&#xff0c;智能化正覆蓋人們生活的方方面面&#xff0c;全屋智能的出現為“一鍵式”智能家居生活享受提供無限可能。近年來智能家居行業總體規模增長迅速&#xff0c;數據顯示&#xff0c;2022年中國智能家居行業市場規模約為6200…

Java內部類

文章目錄 什么是 Java 中的內部類&#xff1f;有哪些類型的內部類&#xff1f;匿名內部類局部內部類&#xff08;定義在方法中的類&#xff09;局部內部類靜態內部類 Java 類中不僅可以定義變量和方法&#xff0c;還可以定義類&#xff0c;這樣定義在類內部的類就被稱為內部類。…

Java期末復習題之封裝

點擊返回標題->23年Java期末復習-CSDN博客 第1題. 定義一個類Person,定義name和age私有屬性&#xff0c;定義有參的構造方法對name和age進行初始化。在測試類中創建該類的2個對象&#xff0c;姓名、年齡分別為lili、19和lucy、20&#xff0c;在屏幕打印出2個對象的姓名和年齡…

2024年江蘇省職業院校技能大賽信息安全管理與評估 理論題(樣卷)

2024年江蘇省職業院校技能大賽信息安全管理與評估 理論題&#xff08;樣卷&#xff09; 理論技能與職業素養&#xff08;100分&#xff09; 2024年江蘇省職業院校技能大賽&#xff08;高職學生組&#xff09; 模塊三“信息安全管理與評估”理論技能 【注意事項】 Geek極安云…

Qt對excel操作

Qt庫中自帶對excel操作的模塊QAxObject&#xff0c;QAxObject是Qt提供給程序員從代碼中訪問Office的對象類&#xff0c;其本質上是一個面向微軟操作系統的COM接口。 QAxObject將所有Office的工作簿、表格、文檔等都作為其子對象&#xff0c;程序員通過調用querySubObject()這個…

vue-quill-editor上傳圖片base64轉化為img標簽

vue-quill-editor傳圖片的話默認把圖片轉成了base64&#xff0c;會導致我們的參數特別大&#xff0c;不好渲染 基于vue-quill-editor重寫一個quill-editor組件 <template><div><quilleditorv-model"content"ref"myTextEditor":options&qu…

在線圖片轉Base64圖片的方法

html版(不包含跨域解決,輸入在線圖片地址即可轉換) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

Cisco 思科路由交換網絡設備 安全基線 安全加固操作

目錄 賬號管理、認證授權 本機認證和授權ELK-Cisco-01-01-01 設置特權口令 ELK-Cisco-01-02-01 ELK-Cisco-01-02-02 ???????登錄要求 ELK-Cisco-01-03-01 ???????ELK-Cisco-01-03-02 ELK-Cisco-01-03-03 日志配置 ELK-Cisco-02-01-01 通信協議 ELK-Cisco-…

軟考高級信息系統項目管理師經驗分享

考了三次終于考過了。 第一次&#xff0c;沒準備&#xff0c;打醬油。 第二次&#xff0c;不舍得花錢&#xff0c;自己復習&#xff0c;結果教材改版了都不知道。 第三次&#xff0c;改機考了。 總結一下這三次的經驗&#xff1a; 一、不是學霸型的一定要報班 報班的優點&…

實時動作識別學習筆記

目錄 yowo v2 yowof 判斷是在干什么,不能獲取細節信息 yowo v2 https://github.com/yjh0410/YOWOv2/blob/master/README_CN.md ModelClipmAPFPSweightYOWOv2-Nano1612.640ckptYOWOv2-Tiny

【prometheus】入門+實習需求實戰

prometheus官方教程 說明&#xff1a; 感冒了&#xff0c;寫點總結不浪費時間&#xff0c;聲明不會扯出來任何的私有代碼&#xff0c;畢竟要保密&#xff0c;只會講prometheus的官方有的&#xff0c;以及那些開源的代碼方法&#xff0c;例如prometheus客戶端代方法&#xff0…

QML中Dialog獲取close與open狀態

1.新建MyDialog.qml import QtQuick 2.15import QtQuick.Dialogs 1.2Dialog {id: rootvisible: falsetitle: qsTr("彈出對話框")width: 250height: 200} 2.main.qml中調用MyDialog import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15…

JS原生實現瀏覽器滾動條滾動側邊欄高亮響應

目錄 演示 ?編輯 需求 代碼 css html script 代碼解釋 1、獲取所有link-content 2、定義一個rectContent數組&#xff0c;然后循環allContents調用getClientRects()[0]獲取每個link-content元素與瀏覽器視口的關系 3、為數組追加link-content&#xff0c;用于設置側…

軟件設計師——面向對象技術(一)

&#x1f4d1;前言 本文主要是【面向對象技術】——軟件設計師—面向對象技術的文章&#xff0c;如果有什么需要改進的地方還請大佬指出?? &#x1f3ac;作者簡介&#xff1a;大家好&#xff0c;我是聽風與他&#x1f947; ??博客首頁&#xff1a;CSDN主頁聽風與他 &#…

C++學習筆記(十一)

一、類和對象 C面向對象的三大特性為&#xff1a;封裝、繼承、多態 C認為萬事萬物皆為對象&#xff0c;對象上有其屬性和行為 例如&#xff1a;人可以作為對象&#xff0c;屬性有姓名、年齡、身高......&#xff0c;行為有走、吃、睡覺 車也可以作為對象&#xff0c;屬性有輪…

官網IDM下載和安裝的詳細步驟

目錄 一、IDM是什么 二、下載安裝 三、解決下載超時的問題 四、谷歌瀏覽器打開IDM插件 谷歌瀏覽器下載官網&#x1f447; 五、測試 六、資源包獲取 一、IDM是什么 IDM&#xff08;internet download manager&#xff09;是一個互聯網下載工具插件&#xff0c;常見于用…

要求CHATGPT高質量回答的藝術:提示工程技術的完整指南—第 29 章:ChatGPT 插件

要求CHATGPT高質量回答的藝術&#xff1a;提示工程技術的完整指南—第 29 章&#xff1a;ChatGPT 插件 這是 ChatGPT 的另一個圣杯。它將徹底改變你使用 ChatGPT 的方式。ChatGPT 插件本質上是將 ChatGPT 的功能擴展到文本輸出之外。它允許你上傳圖片、視頻、音頻和 CSV 文件&…