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.mzph.cn/bicheng/62503.shtml

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

相关文章

【OJ】前K个高频单词和单词识别和两个数组的交集

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 1. 692. 前K个高频单词1.1 分析1.2 代码 2. KY264 单词识别2.1 分析2.2 代码 3. 349. 两个数组的交集3.1 分析3.2 代码 1. 692. 前K个高频单词 1.1 分析 先试用map来统计每个单词出现的次数&#xff1a; map<string,i…

分布式协同 - 分布式锁一二事儿

文章目录 导图Pre概述概述1. 分布式互斥和临界资源的协调2. 分布式锁的基本原理3. 分布式锁的实现方式a. 基于数据库实现的分布式锁b. 基于Redis实现的分布式锁c. 基于Zookeeper实现的分布式锁 4. 高并发场景下的分布式锁优化a. 分段锁&#xff08;Sharded Locks&#xff09;b.…

Vue-01

Vue框架 Vue官网&#xff1a; Vue.js 框架 数据模型和view的通信就是依靠viewmodel的关键。 目前主流版本仍然是vue2版本。 Vue快速入门 1.新建一个HTML文件&#xff0c;引入Vue.js文件。Vue.js文件是官方引入的一个文件&#xff0c;我们如果要使用Vue就必须引入这个文件。…

【微服务】Nacos

一、安装 1、官网地址&#xff1a;https://nacos.io/download/nacos-server/ 2、启动&#xff1a;找到bin目录下的startup.cmd双击启动&#xff0c;或者打开一个命令窗口输入&#xff1a; startup.cmd -m standalone双击启动后如下&#xff1a;可以访问控制台地址 访问后的…

2025 - AIDD - python的autodock vina 批量分子对接改进版本2.0-全自动对接,完全全自动对接

2025 - AIDD - python的autodock vina 批量分子对接改进版本2.0-全自动对接&#xff0c;完全全自动对接 import warnings from pathlib import Path import subprocess from itertools import product import numpy as np import pandas as pd from MDAnalysis import Univers…

【uniapp】轮播图

前言 Uniapp的swiper组件是一个滑块视图容器组件&#xff0c;可以在其中放置多个轮播图或滑动卡片。它是基于微信小程序的swiper组件进行封装&#xff0c;可以在不同的平台上使用&#xff0c;如微信小程序、H5、App等。 效果图 前端代码 swiper组件 <template><vi…

由于导包而引发的错误

今天在调试时发现删除功能无论如何都无法实现&#xff0c;于是调试找到了mapper层的错误但不知道为什么报错。以下是报错信息。 Caused by: org.apache.ibatis.binding.BindingException: Parameter userIds not found. Available parameters are [arg0, collection, list]at o…

STM32 ADC --- 知识点总结

STM32 ADC — 知识点总结 文章目录 STM32 ADC --- 知识点总结cubeMX中配置注解单次转换模式、连续转换模式、扫描模式单通道采样的情况单次转换模式&#xff1a;连续转换模式&#xff1a; 多通道采样的情况禁止扫描模式&#xff08;单次转换模式或连续转换模式&#xff09;单次…

Web day02 Js Vue Ajax

目录 1.javascript: 1.js的引入方式&#xff1a; 2.js变量 & 数据类型 & 输出语句&#xff1a; 模板字符串&#xff1a; 3.函数 & 自定义对象&#xff1a; 4. json 字符串 & DOM操作&#xff1a; 5. js事件监听&#xff1a; 6.js的模块化导入或者导出&a…

Kylin Server V10 下 RocketMQ 主备自动切换模式部署

一、NameServer简介 NameServer 是一个注册中心,提供服务注册和服务发现的功能。NameServer 可以集群部署,集群中每个节点都是对等的关系,节点之间互不通信。 服务注册 Broker 启动的时候会向所有的 NameServer 节点进行注册,注意这里是向集群中所有的 NameServer 节点注册…

芯片测试-RF中的S参数,return loss, VSWR,反射系数,插入损耗,隔离度等

RF中的S参数&#xff0c;return loss, VSWR&#xff0c;反射系数&#xff0c;插入损耗&#xff0c;隔离度 &#x1f4a2;S参数&#x1f4a2;&#x1f4a2;S11与return loss&#xff0c;VSWR&#xff0c;反射系数&#x1f4a2;&#x1f4a2;S21&#xff0c;插入损耗和增益&#…

一个开源轻量级的服务器资源监控平台,支持告警推送

大家好&#xff0c;今天给大家分享一款开源的轻量级服务器资源监控工具Beszel&#xff0c;提供历史数据记录、Docker容器统计信息监控以及多种警报功能&#xff0c;用于监控服务器资源。 项目介绍 Beszel由hub&#xff08;中心服务器端应用&#xff0c;基于PocketBase构建&…

linux centos nginx编译安装

编译安装nginx&#xff08;Centos&#xff09; 编译需要的基础环境yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c1.下载nginx源码包 Nginx源码包下载地址&#xff1a;nginx源码包下载 2. 上传nginx源码包到服务器 我上传的地址是/home/chenhao/nginx…

【面试重难点问题】c++中为什么可以函数重载,但是c语言中不可以

本文章是对于“c中为什么可以函数重载&#xff0c;但是c语言中不可以”这个问题的探究&#xff1a; 当然这是一个值得深入探讨的问题。在面对难题时&#xff0c;我们常常会竭尽全力寻找答案&#xff0c;不惜挖掘三尺以探究竟。面对上面这个问题时&#xff0c;理解计算机系统的…

AI实践项目——图片视频自动上色系统,让旧照片焕然一新

1.主要内容 &#xff08;1&#xff09;项目概述 在图片处理的世界中&#xff0c;AI不仅用于识别和分析&#xff0c;还可以赋予灰度照片色彩&#xff0c;为其注入新的生命。今天&#xff0c;我们将探讨一种通过深度学习模型为灰度图片上色的技术。 ①参考文献 Colorful Image…

评分规则的建模,用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分

子夜(603***854) 15:11:40 和各位讨论一下设计问题: 有个有业务场景: 有一组产品共4个产品(数目用户可自定义), 需要一套规则,比如如果用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分 又比如另一组产品 产品有个必选属性,如果选了其中所有的必选则5分, 其他项每1…

计算机网络:数据链路层(二)

网课资源&#xff1a; 湖科大教书匠 1、网络适配器和MAC地址 习题1 1 以下哪个地址是广播MAC地址 A. 00-00-00-00-00-00 B. AB-CD-EF-11-22-33 C. FF-FF-FF-FF-FF-FF D. 29-29-29-29-29-29 2 以下哪个地址是多播MAC地址 A. 00-00-00-00-00-00 B. A9-8B-7C-6D-5E-4F C. FF-FF-…

# issue 6 网络编程基础

一、网络的物理结构和光纤千兆网络 首先&#xff0c;我们需要知道网络的物理结构——数据是如何从一台机器传输到另外一台机器的 这个过程是非常重要的。现在很多人做软件开发&#xff0c;只会软件角度&#xff0c;这导致讲软件原理头头是道&#xff0c;但是连数据线都不会接&a…

彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法

1.参考文章&#xff1a; &#xff08;1&#xff09;https://www.zhihu.com/question/25111128 这里面的第一个回答&#xff0c;有一幅图&#xff1a; 只要理解的四叉树的构建&#xff0c;对于八叉树的构建原理类比方法完全一样&#xff1a;对于二维平面内的随机分布的这些点&…

飞塔防火墙只允许国内IP访问

飞塔防火墙只允许国内IP访问 方法1 新增地址对象&#xff0c;注意里面已经细分为中国内地、中国香港、中国澳门和中国台湾 方法2 手动新增国内IP的对象组&#xff0c;目前好像一共有8632个&#xff0c;每个对象最多支持600个IP段