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.mzph.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 文件&…