QT实战--qt各种按钮实现
本篇介绍qt一些按钮的实现,包括正常按钮;带有下拉箭头的按钮的各种实现;按钮和箭头两部分分别响应;图片和按钮大小一致;图片和按钮大小不一致的处理;文字和图片位置的按钮
效果图如下:
详细实现如下:
1.正常按钮
代码:
m_normalBtn = new QPushButton(this);m_normalBtn->setObjectName("mynormal");m_normalBtn->setFixedSize(240, 36);m_normalBtn->setText("正常按钮");//m_normalBtn->setEnabled(false);m_normalBtn->move(10,10);
qss文件:
/**1.正常按钮***/
QPushButton#mynormal
{
background-color:transparent;
background-image: url(:/skin/pic/login_btn.png);
font-size:14px;
font-family:"Arial";
color:#666666;
}QPushButton#mynormal:hover
{
background-image: url(:/skin/pic/login_btn_hover.png);
color:#F0103C;
}QPushButton#mynormal:pressed
{
background-image: url(:/skin/pic/login_btn_press.png);
color:#F0103C;
}QPushButton#mynormal:disabled
{
background-image: url(:/skin/pic/login_btn_disable.png);
color: #73797e;
}
2.带有上箭头的按钮
代码:
m_upArrowBtn = new QPushButton("更多", this);m_upArrowBtn->setObjectName("myup");m_upArrowBtn->setCheckable(false);m_upArrowBtn->setFixedSize(60,22);m_upArrowBtn->move(10,60);
qss文件:
/***2上箭头*********/
QPushButton#myup
{
border:none;
background-color:rgb(0,255,0);
background-image: url(:/skin/pic/morebtn_up.png);
background-origin: content;
background-position: right;
background-repeat: no-repeat;font-size:12px;
font-family:"Arial";
color:#666666;
text-align:left ;
padding-top: 0px;
padding-bottom:0px;
padding-left:11px;
padding-right: 11px;}QPushButton#myup:hover,
QPushButton#myup:pressed
{
background-image: url(:/skin/pic/morebtn_up_hover.png);
color:#F0103C;
}QPushButton#myup::menu-indicator
{image: none;
}
3.带有下箭头的按钮
1)利用特殊符号实现
代码:
m_font = QFont("Arial", 12);//字体在qss中有m_font.setPixelSize(12);QFontMetrics fm(m_font);QString strText = "全部板块⏷";int nWidth = fm.boundingRect(strText).width();int nWidth2 =fm.width(strText)+20;m_downArrowBtn1 = new QPushButton(strText, this);m_downArrowBtn1->setFont(m_font);m_downArrowBtn1->setFixedSize(nWidth2,22);m_downArrowBtn1->move(10,90);
2)利用图片实现
代码:
m_font = QFont("Arial", 12);//字体在qss中有m_font.setPixelSize(12);QFontMetrics fm(m_font);strText = "全部板块";int picWidth = 6;int nGap = 5;nWidth = fm.width(strText) + nGap + picWidth;m_downArrowBtn2 = new QPushButton(strText, this);m_downArrowBtn2->setObjectName("mydown2");m_downArrowBtn2->setCheckable(false);m_downArrowBtn2->setFixedSize(nWidth,22);m_downArrowBtn2->move(10,120);connect(m_downArrowBtn2, &QPushButton::clicked, this,&Dialog::onClicked_downArrowBtn2);
qss文件:
QPushButton#mydown2
{
border:none;
background-color:rgb(0,255,0);
background-image: url(:/skin/pic/arrow_dow_normal.png);
background-origin: content;
background-position: right;
background-repeat: no-repeat;font-size:12px;
font-family:"Arial";
color:#666666;
text-align:left ;
padding-top: 0px;
padding-bottom:0px;
padding-left:0px;
padding-right: 0px;}QPushButton#mydown2:hover,
QPushButton#mydown2:pressed
{
background-image: url(:/skin/pic/arrow_dow_hover.png);
color:#F0103C;
}QPushButton#mymore::menu-indicator
{image: none;
}
3)利用setMenu,和属性menu-indicator
代码:
m_menu3 = new QMenu(this);connect(m_menu3, &QMenu::triggered, this, &Dialog::slotMenuTriggered_downArrowBtn3);QAction *action1 = m_menu3->addAction("11111");QAction *action2 = m_menu3->addAction("22222");QAction *action3 = m_menu3->addAction("33333");QAction *action4 = m_menu3->addAction("44444");action1->setData(10);action2->setData(11);action3->setData(12);action4->setData(13);m_downArrowBtn3 = new QPushButton(strText, this);m_downArrowBtn3->setObjectName("mydonw3");m_downArrowBtn3->setCheckable(false);m_downArrowBtn3->setFixedSize(nWidth,22);m_downArrowBtn3->setMenu(m_menu3);//这个需要设置,设置后自动会出现下三角,如果不设置,就不会出现下三角m_downArrowBtn3->move(10,150);
qss文件:
QPushButton#mydonw3
{
border:none;
background-color:transparent;
font-size:12px;
font-family:"Arial";
color:#666666;
padding-top: 0px;
padding-bottom:0px;
padding-left:0;
padding-right: 0px;}QPushButton#mydonw3:hover,
QPushButton#mydonw3:pressed
{
color:#F0103C;
}QPushButton#mydonw3::menu-indicator
{image: url(:/skin/pic/arrow_dow_normal.png);subcontrol-position: right center;subcontrol-origin: padding;right: 2px;
}QPushButton#mydonw3::menu-indicator:hover,
QPushButton#mydonw3::menu-indicator:pressed
{image: url(:/skin/pic/arrow_dow_hover.png);
}
4.带有下箭头的按钮:按钮和箭头两部分分别响应
代码1:qmymenubutton.h
#ifndef QMYMENUBUTTON_H
#define QMYMENUBUTTON_H#include <QPushButton>
#include <QObject>
#include <QMenu>
#include <QWidget>#include <vector>//struct tagMenuBtnItem
//{
// int nMenuId;
// QString strMenuText;
//};class QMyMenuButton : public QPushButton
{Q_OBJECTpublic:QMyMenuButton(QString strText, QWidget *parent);virtual ~QMyMenuButton();void setButtonId(int nBtnId);void setSupportMenu(bool bMenu);signals:void signalBtnClicked(int);void signalBtnRightArrowClicked(int);protected:void mouseReleaseEvent(QMouseEvent *e) override;private:int m_nBtnId = -1;bool m_bSupportMenu = false;//QMenu *m_pMenu = nullptr;};#endif // QMYMENUBUTTON_H
代码2:qmymenubutton.cpp
#include "qmymenubutton.h"
#include <QMouseEvent>
#include <QAction>QMyMenuButton::QMyMenuButton(QString strText, QWidget *parent): QPushButton(strText, parent)
{}QMyMenuButton::~QMyMenuButton()
{}void QMyMenuButton::setButtonId(int nBtnId)
{m_nBtnId = nBtnId;}void QMyMenuButton::setSupportMenu(bool bMenu)
{m_bSupportMenu = bMenu;//m_pMenu = new QMenu(this);}//void QMyMenuButton::setMenuData()
//{
// //测试
// QAction *action1 = m_pMenu->addAction("11111");
// QAction *action2 = m_pMenu->addAction("22222");
// QAction *action3 = m_pMenu->addAction("33333");
// QAction *action4 = m_pMenu->addAction("44444");//}void QMyMenuButton::mouseReleaseEvent(QMouseEvent *e)
{if(m_bSupportMenu){QPoint pos = e->pos();int picWidth = 8;QRect rect = this->rect();int totoalWidth = rect.width();QRect rect1 = rect;rect1.setWidth(totoalWidth - picWidth-2);QRect rect2 = rect;rect2.setLeft(rect1.right());if(rect1.contains(pos)){emit signalBtnClicked(m_nBtnId);}else if(rect2.contains(pos)){emit signalBtnRightArrowClicked(m_nBtnId);}}else{emit signalBtnClicked(m_nBtnId);}
}
代码3:使用
strText = "全部板块";int btnPicWidth = 6;int btnInternal = 2;int width = fm.width(strText) + btnInternal + btnPicWidth;int height = 20;//正常情况m_myMenuButtonBtn1 = new QMyMenuButton(strText, this);m_myMenuButtonBtn1->setObjectName("mymenuBtnNormal");m_myMenuButtonBtn1->setFixedSize(width, height);m_myMenuButtonBtn1->setButtonId(10000);m_myMenuButtonBtn1->move(18,180);connect(m_myMenuButtonBtn1, &QMyMenuButton::signalBtnClicked, this, &Dialog::slotBtnClicked_myMenuButton);//分开情况m_myMenuButtonBtn2 = new QMyMenuButton(strText, this);m_myMenuButtonBtn2->setObjectName("mymenuBtnArrow");m_myMenuButtonBtn2->setFixedSize(width, height);m_myMenuButtonBtn2->setButtonId(20000);m_myMenuButtonBtn2->setSupportMenu(true);//带箭头m_myMenuButtonBtn2->move(18,210);connect(m_myMenuButtonBtn2, &QMyMenuButton::signalBtnClicked, this, &Dialog::slotBtnClicked_myMenuButton);connect(m_myMenuButtonBtn2, &QMyMenuButton::signalBtnRightArrowClicked, this, &Dialog::slotBtnRightArrowClicked_myMenuButton);m_menu4 = new QMenu(this);connect(m_menu4, &QMenu::triggered, this, &Dialog::slotMenuTriggered_myMenuButton);
void Dialog::slotBtnClicked_myMenuButton(int id)
{int aa = 0;aa++;}void Dialog::slotBtnRightArrowClicked_myMenuButton(int id)
{if(id == 10000){int aa = 0;aa++;}else if(id == 20000){m_menu4->clear();QAction *action1 = m_menu4->addAction("11111");QAction *action2 = m_menu4->addAction("22222");QAction *action3 = m_menu4->addAction("33333");QAction *action4 = m_menu4->addAction("44444");action1->setData(10);action2->setData(11);action3->setData(12);action4->setData(13);QPoint pt = m_myMenuButtonBtn2->rect().bottomLeft();pt = m_myMenuButtonBtn2->mapToGlobal(pt);m_menu4->move(pt);m_menu4->show();}}
qss文件:
/*********5.mymenuBtnNormal******************/
QMyMenuButton#mymenuBtnNormal
{
background-color:rgb(0,255,0);
font-size:12px;
font-family:"Arial";
color:#666666;
padding-top: 0px;
padding-bottom:0px;
padding-left:0px;
padding-right: 0px;
border:none;
}QMyMenuButton#mymenuBtnNormal:hover
{
color:#F0103C;
}/*
QMyMenuButton#mymenuBtnNormal:pressed
{
color:#F0103C;
}
*//************6.mymenuBtnArrow***************/
QMyMenuButton#mymenuBtnArrow
{
background-color:rgb(0,255,0);
background-image: url(:/skin/pic/arrow_dow_normal.png);
background-origin: content;
background-position: right;
background-repeat: no-repeat;font-size:12px;
font-family:"Arial";
color:#666666;
text-align:left ;
padding-top: 0px;
padding-bottom:0px;
padding-left:0px;
padding-right: 0px;
border:none;
}QMyMenuButton#mymenuBtnArrow:hover
{
background-image: url(:/skin/pic/arrow_dow_hover.png);
color:#F0103C;
}/*
QMyMenuButton#mymenuBtnArrow:pressed
{
background-image: url(:/skin/pic/morebtn_up_hover.png);
color:#F0103C;
}
*/QMyMenuButton#mymenuBtnArrow::menu-indicator
{image: none;
}
5.跟图片大小一样的按钮、跟图片大小一样的按钮
代码:
//5.跟图片大小一样的按钮m_picBtn1 = new QPushButton("", this);m_picBtn1->setObjectName("mybtn_pic1");m_picBtn1->setFixedSize(34,20);m_picBtn1->move(5,240);//6.跟图片大小不一样的按钮m_picBtn2 = new QPushButton("", this);m_picBtn2->setCheckable(true);m_picBtn2->setObjectName("mybtn_pic2");m_picBtn2->setFixedSize(64,40);m_picBtn2->move(5,280);
qss文件:
/**********7.mybtn_pic1+mybtn_pic2*******************/
QPushButton#mybtn_pic1
{
background-color:#FFC37C;
background-image: url(:/skin/pic/top_vip.png);
background-origin: content;
background-position: center;
background-repeat: no-repeat;
padding-top: 0px;
padding-bottom:0px;
padding-left:0px;
padding-right: 0px;
border:none;
}QPushButton#mybtn_pic2
{
background-color:#141414;
background-image: url(:/skin/pic/left_vip_normal.png);
background-origin: content;
background-position: center;
background-repeat: no-repeat;
padding-top: 0px;
padding-bottom:0px;
padding-left:0px;
padding-right: 0px;
border:none;
}QPushButton#mybtn_pic2:hover
{
background-color:#262626;
background-image: url(:/skin/pic/left_vip_hover.png);
}QPushButton#mybtn_pic2:checked
{
background-color:#000000;
background-image: url(:/skin/pic/left_vip_check.png);
}
6.文字和图片不在一起的按钮
1)QPushButton实现
代码:
m_textPicBtn1 = new QPushButton("文字", this);m_textPicBtn1->setObjectName("pushButton_9");m_textPicBtn1->setFixedSize(62,49);m_textPicBtn1->move(5,350);m_textPicBtn2 = new QPushButton("文字", this);m_textPicBtn2->setObjectName("pushButton_10");m_textPicBtn2->setFixedSize(62,49);m_textPicBtn2->move(105,350);m_textPicBtn3 = new QPushButton("文字", this);m_textPicBtn3->setObjectName("pushButton_11");m_textPicBtn3->setFixedSize(62,49);m_textPicBtn3->move(205,350);m_textPicBtn4 = new QPushButton("文字", this);m_textPicBtn4->setObjectName("pushButton_12");m_textPicBtn4->setFixedSize(62,49);m_textPicBtn4->move(305,350);m_textPicBtn5 = new QPushButton("文字", this);m_textPicBtn5->setObjectName("pushButton_13");m_textPicBtn5->setFixedSize(62,49);m_textPicBtn5->move(405,350);
qss文件:
/***图片在左*****/
QPushButton#pushButton_9 {border:none;background-color: #60C171;background-image: url(:/skin/pic/hq.png);background-origin: content;background-position: left;background-repeat: no-repeat;text-align: right;padding-left: 2px;padding-right: 2px;font-size: 12px;color: #FFFFFF;
}/***图片在右*****/
QPushButton#pushButton_10 {border:none;background-color: #60C171;background-image: url(:/skin/pic/hq.png);background-origin: content;background-position: right;background-repeat: no-repeat;text-align: left;padding-right: 2px;padding-left: 2px;font-size: 12px;color: #FFFFFF;
}/***图片在上*****/
QPushButton#pushButton_11 {border:none;background-color: #60C171;background-image: url(:/skin/pic/hq.png);background-origin: content;background-position: top;background-repeat: no-repeat;text-align: bottom;padding-top: 2px;padding-bottom: 2px;font-size: 12px;color: #FFFFFF;
}/***图片在下*****/
QPushButton#pushButton_12 {border:none;background-color: #60C171;background-image: url(:/skin/pic/hq.png);background-origin: content;background-position: bottom;background-repeat: no-repeat;text-align: top;padding-top: 2px;padding-bottom: 2px;font-size: 12px;color: #FFFFFF;
}/*****特殊位置*****/
QPushButton#pushButton_13 {border:none;background-color: #60C171;background-image: url(:/skin/pic/hq.png);background-origin: content;background-position: right bottom;background-repeat: no-repeat;text-align: left top;padding-left: 2px;padding-top: 2px;padding-right: 2px;padding-bottom: 2px;font-size: 12px;color: #FFFFFF;
}
2) QToolButton实现
代码:
m_toolbtn1 = new QToolButton(this);m_toolbtn1->setText("文字");m_toolbtn1->setIcon(QIcon(":/skin/pic/hq.png"));m_toolbtn1->setIconSize(QSize(20,16));m_toolbtn1->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);m_toolbtn1->setLayoutDirection(Qt::LeftToRight);m_toolbtn1->setObjectName("toolButton1");m_toolbtn1->setFixedSize(62,49);m_toolbtn1->move(5,450);m_toolbtn2 = new QToolButton(this);m_toolbtn2->setText("文字");m_toolbtn2->setIcon(QIcon(":/skin/pic/hq.png"));m_toolbtn2->setIconSize(QSize(20,16));m_toolbtn2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);m_toolbtn2->setLayoutDirection(Qt::RightToLeft);m_toolbtn2->setObjectName("toolButton2");m_toolbtn2->setFixedSize(62,49);m_toolbtn2->move(105,450);m_toolbtn3 = new QToolButton(this);m_toolbtn3->setText("文字");m_toolbtn3->setIcon(QIcon(":/skin/pic/hq.png"));m_toolbtn3->setIconSize(QSize(20,16));m_toolbtn3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);m_toolbtn3->setLayoutDirection(Qt::LeftToRight);m_toolbtn3->setObjectName("toolButton3");m_toolbtn3->setFixedSize(62,49);m_toolbtn3->move(205,450);//m_toolbtn4 = new QToolButton(this);QPixmap pic;pic.load(":/skin/pic/hq.png");QLabel *iconLabel = new QLabel;iconLabel->setAlignment(Qt::AlignCenter);iconLabel->setPixmap(pic);QLabel *textLabel = new QLabel;textLabel->setAlignment(Qt::AlignCenter);textLabel->setText("文字");QVBoxLayout *myLayout = new QVBoxLayout();myLayout->setContentsMargins(0, 0, 0, 0);myLayout->setSpacing(0);myLayout->addStretch();myLayout->addWidget(textLabel);myLayout->addSpacing(10);myLayout->addWidget(iconLabel);myLayout->addStretch();m_toolbtn4->setLayout(myLayout);m_toolbtn4->setFixedSize(62,49);m_toolbtn4->setObjectName("toolButton4");m_toolbtn4->move(305,450);
qss文件:
/***图片在左*****/
QToolButton#toolButton1{border:none;background-color: #60C171;font-size: 12px;color: #FFFFFF;padding-left: 4px;}/***图片在右*****/
QToolButton#toolButton2{
border:none;
background-color: #60C171;
font-size: 12px;
color: #FFFFFF;
padding-left: 4px;}/***图片在上*****/
QToolButton#toolButton3{
border:none;
background-color: #60C171;
font-size: 12px;
color: #FFFFFF;
padding-top: 4px;}/***图片在下*****/
QToolButton#toolButton4{
border:none;
background-color: #60C171;
}QToolButton#toolButton4 QLabel{
border:none;
background-color: transparent;
font-size: 12px;
color: #FFFFFF;
}
附加源码:QT实战-qt各种按钮实现
相关文章:

QT实战--qt各种按钮实现
本篇介绍qt一些按钮的实现,包括正常按钮;带有下拉箭头的按钮的各种实现;按钮和箭头两部分分别响应;图片和按钮大小一致;图片和按钮大小不一致的处理;文字和图片位置的按钮 效果图如下: 详细实现…...

RNN And CNN通识
CNN And RNN RNN And CNN通识一、卷积神经网络(Convolutional Neural Networks,CNN)1. 诞生背景2. 核心思想和原理(1)基本结构:(2)核心公式:(3)关…...
生产环境中:Flume 与 Prometheus 集成
在生产环境中,将 Apache Flume 与 Prometheus 集成的过程,需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法,连同原理和原因进行逐步解释,让刚接触的初学者也能完成集…...

求平均年龄
求平均年龄 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数…...
Ardusub源码剖析(1)——AP_Arming_Sub
代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...

【NLP 2、机器学习简介】
人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...

数据结构与算法——N叉树(自学笔记)
本文参考 N 叉树 - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 遍历 前序遍历:A->B->C->E->F->D->G后序遍历:B->E->F->C->G->D->A层序遍历:A->B->C->D->…...

【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS
目录 图片展示 开始游戏 手动升级(满100%即可升级) 升级完成,即可解锁打怪模式 新增功能说明: 如何操作: 完整代码 实现一个简单的斗破苍穹修炼文字游戏,你可以使用HTML、CSS和JavaScript结合来构建…...
【Oracle】个人收集整理的Oracle常用SQL及命令
【建表】 create table emp( id number(12), name nvarchar2(20), primary key(id) ); 【充值一】 insert into emp select rownum,dbms_random.string(*,dbms_random.value(6,20)) from dual connect by level<101; 【充值二】 begin for i in 1..100 loop inser…...
Linux内核4.14版本——ccf时钟子系统(5)——通用API
1. clk_get 1.1 __of_clk_get_by_name 1.2 clk_get_sys 2. clk_prepare_enable 2.1 clk_prepare 2.2 clk_enable 3. clk_set_rate 1. clk_get clock get是通过clock名称获取struct clk指针的过程,由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_g…...

安装MySQL 5.7 亲测有效
前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…...

《Django 5 By Example》阅读笔记:p455-p492
《Django 5 By Example》学习第 16 天,p455-p492 总结,总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现,但是折扣码是手动生成的,感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存࿰…...

Element-UI 官网的主题切换动画
文章目录 实现圆形扩散过渡动画 实现一下 Element-UI 官网的主题切换动画加粗样式 实现 首先我们起一个 html 文件,写一个按钮,以及简单的背景颜色切换,来模拟主题的切换 想要实现过渡效果,需要先用到一个 JavaScript 的原生方…...
Golang 构建学习
Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量,GOPROXY,GOPATH,GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)
本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu (1)安装增强功能(Guest Additions) 首先,在网上下载VBoxGuestAdditions光盘映像文件 下载地址:Index of http://…...

分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?
一、CubeMX相关配置 1.1 相关引脚配置 1.2 相关时钟数配置 1.3 打开程序源码 二、相关函数分析...

C++优选算法十七 多源BFS
1.单源最短路问题 一个起点一个终点。 定义:在给定加权图中,选择一个顶点作为源点,计算该源点到图中所有其他顶点的最短路径长度。 2.多源最短路问题 定义:多源最短路问题指的是在图中存在多个起点,需要求出从这些…...
Mongodb入门到放弃
Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统,可以挑战单台服务器的容量。 例如,高查询率可以耗尽服务器的cpu容量&…...

青藤云安全携手财信证券,入选金融科技创新应用优秀案例
11月29日,由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性,成功入选金融科技创新应用优秀案例。 据悉&#x…...
在CentOS系统中安装工具包的时候报错的解决方法
我刚装了一个新的虚拟机,打算安装一些工具出现了错误信息 执行的命令如下: yum install -y yum-utils device-mapper-persistent-data lvm2错误信息如下 Cannot find a valid baseurl for repo: base/7/x86_64搜索了一下原因有好几种。 一是网络不通…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...

VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...

基于Python的气象数据分析及可视化研究
目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...