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;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/229515.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSGO游戏盲盒开箱源码 盲盒对战、幸运开箱、积分商城、Fl盲盒

源码介绍&#xff1a; CSGO游戏盲盒开箱源码 盲盒对战、幸运开箱、积分商城、Fl盲盒。这个是一个新花样玩法的盲盒程序。 仅供学习&#xff0c;请勿商用&#xff01;请购买正版程序运营。 代码下载&#xff1a;百度网盘

一篇文章带你快速入门 Vue 核心语法

一篇文章带你快速入门 Vue 核心语法 一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) …

OpenVINS学习1——数据集配置与运行

前言 OpenVINS是基于MSCKF的开源VIO算法&#xff0c;有非常详细的官网文档可以学习使用&#xff0c;将来一段时间的主要实践工作&#xff0c;就是深度掌握这份开源代码。 https://docs.openvins.com/ 一、环境配置与Euroc数据集运行 我的环境是Ubuntu20.04&#xff0c;ROS1&a…

Python与ArcGIS系列(十六)重复节点检测

目录 0 简述1 实例需求2 arcpy开发脚本0 简述 在处理gis线图层和面图层数据时,有时候会遇到这种情况:数据存在重复节点或伪重复节点(两个节点距离极小),往往我们需要对这种数据进行检测标注或进行修改。本篇将介绍如何利用arcpy及arcgis的工具箱实现这个功能。 1 实例需求…

Axure原型图表组件库,数据可视化元件(Axure9大屏组件)

针对Axure制作的大屏图表元件库&#xff0c;帮助产品经理更高效地制作高保真图表原型&#xff0c;是产品经理必备元件工具。现分享完整的组件库&#xff0c;大家一起学习。 本组件库的图表模块&#xff0c;已包含所有常用的图表&#xff0c;以下为部分组件截图示意。文末可下载…

微信头像上传失败?照片尺寸修改方法大揭秘

微信上传头像失败是大家经常遇到的问题之一&#xff0c;其中的原因有可能是因为网络问题&#xff0c;也有可能是因为图片本身的问题&#xff0c;比如图片尺寸不符合平台要求&#xff0c;这时候&#xff0c;我们只需要通过给照片尺寸修改一下就可以解决&#xff0c;那么怎么修改…

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理

设备目录/dev Linux 有一个特殊的目录&#xff0c;其中包含代表每个连接设备的文件&#xff1a;相应命名的 /dev 目录。 /dev中有很多设备列表。 特别令人感兴趣的是设备 sda1、sda2、sda3、sdb 和 sdb1&#xff0c;它们通常是硬盘驱动器及其分区以及 USB 闪存驱动器及其分区…

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…

如何快速完成企业私有云部署

快解析赋能企业私有云部署 ​ 很多企业形成了以总部为中心的多点生产体系结构&#xff0c;并借助网络化办公工具搭建跨区域协同办公系统&#xff0c;满足总部与分支机构间的信息互通&#xff0c;进而促进异地业务的信息共享&#xff0c;提高办公处理效率和综合管理水平。 北…

参与创作①周年啦~

写在前面 今天看了消息才知道&#xff0c;原来开始创作已经一年了。此篇无干货&#xff0c;纯白话&#xff0c;纯记录。 机缘 参与CSDN创作已经一年有余&#xff0c;犹记得第一篇博文是为了整理好所学内容&#xff0c;方便自己复习。没想到后面也陆陆续续发了些其他内容&…

python的websocket方法教程

WebSocket是一种网络通信协议&#xff0c;它在单个TCP连接上提供全双工的通信信道。在本篇文章中&#xff0c;我们将探讨如何在Python中使用WebSocket实现实时通信。 websockets是Python中最常用的网络库之一&#xff0c;也是websocket协议的Python实现。它不仅作为基础组件在…

SIMULINK 单相半波整流电路仿真

SIMULINK 单相半波整流电路仿真 去除毛刺&#xff0c;改步长 光滑如下&#xff1a;

嵌入版python作为便携计算器(安装及配置ipython)

今天用别的电脑调试C&#xff0c;需要计算反三角函数时发现没有趁手工具&#xff0c;忽然想用python作为便携计算器放在U盘&#xff0c;遂想到嵌入版python 懒得自己配可以直接下载&#xff0c;使用方法见第4节 1&#xff0c;下载embeddable python&#xff08;嵌入版python&…

PCTFWP

web Sign In 查看源代码&#xff0c;访问提示文件就可得到flag easyupload 先上传一个图片马&#xff0c;会提示特洛伊文件&#xff0c;于是就改文件名&#xff0c;重新上传就可以得到flag 类似&#xff1a; [MoeCTF 2022]what are y0u uploading&#xff1f; 先做我 ?po…

SRR参考设计中SRR_DSS_mmWaveTask函数源码分析

相应的说明都已注释的形式写出来。 上面两个中断是在初始化的时候注册的&#xff0c;在SRR_DSS_initTask函数中&#xff0c;如下所示 后面会接着分析函数MmwDemo_processChirp和MmwDemo_interFrameProcessing。

维普论文查重率高【详细说明】

大家好&#xff0c;今天来聊聊维普论文查重率高&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 维普论文查重率高&#xff1a;原因分析与降重技巧 背景介绍 在学术领域&#xff0c;论文的重复率是衡量其…

一文2500字使用Python进行GRPC和Dubbo协议的高级测试

01、GRPC测试 GRPC&#xff08;Google Remote Procedure Call&#xff09;是一种高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;由 Google开发并基于Protocol Buffers&#xff08;protobuf&#xff09;进行通信。它使用了HTTP/2协议作为传输层&#…

机器学习-聚类问题

前言 聚类算法又叫做”无监督分类“&#xff0c;目标是通过对无标记训练样本来揭示数据的内在性质及 规律&#xff0c;为进一步的数据分析提供基础。 Kmeans 作为聚类算法的典型代表&#xff0c;Kmeans可以说是最简单的聚类算法&#xff0c;没有之一&#xff0c;那她是怎么完…

元宇宙:重塑游戏行业体验下一个前沿

游戏行业在其整个历史中经历了显著的转变&#xff0c;从超级马里奥的像素化冒险发展到Red Dead Redemption等游戏中迷人的开放世界体验。随着时间的推移&#xff0c;游戏不断突破数字领域所能达到的极限。然而&#xff0c;被称为元宇宙的突破性演变将彻底改变游戏行业&#xff…

Python-关系运算符详解

关系运算符&#xff1a;比较两个操作数的大小或者相等关系 < > ! 1、关系运算符的关系表达式返回值是布尔类型bool 成立就是真&#xff0c;即1&#xff1b;不成立就是假&#xff0c;即0 2、关系运算符还可以比较字符 字符根据字典序比较&#xff0c;先看首字母在…