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各种按钮实现

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务熔断-熔断器设计

文章目录 服务为什么需要熔断熔断器设计思想熔断器代码实现 服务为什么需要熔断 对于服务端采用的保护机制为服务限流。 对于服务调用端是否存在保护机制&#xff1f; 假如要发布一个服务 B&#xff0c;而服务 B 又依赖服务 C&#xff0c;当一个服务 A 来调用服务 B 时&#x…

入门数据结构JAVADS——如何构建一棵简单二叉排序树

目录 前言 什么是二叉排序树 二叉排序树的特点 二叉排序树示意图 构建二叉排序树 插入元素 搜索元素 删除元素 完整代码 结尾 前言 在整个十一月,笔者因为一些原因停笔了,但马上迈入12月进而进入2025年,笔者决定不再偷懒了,继续更新以促进学习的积极性.闲话说到这,今天…

更多开源创新 挑战OpenAI-o1的模型出现和AI个体模拟突破

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

BUUCTF—Reverse—Java逆向解密(10)

程序员小张不小心弄丢了加密文件用的秘钥&#xff0c;已知还好小张曾经编写了一个秘钥验证算法&#xff0c;聪明的你能帮小张找到秘钥吗&#xff1f; 注意&#xff1a;得到的 flag 请包上 flag{} 提交 需要用专门的Java反编译软件:jd-gui 下载文件&#xff0c;发现是个class文…

Redis(4):主从复制

一、主从复制概述 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(master)&#xff0c;后者称为从节点(slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。   默认情况下&#xff0c;每台Redis…

操作系统 | 学习笔记 | 王道 | 2.2处理机调度

2.2 处理机调度 文章目录 2.2 处理机调度2.2.1 调度的概念2.2.2 调度的目标2.2.3 调度的实现2.2.4 典型的调度算法错题总结&#xff1a; 2.2.1 调度的概念 调度的基本概念 处理机调度是对处理机进行分配&#xff0c;即从就绪队列中按照一定的算法&#xff08;公平、高效的原则&…

PostgreSQL的学习心得和知识总结(一百五十八)|在线调优工具pgtune的实现原理和源码解析

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

【问题】webdriver.Chrome()设置参数executable_path报不存在

场景1: 标红报错unresolved reference executable_path 场景2: 执行报错TypeError: __init__() got an unexpected keyword argument executable_path 原因&#xff1a; 上述两种场景是因为selenium4开始不再支持某些初始化参数。比如executable_path 解决&#xff1a; 方案…

JS听到了双生花的回响

日期对象 学会了日期对象可以让网页显示日期 是用来表示时间的对象&#xff0c;可以得到当前系统的时间 实例化 new关键字&#xff0c;就是实例化的代表 就比如说&#xff0c;你没有对象&#xff0c;但是你是程序员&#xff0c;这个时候你可以先定义一个类&#xff08;你的…

C++类中多线程的编码方式

问题 在C++代码中,一般的代码是需要封装在类里面,比如对象,方法等。否则就不能很好的利用C++面向对象的能力了。 但是这个方式在处理线程时会碰到一个问题。 考虑下面一个简单的场景: class demoC { public:std::thread t;int x;void threadFunc(){std::cout<<x&…

Chapter 17 v-model进阶

欢迎大家订阅【Vue2Vue3】入门到实践 专栏&#xff0c;开启你的 Vue 学习之旅&#xff01; 文章目录 1 v-model原理2 表单类组件封装3 v-model简化代码 1 v-model原理 1. 基本原理 v-model 本质上是一个语法糖&#xff0c;它将 value 属性 和 input 事件 的绑定合并为一个指令…

spring-boot-maven-plugin 标红

情况&#xff1a;创建好 Spring Boot 项目后&#xff0c;pom.xml 文件中 spring-boot-maven-plugin 标红。 解决方案&#xff1a;加上 Spring Boot 的版本即可解决。

电子应用设计方案-31:智能AI音响系统方案设计

智能 AI 音响系统方案设计 一、引言 智能 AI 音响作为一种新兴的智能家居设备&#xff0c;通过融合语音识别、自然语言处理、音频播放等技术&#xff0c;为用户提供便捷的语音交互服务和高品质的音乐体验。本方案旨在设计一款功能强大、性能稳定、用户体验良好的智能 AI 音响系…

“harmony”整合不同平台的单细胞数据之旅

其实在Seurat v3官方网站的Vignettes中就曾见过该算法&#xff0c;但并没有太多关注&#xff0c;直到看了北大张泽民团队在2019年10月31日发表于Cell的《Landscap and Dynamics of Single Immune Cells in Hepatocellular Carcinoma》&#xff0c;为了同时整合两类数据&#xf…

接口测试工具:reqable

背景 在众多接口测试工具中挑选出一个比较好用的接口测试工具。使用过很多工具&#xff0c;如Postman、Apifox、ApiPost等&#xff0c;基本上是同类产品&#xff0c;一般主要使用到的功能就是API接口和cURL&#xff0c;其他的功能目前还暂未使用到。 对比 性能方面&#xff…

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战

内容安全与系统构建加速&#xff0c;助力解决生成式AI时代的双重挑战 0. 前言1. PRCV 20241.1 大会简介1.2 生成式 Al 时代的内容安全与系统构建加速 2. 生成式 AI2.1 生成模型2.2 生成模型与判别模型的区别2.3 生成模型的发展 3. GAI 内容安全3.1 GAI 时代内容安全挑战3.2 图像…

SRS搭建直播推流服务

学习链接 5分钟教你搭建SRS流媒体服务器 - B站视频 SRS Stack 入门B站合集视频 - SRS官方教程 SRS官网 SRS官网文档 ossrs/srs github SRS for window - 可以安装windows版本的srs&#xff0c;SRS 5.0.89正式支持Windows&#xff0c;每个5.0的版本都会提供安装包 文章目录…

javaScript数据类型存储

2.1、简单类型与复杂类型 简单类型又叫做基本数据类型或者值类型&#xff0c;复杂类型又叫做引用类型 值类型&#xff1a;简单数据类型/基本数据类型&#xff0c;在存储时变量中存储的时值本身&#xff0c;因此叫做值类型 string、number、boolean、undefined、null 注意&…

深度学习之 DenseNet和2图像分割常用数据集

1 DenseNet 卷积神经网络结构的设计主要朝着两个方向发展&#xff0c;一个是更宽的网络&#xff08;代表&#xff1a;GoogleNet、VGG&#xff09;&#xff0c;一个是更深的网络&#xff08;代表&#xff1a;ResNet&#xff09;。但是随着层数的加深会出现一个问题——梯度消失&…

Nginx:反向代理

目录 反向代理原理 反向代理配置 日志对比 反向代理原理 网站通过代理服务器发布&#xff0c;用户无需得知网站的实际地址&#xff0c;通过代理服务器进行请求与响应。 用户所有的网站请求报文与响应报文都被代理服务器拦截&#xff0c;在网络层将源地址和目的地址进行了修改…