当前位置: 首页 > news >正文

Qt按钮类-->day09

按钮基类 QAbstractButton

标题与图标

// 参数text的内容显示到按钮上
void QAbstractButton::setText(const QString &text);
// 得到按钮上显示的文本内容, 函数的返回就是
QString QAbstractButton::text() const;// 得到按钮设置的图标
QIcon icon() const;
// 给按钮设置图标
void setIcon(const QIcon &icon);// 得到按钮图标大小
QSize iconSize() const
// 设置按钮图标的大小
[slot]void setIconSize(const QSize &size);

按钮的 Check 属性

对应按钮来说, 一般有三种常见状态, 分别为: Normal, Hover, Pressed。

  • Normal: 普通状态, 没有和鼠标做任何接触
  • Hover: 悬停状态, 鼠标位于按钮之上, 但是并未按下
  • Pressed: 按压状态, 鼠标键在按钮上处于按下状态
    默认情况下, 鼠标在按钮上按下, 按钮从 Normal 切换到 Pressed状态, 鼠标释放, 按钮从 Pressed恢复到Normal状态。
    当我们给按钮设置了 check 属性之后,情况就有所不同了, 在按钮上释放鼠标键, 按钮依然会处在 Pressed状态, 再次点击按钮, 按钮才能恢复到 Normal 状态。具有check属性的按钮就相当于一个开关, 每点击一次才能实现一次状态的切换。
// 判断按钮是否设置了checkable属性, 如果设置了点击按钮, 按钮一直处于选中状态
// 默认这个属性是关闭的, not checkable
bool QAbstractButton::isCheckable() const;
// 设置按钮的checkable属性
// 参数为true: 点击按钮, 按钮被选中, 松开鼠标, 按钮不弹起
// 参数为false: 点击按钮, 按钮被选中, 松开鼠标, 按钮弹起
void QAbstractButton::setCheckable(bool);// 判断按钮是不是被按下的选中状态
bool QAbstractButton::isChecked() const;
// 设置按钮的选中状态: true-选中, false-没选中
// 设置该属性前, 必须先进行 checkable属性的设置
void QAbstractButton::setChecked(bool);

信号

这些信号都按钮被点击之后发射出来的, 只是在细节上有细微的区别, 其中最常用的是 clicked(), 通过鼠标的不同瞬间状态可以发射出pressed() 和 released() 信号, 如果鼠标设置了 check属性, 一般通过 toggled()信号判断当前按钮是选中状态还是非选中状态。

/*
当按钮被激活时(即,当鼠标光标在按钮内时按下然后释放),当键入快捷键时,或者当click()或animateClick()被调用时,这个信号被发出。值得注意的是,如果调用setDown()、setChecked()或toggle(),则不会触发此信号。
*/
[signal] void QAbstractButton::clicked(bool checked = false);
// 在按下按钮的时候发射这个信号
[signal] void QAbstractButton::pressed();
// 在释放这个按钮的时候发射直观信号
[signal] void QAbstractButton::released();
// 每当可检查按钮改变其状态时,就会发出此信号。checked在选中按钮时为true,在未选中按钮时为false。
[signal] void QAbstractButton::toggled(bool checked);

槽函数

// 执行一个动画点击:按钮被立即按下,并在毫秒后释放(默认是100毫秒)。
[slot] void QAbstractButton::animateClick(int msec = 100);
// 执行一次按钮点击, 相当于使用鼠标点击了按钮
[slot] void QAbstractButton::click();// 参考 1.2 中的函数介绍
[slot] void QAbstractButton::setChecked(bool);
// 设置按钮上图标大小
[slot]void setIconSize(const QSize &size);
// 切换可检查按钮的状态。 checked <==> unchecked
[slot] void QAbstractButton::toggle();

QPushButton

api

// 构造函数
/*
参数:- icon: 按钮上显示的图标- text: 按钮上显示的标题- parent: 按钮的父对象, 可以不指定
*/
QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr);
QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr);
QPushButton::QPushButton(QWidget *parent = nullptr);// 判断按钮是不是默认按钮
bool isDefault() const;
// 一般在对话框窗口中使用, 将按钮设置为默认按钮, 自动关联 Enter 键 
void setDefault(bool);/*
将弹出菜单菜单与此按钮关联起来。这将把按钮变成一个菜单按钮,
在某些样式中会在按钮文本的右边产生一个小三角形。
*/
void QPushButton::setMenu(QMenu *menu);/*
显示(弹出)相关的弹出菜单。如果没有这样的菜单,这个函数什么也不做。
这个函数直到弹出菜单被用户关闭后才返回。
*/
[slot] void QPushButton::showMenu();

案例

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//普通按钮,没有checked属性ui->normalBtn->setText("我是你爸爸");ui->normalBtn->setIcon(QIcon(R"(:/hm.jpg)"));ui->normalBtn->setIconSize(QSize(30,30));connect(ui->normalBtn,&QPushButton::clicked,this,[=](){qDebug()<<"我是一个普通按钮...";});//check属性的按钮ui->checkBtn->setCheckable(true);connect(ui->checkBtn,&QPushButton::toggled,this,[=](bool bl){qDebug()<<"我是一个拥有check属性的按钮,当前状态为:"<<bl;});
#if 0connect(ui->checkBtn,&QPushButton::clicked,this,[=](bool bl){qDebug()<<"我是一个拥有check属性的按钮,当前状态为:"<<bl;});
#endif// 关联菜单ui->menuBtn->setText("你喜欢哪种美女?");QMenu* menu = new QMenu;QAction* act = menu->addAction("可爱的");//设置菜单栏内容menu->addAction("粘人的");//QAction *QMenu是addAction这个函数的返回值menu->addAction("胸大的");menu->addAction("屁股翘的");ui->menuBtn->setMenu(menu);//ui->menuBtn->showMenu();//进行连接需要接收上面的函数指针connect(act, &QAction::triggered, this, [=]{qDebug() << "我是一个可爱的女人";});}MainWindow::~MainWindow()
{delete ui;
}

在这里插入图片描述

QToolButton

api

这个类也是一个常用按钮类, 使用方法和功能跟QPushButton基本一致, 只不过在对于关联菜单这个功能点上, QToolButton类可以设置弹出的菜单的属性, 以及在显示图标的时候可以设置更多的样式, 可以理解为是一个增强版的QPushButton。
和QPushButton类相同的是, 操作这个按钮使用的大部分函数都是从父类QAbstractButton继承过来的。

/ 构造函数 /
QToolButton::QToolButton(QWidget *parent = nullptr);/// 公共成员函数 ///
/*1. 将给定的菜单与此工具按钮相关联。2. 菜单将根据按钮的弹出模式显示。3. 菜单的所有权没有转移到“工具”按钮(不能建立父子关系)
*/
void QToolButton::setMenu(QMenu *menu);
// 返回关联的菜单,如果没有定义菜单,则返回nullptr。
QMenu *QToolButton::menu() const;/*
弹出菜单的弹出模式是一个枚举类型: QToolButton::ToolButtonPopupMode, 取值如下:- QToolButton::DelayedPopup: - 延时弹出, 按压工具按钮一段时间后才能弹出, 比如:浏览器的返回按钮- 长按按钮菜单弹出, 但是按钮的 clicked 信号不会被发射- QToolButton::MenuButtonPopup: - 在这种模式下,工具按钮会显示一个特殊的箭头,表示有菜单。- 当按下按钮的箭头部分时,将显示菜单。按下按钮部分发射 clicked 信号- QToolButton::InstantPopup: - 当按下工具按钮时,菜单立即显示出来。- 在这种模式下,按钮本身的动作不会被触发(不会发射clicked信号
*/
// 设置弹出菜单的弹出方式
void setPopupMode(QToolButton::ToolButtonPopupMode mode);
// 获取弹出菜单的弹出方式
QToolButton::ToolButtonPopupMode popupMode() const;/*
QToolButton可以帮助我们在按钮上绘制箭头图标, 是一个枚举类型, 取值如下: - Qt::NoArrow: 没有箭头- Qt::UpArrow: 箭头向上- Qt::DownArrow: 箭头向下- Qt::LeftArrow: 箭头向左- Qt::RightArrow: 箭头向右
*/
// 显示一个箭头作为QToolButton的图标。默认情况下,这个属性被设置为Qt::NoArrow。
void setArrowType(Qt::ArrowType type);
// 获取工具按钮上显示的箭头图标样式
Qt::ArrowType arrowType() const;/ 槽函数 /
// 给按钮关联一个QAction对象, 主要目的是美化按钮
[slot] void QToolButton::setDefaultAction(QAction *action);
// 返回给按钮设置的QAction对象
QAction *QToolButton::defaultAction() const;/*
图标的显示样式是一个枚举类型->Qt::ToolButtonStyle, 取值如下:- Qt::ToolButtonIconOnly: 只有图标, 不显示文本信息- Qt::ToolButtonTextOnly: 不显示图标, 只显示文本信息- Qt::ToolButtonTextBesideIcon: 文本信息在图标的后边显示- Qt::ToolButtonTextUnderIcon: 文本信息在图标的下边显示- Qt::ToolButtonFollowStyle: 跟随默认样式(只显示图标)
*/
// 设置的这个属性决定工具按钮是只显示一个图标、只显示文本,还是在图标旁边/下面显示文本。
[slot] void QToolButton::setToolButtonStyle(Qt::ToolButtonStyle style);
// 返回工具按钮设置的图标显示模式
Qt::ToolButtonStyle toolButtonStyle() const;// 显示相关的弹出菜单。如果没有这样的菜单,这个函数将什么也不做。这个函数直到弹出菜单被用户关闭才会返回。
[slot] void QToolButton::showMenu();

注意事项

  • 在QToolButton中如果有图标是默认显示图标的而文本不显示,如果没有图标则是显示文本。
  • 在QToolButton菜单时延时显示的需要用鼠标长按,而QPushbutton点击就显示
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//普通按钮,没有checked属性ui->normalBtn->setText("我是你爸爸");ui->normalBtn->setIcon(QIcon(R"(:/hm.jpg)"));ui->normalBtn->setIconSize(QSize(30,30));connect(ui->normalBtn,&QToolButton::clicked,this,[=](){qDebug()<<"我是一个普通按钮...";});//check属性的按钮ui->checkBtn->setCheckable(true);connect(ui->checkBtn,&QToolButton::toggled,this,[=](bool bl){qDebug()<<"我是一个拥有check属性的按钮,当前状态为:"<<bl;});ui->normalBtn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);#if 0connect(ui->checkBtn,&QPushButton::clicked,this,[=](bool bl){qDebug()<<"我是一个拥有check属性的按钮,当前状态为:"<<bl;});
#endif// 关联菜单ui->menuBtn->setText("你喜欢哪种美女?");QMenu* menu = new QMenu;QAction* act = menu->addAction("可爱的");//设置菜单栏内容menu->addAction("粘人的");//QAction *QMenu是addAction这个函数的返回值menu->addAction("胸大的");menu->addAction("屁股翘的");ui->menuBtn->setMenu(menu);//ui->menuBtn->showMenu();//进行连接需要接收上面的函数指针connect(act, &QAction::triggered, this, [=]{qDebug() << "我是一个可爱的女人";});}MainWindow::~MainWindow()
{delete ui;
}

在这里插入图片描述

案例

#if 0QAction *actBtn=new QAction(QIcon(R"(:/hm.jpg)"),"花妹");ui->actionBtn->setDefaultAction(actBtn);connect(ui->actionBtn, &QToolButton::triggered, this, [=](QAction* act){act->setText("我是修改花妹之后的后藤一里...");act->setIcon(QIcon(R"(:/1.jpg)"));});// 设置图标和文本的显示模式 文本信息显示在图标的下面ui->actionBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
#endif#if 1QAction *actBtn = new QAction(QIcon(R"(:/hm.jpg)"), "花妹");ui->actionBtn->setDefaultAction(actBtn);connect(ui->actionBtn, &QToolButton::triggered, this, [=](QAction* act) {static bool clickedOnce = false; // 用来切换状态if (clickedOnce) {act->setText("我是修改花妹之后的后藤一里...");act->setIcon(QIcon(R"(:/1.jpg)"));} else {act->setText("花妹");act->setIcon(QIcon(R"(:/hm.jpg)"));}clickedOnce = !clickedOnce; // 切换状态});// 设置图标和文本的显示模式 文本信息显示在图标的下面ui->actionBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);#endif// 基于自带样式, 给按钮设置箭头图标ui->arrowBtn->setArrowType(Qt::UpArrow);ui->arrowBtn->setText("向上");// 设置图标和文本的显示模式ui->arrowBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

案例

     // 关联菜单ui->menuBtn->setText("你喜欢哪种美女?");QMenu* menu = new QMenu;QAction* act = menu->addAction("可爱的");//设置菜单栏内容menu->addAction("粘人的");//QAction *QMenu是addAction这个函数的返回值menu->addAction("胸大的");menu->addAction("屁股翘的");ui->menuBtn->setMenu(menu);//ui->menuBtn->showMenu();//进行连接需要接收上面的函数指针connect(act, &QAction::triggered, this, [=]{qDebug() << "我是一个可爱的女人";});ui->popmenu->setMenu(menu);//ui->popmenu->setPopupMode(QToolButton::DelayedPopup);//ui->popmenu->setPopupMode(QToolButton::MenuButtonPopup);ui->popmenu->setPopupMode(QToolButton::InstantPopup);connect(ui->popmenu,&QToolButton::clicked,this,[=](){qDebug()<<"popmenu好痒....";});
}

QRadioButton

QRadioButton是Qt提供的单选按钮, 一般都是以组的方式来使用(多个按钮中同时只能选中其中一个)。操作这个按钮使用的大部分函数都是从父类继承过来的, 它的父类是QAbstractButton。
关于单选按钮的使用我们还需要注意一点, 如果单选按钮被选中, 再次点击这个按钮选中状态是不能被取消的。
在这里插入图片描述

案例

在这里插入图片描述

QCheckBox

QCheckBox是Qt中的复选框按钮, 可以单独使用, 也可以以组的方式使用(同一组可以同时选中多个), 当复选按钮被选中, 再次点击之后可以取消选中状态, 这一点和单选按钮是不同的。
操作这个按钮使用的大部分函数都是从父类继承过来的, 它的父类是QAbstractButton。

void MainWindow::on_nns_stateChanged(int arg1)
{if(arg1==Qt::Checked){qDebug()<<"不喜欢公司的996!!!!";}else{qDebug()<<"996还是可以接收的!!!!";}
}

QCheckBox三态设置和使用

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>// mainwindow.cpp
// 窗口的构造函数
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置根节点的三态属性ui->wives->setTristate(true);// 处理根节点的鼠标点击事件 //这里用clicked  其他不能用 因为可能时其他情况导致被选中的connect(ui->wives, &QCheckBox::clicked, this, [=](bool bl){if(bl){// 子节点全部设置为选中状态ui->jianning->setChecked(true);ui->fangyi->setChecked(true);ui->longer->setChecked(true);ui->zengrou->setChecked(true);ui->mujianping->setChecked(true);ui->shuanger->setChecked(true);ui->ake->setChecked(true);}else{// 子节点全部设置为非选中状态ui->jianning->setChecked(false);ui->fangyi->setChecked(false);ui->longer->setChecked(false);ui->zengrou->setChecked(false);ui->mujianping->setChecked(false);ui->shuanger->setChecked(false);ui->ake->setChecked(false);}});// 处理子节点的状态变化, 对应的槽函数相同connect(ui->jianning, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->fangyi, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->longer, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->zengrou, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->mujianping, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->shuanger, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);connect(ui->ake, &QCheckBox::stateChanged, this, &MainWindow::statusChanged);
}static int m_number= 0;// 槽函数
void MainWindow::statusChanged(int state)
{if(state == Qt::Checked){m_number ++;	// 选中一个子节点, 计数器加1}else{m_number --;   // 取消选中一个子节点, 计数器减1}// 根据计数器值判断根节点是否需要做状态的更新if(m_number == 7){ui->wives->setCheckState(Qt::Checked);}else if(m_number == 0){ui->wives->setCheckState(Qt::Unchecked);}else{ui->wives->setCheckState(Qt::PartiallyChecked);}
}MainWindow::~MainWindow()
{delete ui;
}

注意事项

如果此时的QCheckBox控件时有父子关系的
例如:
在这里插入图片描述
那么在进行信号和槽连接的时候,父节点的操作中信号发出者的信号只能设置为clicked

toggled(bool):这个信号会在复选框的状态变化时发出,表示复选框的选中状态改变。它不仅仅是由于用户点击,还可能通过程序设置来改变复选框的状态。这个信号有时可能不适用于仅想响应用户点击的情况。

相关文章:

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…...

基于xr-frame实现微信小程序的手部、手势识别3D模型叠加和石头剪刀布游戏功能

前言 xr-frame是一套小程序官方提供的XR/3D应用解决方案&#xff0c;基于混合方案实现&#xff0c;性能逼近原生、效果好、易用、强扩展、渐进式、遵循小程序开发标准。xr-frame在基础库v2.32.0开始基本稳定&#xff0c;发布为正式版&#xff0c;但仍有一些功能还在开发&#…...

基于Kafka2.1解读Consumer原理

文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了&#xff0c;今天来讲讲Consumer的原理。 其实源码早就读了部分了&#xff0c;但是最近工作比较忙&#x…...

深度学习:ResNet每一层的输出形状

其中 /**在输出通道数为64、步幅为2的7 7卷积层后&#xff0c;接步幅为2的3 3的最大汇聚层,与GoogLeNet区别是每个卷积层后增加了批量规范层**/ b1 nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_s…...

国内几大网络安全公司介绍 - 网络安全

Posted by zhaol under 安全 , 电信 , 评论 , 中国 中国国内的安全市场进入“战国时期”&#xff0c;启明星辰、绿盟、天融信、安氏、亿阳、联想网御、华为等战国七雄拥有雄厚的客户资源和资金基础&#xff0c;帐前皆有勇猛善战之士&#xff0c;渐渐开始统领国内安全市场的潮流…...

修改Android Studio项目配置JDK路径和项目Gradle路径的GUI工具

概述 本工具提供了一个基于Python Tkinter的图形用户界面&#xff08;GUI&#xff09;&#xff0c;用于帮助用户搜索并更新Android Studio项目中的config.properties文件里的java.home路径&#xff0c;以及workspace.xml文件中的last_opened_file_path路径。该工具旨在简化手动…...

✅DAY30 贪心算法 | 452. 用最少数量的箭引爆气球 | 435. 无重叠区间 | 763.划分字母区间

452. 用最少数量的箭引爆气球 解题思路&#xff1a;首先把原数组按左边界进行排序。然后比较[i-1]的右边界和[i]的左边界是否重叠&#xff0c;如果重叠&#xff0c;更新当前右边界为最小右边界和[i1]的左边界判断是重叠。 class Solution:def findMinArrowShots(self, points:…...

关于Redis单线程模型以及IO多路复用的理解

IO多路复用 -> redis主线程 -> 事件队列 -> 事件处理器 1.IO多路复用机制的作用&#xff1a; 操作系统的多路复用机制&#xff08;如 epoll、select&#xff09;负责监听多个文件描述符&#xff08;如客户端连接&#xff09;上的事件。 当某个文件描述符上的事件就绪…...

学习ASP.NET Core的身份认证(基于Cookie的身份认证1)

B/S架构程序可通过Cookie、Session、JWT、证书等多种方式认证用户身份&#xff0c;虽然之前测试过用户登录代码&#xff0c;也学习过开源项目中的登录认证&#xff0c;但其实还是对身份认证疑惑甚多&#xff0c;就比如登录验证后用户信息如何保存、客户端下次连接时如何获取用户…...

奇门遁甲中看债务时用神该怎么取?

奇门遁甲中看债务的用神 一、值符 值符在债务关系中可代表债权人&#xff08;放贷人&#xff09;。例如在预测放贷时&#xff0c;以值符为放贷人&#xff0c;如果值符克天乙&#xff08;借贷人&#xff09;或者天乙生值符&#xff0c;这种情况下可以放贷&#xff1b;反之&#…...

Redis 集群主要有以下几种类型

Redis 集群主要有以下几种类型&#xff1a; 主从复制模式&#xff1a; 这种模式包含一个主数据库实例&#xff08;master&#xff09;与一个或多个从数据库实例&#xff08;slave&#xff09;。客户端可以对主数据库进行读写操作&#xff0c;对从数据库进行读操作&#xff0c;主…...

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例&#xff1a;一个完整的 Axios 配置5. 使用拦截器的好…...

mini-lsm通关笔记Week2Day5

项目地址&#xff1a;https://github.com/skyzh/mini-lsm 个人实现地址&#xff1a;https://gitee.com/cnyuyang/mini-lsm Summary 在本章中&#xff0c;您将&#xff1a; 实现manifest文件的编解码。系统重启时从manifest文件中恢复。 要将测试用例复制到启动器代码中并运行…...

mybatis的动态sql用法之排序

概括 在最近的开发任务中&#xff0c;涉及到了一些页面的排序&#xff0c;其中最为常见的就是时间的降序和升序。这个有的前端控件就可以完成&#xff0c;但是对于一些无法用前端控件的&#xff0c;只能通过后端来进行解决。 后端的解决方法就是使用mybatis的动态sql拼接。 …...

OneToMany 和 ManyToOne

在使用 ORM&#xff08;如 TypeORM&#xff09;进行实体关系设计时&#xff0c;OneToMany 和 ManyToOne 是非常重要的注解&#xff0c;常用来表示两个实体之间的一对多关系。下面通过例子详细说明它们的使用场景和工作方式。 OneToMany 和 ManyToOne 的基本概念 ManyToOne 表示…...

《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 我们希望你创建一个定制的服务机器人。 您可以想出任何您希望机器人执行的任务&#xff0c;例如&#xff0c;一个可以解决简单的数学问题的机器人0 一个机器人&#xff0c…...

反转链表、链表内指定区间反转

反转链表 给定一个单链表的头结点pHead&#xff08;该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1&#xff09;&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 如当输入链表{1,2,3}时&#xff0c;经反转后&#xff0c;原链表变…...

Debezium系列之:Debezium3版本使用快照过程中的指标

Debezium系列之:Debezium3版本使用快照过程中的指标 一、背景二、技术原理三、增量快照四、阻塞快照指标一、背景 使用快照技术的过程中可以观察指标,从而确定快照的进度二、技术原理 Debezium系列之:Debezium 中的增量快照Debezium系列之:Incremental snapshotting设计原理…...

第一讲,Opencv计算机视觉基础之计算机视觉概述

深度剖析计算机视觉&#xff1a;定义、任务及未来发展趋势 引言 计算机视觉&#xff08;Computer Vision&#xff09;是人工智能的重要分支之一&#xff0c;旨在让机器通过视觉感知和理解环境。随着深度学习的快速发展&#xff0c;计算机视觉在自动驾驶、安防监控、医疗影像等…...

数据结构(双向链表——c语言实现)

双向链表相比于单向链表的优势&#xff1a; 1. 双向遍历的灵活性 双向链表&#xff1a;由于每个节点都包含指向前一个节点和下一个节点的指针&#xff0c;因此可以从头节点遍历到尾节点&#xff0c;也可以从尾节点遍历到头节点。这种双向遍历的灵活性使得在某些算法和操作中&a…...

【新人系列】Python 入门(十一):控制结构

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…...

群核科技首次公开“双核技术引擎”,发布多模态CAD大模型

11月20日&#xff0c;群核科技在杭州举办了第九届酷科技峰会。现场&#xff0c;群核科技首次正式介绍其技术底层核心&#xff1a;基于GPU高性能计算的物理世界模拟器。并对外公开了两大技术引擎&#xff1a;群核启真&#xff08;渲染&#xff09;引擎和群核矩阵&#xff08;CAD…...

【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势

文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…...

linux 常用命令指南(存储分区、存储挂载、docker迁移)

前言&#xff1a;由于目前机器存储空间不够&#xff0c;所以‘斥巨资’加了一块2T的机械硬盘&#xff0c;下面是对linux扩容的一系列操作&#xff0c;包含了磁盘空间的创建、删除&#xff1b;存储挂载&#xff1b;docker迁移&#xff1b;anaconda3迁移等。 一、存储分区 1.1 …...

用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错

首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO&#xff1a;SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…...

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性 过期删除策略内存淘汰机制怎么保证redis双写的一致性?更新策略先删除缓存后更新数据库先更新数据库后删除缓存如何选择&#xff1f;如何保证先更新数据库后删除缓存的线程安全问题&#xff1f; 过期删除策略 为了…...

异常处理:import cv2时候报错No module named ‘numpy.core.multiarray‘

问题描述 执行一个将视频变成二值视频输出时候&#xff0c;报错。No module named numpy.core.multiarray&#xff0c;因为应安装过了numpy&#xff0c;所以比较不解。试了卸载numpy和重新安装numpy多次操作&#xff0c;也进行了numpy升级的操作&#xff0c;但是都没有用。 解…...

C++手写PCD文件

前言 一般pcd读写只需要调pcl库接口&#xff0c;直接用pcl的结构写就好了 这里是不依赖pcl库的写入方法 主要是开头写一个header 注意字段大小&#xff0c;类型不要写错     结构定义 写入点需要与header中定义一致 这里用的RoboSense的结构写demo 加了个1字节对齐 stru…...

优选算法(双指针)

1.双指针介绍 双指针算法是一种常用的算法思想&#xff0c;特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构&#xff0c;双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…...

【保姆级】Mac上IDEA卡顿优化

保姆级操作,跟着操作即可~~~ 优化内存 在你的应用程序中,找到你的idea 按住control键+单击 然后点击“显示包内容” </...

做文艺文创产品的网站/制作一个网站的全过程

一、数字金额小 1、转账给别人相同的金额 2、选框选中&#xff08;移动下面那个功能&#xff09;&#xff0c;右键&#xff0c;自由移动&#xff0c;工具箱中的移动&#xff0c;移动到另一个图上 3、调整大小和位置...

wordpress get_currentuserinfo/seo站内优化和站外优化

windows 自动部署数据库软件相关脚本整体思路是开启windows的telnet功能&#xff0c;本机telnet远程windows执行相关的数据库命令。telnet 相关服务这三个服务是windows telnet相关的三个服务&#xff0c;需要事先开启。sc config seclogon start demandsc config RpcSs start …...

可以做微网站的第三方平台/免费外国网站浏览器

从npm迁移到pnpm&#xff1a;实现npm和pnpm之间的无缝迁移 随着npm的广泛使用&#xff0c;许多开发人员开始将其作为依赖管理工具。然而&#xff0c;随着npm的版本更新和社区的变化&#xff0c;一些开发人员可能会选择将npm迁移到另一个包管理器&#xff0c;如pnpm。本文将介绍…...

网站如何制作浙江/网站秒收录工具

初学Oracle,了解了一下Oracle的存储过程&#xff0c;运行了几个例子&#xff0c;做个备忘&#xff0c;方便以后使用&#xff1a;1、插入数据&#xff1a;向一张表里插入若干条数据/*创建表tb1包含两个字段col1、col2*/create table tb1(col1 char(20),col2 char(20));/*插入数据…...

地方性网站运营/人工智能培训班收费标准

Go中的结构体 前面我们或多或少的都使用了结构体这种数据结构&#xff0c;本身结构体也有很多特性&#xff0c;我们一一来看。 结构体的作用是将一个或者多个任一类型的变量组合在一起的数据类型&#xff0c;类似于我们在Java中class的作用。在结构体重也可以嵌套结构体。结构…...

做外汇看什么网站/网站域名查询地址

大工16秋《计算机组成原理》在线作业1一、单选题(共 10 道试题&#xff0c;共 50 分。)1. 动态RAM的刷新是以()为单位&#xff0c;在刷新周期内&#xff0c;由专用的刷新电路完成。A. 行B. 列C. 存储矩阵D. 以上都不是正确答案&#xff1a;A2. 目前使用的光盘存储器中&#xff…...