Qt---窗口系统

一、QMainWindow

        QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)

1. 菜单栏(最多有一个)

        QMenuBar *bar = MenuBar();

        SetMenuBar(bar);

        QMenu *fileMenu = bar->addMenu("文件");        创建菜单
        QAction  *newAction =fileMenu->addAction("新建");        创建菜单项

        添加分割线fileMenu->addSeparator();

2. 工具栏(可以有多个)

        QToolBar *toolbar = new QToolBar(this);       
        addToolBar(默认停靠区域,toolbar)          Qt:LeftToolBarArea(左侧)

        设置:后期停靠区域,设置浮动,设置移动
        添加菜单项或者添加小控件

3. 状态栏(最多一个)

       QstatusBar *stBar= statusBar();

        设置到窗口中        setStatusBar(stBar);

        stBar->addWidget(label);        放左侧信息
        stBar->addPermanentWidget(label2);        放右侧信息

4. 铆接部件(浮动窗口,可以多个)

        QDockWidget
        addDockWidget        默认停靠区域,浮动窗口指针

        设置后期停靠区域

5. 设置核心部件(只能一个)

        setCentralWidget(edit);

代码示例: 

#include "mainwindow.h"
#include<QMenuBar>
#include<QDebug>
#include<QToolBar>
#include<QPushButton>
#include<QStatusBar>
#include<QLabel>
#include<QDockWidget>
#include<QTextEdit>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{//重置窗口大小resize(600,400);//菜单栏创建QMenuBar *bar = menuBar();//将菜单栏放入到窗口中setMenuBar(bar);//菜单栏   最多只能有一个//创建菜单QMenu *fileMenu = bar->addMenu("文件");QMenu *editMenu = bar->addMenu("编辑");//创建菜单项QAction *newAction = fileMenu->addAction("新建");//新建和打开之间添加分隔线fileMenu->addSeparator();QAction *openAction = fileMenu->addAction("打开");//工具栏   可以有多个QToolBar *toolBar = new QToolBar(this);//将工具栏放入到窗口中//addToolBar(toolBar);//默认在顶部addToolBar(Qt::LeftToolBarArea,toolBar);//设置放在左侧//后期设置 只允许 左右停靠toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//设置浮动toolBar->setFloatable(false);//设置移动(总开关)toolBar->setMovable(false);//工具栏中可以设置内容toolBar->addAction(newAction);//添加分割线toolBar->addSeparator();toolBar->addAction(openAction);//工具栏中添加控件QPushButton *btn = new QPushButton("aa",this);toolBar->addWidget(btn);//状态栏   最多有一个QStatusBar *stBar = statusBar();//设置到窗口中setStatusBar(stBar);//放标签控件QLabel *label = new QLabel("提示信息",this);stBar->addWidget(label);QLabel *label2 = new QLabel("右侧提示信息",this);stBar->addPermanentWidget(label2);//铆接部件(浮动窗口)可以有多个QDockWidget *dockwidget = new QDockWidget("浮动",this);addDockWidget(Qt::BottomDockWidgetArea,dockwidget);//设置后期停靠区域,只允许上下dockwidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);//设置中心部件    只能一个QTextEdit *edit = new QTextEdit(this);setCentralWidget(edit);
}MainWindow::~MainWindow()
{
}

输出如下所示: 

二、资源文件 

1. 将图片文件 拷贝到项目位置下        
2. 右键项目->添加新文件→>Qt->Qt recourse File ->给资源文件起名

3. res生成res.qrc
4. open in edtor编辑资源

5. 添加前缀、添加文件
6. 使用":+前缀名+文件名"

1. 按照如下所示进入文件夹,再将所需图片文件复制到当前目录

2. 创建Qt Resource File资源文件,创建完成之后右键res.qrc选择Open in Editor打开该文件

3. 添加前缀和添加文件,添加完成如下图所示:

代码示例: 

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//ui->actionopen->setIcon(QIcon("C:/Users/admin/Desktop/picture/c.jpg"));//使用添加Qt资源": + 前缀名 + 文件名"ui->actionopen->setIcon(QIcon(":/image/Luffy.png"));ui->actionxinjan->setIcon(QIcon(":/image/LuffyQ.png"));
}MainWindow::~MainWindow()
{delete ui;
}

输出如下所示: 

三、对话框QDialog

①分类

1. 模态对话框(不可以对其他窗口进行操作-->阻塞)

        QDialog dlg(this);

        dlg.exec();

2. 非模态对话框(可以对其他窗口进行操作)

        防止一闪而过,创建到堆区

        QDialog *dlg2 = new QDialog(this);

        dlg2->show();

        dlg2->setAttribute(Qt::WA_DeleteOnClose);        //55号属性    

②标准对话框---消息对话框

        QMessageBox静态成员函数        创建对话框

        错误、信息、提问、警告
        参数1 父亲,参数2 标题,参数3 显示内容,参数4 按键类型,参数5 默认关联回车按键
        返回值也是 StandardButton类型,利用返回值判断用户的输入

③其它标准对话框,Qt提供了一些常用的对话框类型,它们全部继承Qdialog类

        颜色对话框:QcolorDialog:: getColor
        文件对话框:QFileDialog:: getOpenFileName(父亲,标题,默认路径,过滤文件)
        字体对话框:QFontDlialog:: getFont       

        输入对话框:QInputDialog

        进度对话框:QProgressDialog

        向导对话框:QWizard

代码示例: 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDialog>
#include<QDebug>
#include<QMessageBox>
#include<QColorDialog>
#include<QFileDialog>
#include<QFontDialog>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//点击新建按钮 弹出对话框connect(ui->actionnew,&QAction::triggered,[=](){//对话框分类//模态对话框(不可以对其他窗口进行操作) 非模态对话框(可以对其他窗口进行操作)//模态创建  阻塞QDialog dlg(this);dlg.resize(200,100);dlg.exec();qDebug()<<"模态对话框弹出了";//非模态对话框QDialog dlg2(this);dlg2.show();    //闪退QDialog *dlg2 = new QDialog(this);//创建堆区防止一闪而过dlg2->resize(200,100);dlg2->show();//设置属性让其在关闭时进行释放dlg2->setAttribute(Qt::WA_DeleteOnClose);//55号 属性qDebug()<<"非模态对话框弹出了";//消息对话框//错误 对话框QMessageBox::critical(this,"critical","错误");//信息对话框QMessageBox::information(this,"info","信息");//提问对话框//参数1 父亲 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键if (QMessageBox::Save == QMessageBox::question(this,"ques","提问",QMessageBox::Save | QMessageBox::Cancel,QMessageBox::Cancel)){qDebug()<<"选择的是保存";}else{qDebug()<<"选择的是取消";}//警告对话框//QMessageBox::warning(this,"warning","警告");//其他标准对话框//颜色对话框QColor color = QColorDialog::getColor(QColor(255,0,0));qDebug()<<"r = "<<color.red()<<"g = "<<color.green()<<"b = "<<color.blue();//文件对话框//参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式//返回值是选取的路径QString str = QFileDialog::getOpenFileName(this,"打开文件","D:/QT","(*.txt)");qDebug()<<str;//字体对话框bool flag;QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));qDebug()<<"字体:"<<font.family().toUtf8().data()<<"字号:"<<font.pointSize()<<"是否加粗:"<<font.bold()<<"是否倾斜:"<<font.italic();});
}MainWindow::~MainWindow()
{delete ui;
}

输出如下所示:

四、界面布局

1. 实现登录窗口
2. 利用布局方式给窗口进行美化·
3. 选择widget进行布局:水平布局、垂直布局、栅格布局

4. 给用户名、密码、登陆、退出按钮进行布局
5. 默认窗口和控件之间有9间隙,可以调整layoutLeftMargin

6. 利用弹簧进行布局

布局展示如下所示: 

 五、控件 

1. 按钮组
        QPushButton常用按钮
        QToolButton工具按钮,用于显示图片,如果想显示文字,修改风格:
                toolButtonstyle-->凸起风格autoRaises
        radioButton单选按钮,设置默认ui->rBtnMan->setChecked(true);

        checkbox多选按钮,监听状态,2选中,1半选,0未选中

2. QListWidget列表容器
        QListWidgetltem *item一行内容

        ui->listWidget ->addltem (item)
        设置居中方式item->setTextAlignment(Qt::AlignHCenter);

        可以利用additems一次性添加整个诗内容

代码示例: 

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置单选按钮 男默认选中ui->rBtnMan->setChecked(true);ui->weihun->setChecked(true);//选中女后打印信息connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug()<<"选中了女";});//多选按钮 2是选中,0是未选中,1是半选connect(ui->boss,&QCheckBox::stateChanged,[=](int state){qDebug()<<state;});//利用listWidget写诗
//    QListWidgetItem *item = new QListWidgetItem("锄禾日当午");
//    //将第一行诗放入到listWidget中
//    ui->listWidget->addItem(item);
//    item->setTextAlignment(Qt::AlignHCenter);//QStringList   QList<QString>QStringList list;list<<"锄禾日当午"<<"汗滴禾下土"<<"谁知盘中餐"<<"粒粒皆辛苦";ui->listWidget->addItems(list);
}Widget::~Widget()
{delete ui;
}

输出如下所示: 

3. QWidget树控件

设置头
        ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

创建根节点
        QTreeWidgetltem * liltem = new QTreeWidgetltem(QStringList()<<"力量" );

添加根节点到树控件上
        ui->treeWidget->addTopLevelltem(liltem);

添加子节点
        liltem->addchild(l1);

代码示例: 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//treeWidget数控件使用//设置水平头ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");QTreeWidgetItem *liItem = new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem *minItem = new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem *zhiItem = new QTreeWidgetItem(QStringList()<<"智力");//加载顶层节点ui->treeWidget->addTopLevelItem(liItem);ui->treeWidget->addTopLevelItem(minItem);ui->treeWidget->addTopLevelItem(zhiItem);//追加子节点QStringList heroL1;heroL1<<"刚被猪"<<"前排坦克,能在吸收伤害的同时造成客观额范围输出";QTreeWidgetItem *l1 = new QTreeWidgetItem(heroL1);liItem->addChild(l1);QStringList heroL2;heroL2<<"船长"<<"前排坦克,能肉能输出能控场的全能英雄";QTreeWidgetItem *l2 = new QTreeWidgetItem(heroL2);liItem->addChild(l2);QStringList heroL3;heroL3<<"月骑"<<"中排物理输出,可以使用分裂利刃攻击多个目标";QTreeWidgetItem *l3 = new QTreeWidgetItem(heroL3);minItem->addChild(l3);QStringList heroL4;heroL4<<"小鱼人"<<"前排战士,擅长偷取敌人的属性来塔强自身战力";QTreeWidgetItem *l4 = new QTreeWidgetItem(heroL4);minItem->addChild(l4);QStringList heroL5;heroL5<<"死灵法师"<<"前排法师坦克,魔法抗性较高,拥有治疗技能巫医";QTreeWidgetItem *l5 = new QTreeWidgetItem(heroL5);zhiItem->addChild(l5);QStringList heroL6;heroL6<<"巫医"<<"后排辅助法师,可以使用奇特的巫术诅咒敌人与治疗队友";QTreeWidgetItem *l6 = new QTreeWidgetItem(heroL6);zhiItem->addChild(l6);
}Widget::~Widget()
{delete ui;
}

输出如下所示: 

4. QTableWidget表格控件

设置列数
        ui->tableWidget->setColumncount(3);

设置水平表头
        ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
设置行数
        ui->tableWidget->setRowCount(5);

设置正文
        ui->tableWidget->setltem(0,0, new QTablewidgetltem("亚瑟"));

代码示例: 

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//TableWidget控件//设置列数ui->tableWidget->setColumnCount(3);//设置水平表头ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置行数ui->tableWidget->setRowCount(5);//设置正文
//    ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));QStringList nameList;nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"安其拉";QList<QString>sexList;sexList<<"男"<<"男"<<"男"<<"男"<<"女";for(int i = 0;i < 5;i++){int col = 0;ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));//int 转为 QStringui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+18)));}
}Widget::~Widget()
{delete ui;
}

输出如下所示: 

5. 其它控件介绍

stackedwidget        栈控件
        ui->stackedWidget->setcurrentlndex(1);

下拉框
        ui->comboBox->addltem("奔驰"");

QLabel显示图片
        ui->lbl_lmage->setPixmap(QPixmap(":/Image/butterfly.png"));

QLabel显示动图gif图片
        ui->lbl_movie->setMovie(movie);

        movie->start();

代码示例: 

#include "widget.h"
#include "ui_widget.h"
#include<QMovie>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//栈控件的使用//设置默认定位 ScrollAreaui->stackedWidget->setCurrentIndex(1);//ScrollArea按钮connect(ui->btn_ScrollArea,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1);});//ToolBox按钮connect(ui->btn_ToolBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2);});//TabWidget按钮connect(ui->btn_TabWidget,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(0);});//下拉框ui->comboBox->addItem("奔驰");ui->comboBox->addItem("宝马");ui->comboBox->addItem("奥迪");//点击按钮 选中奥迪connect(ui->btn_select,&QPushButton::clicked,[=](){//ui->comboBox->setCurrentIndex(2);ui->comboBox->setCurrentText("奥迪");});//利用QLabel显示图片ui->lbl_Image->setPixmap(QPixmap(":/image/butterfly.png"));//利用QLabel显示gif动态图片QMovie *movie = new QMovie(":/image/mario.gif");ui->lbl_movie->setMovie(movie);//播放动图movie->start();
}Widget::~Widget()
{delete ui;
}

输出如下所示: 

六、自定义控件封装

1. 添加新文件-->Qt-->设计师界面类(.h .cpp .ui)

2. ui中设计QspinBox和Qslider两个控件
3. widget中使用自定义控件,拖拽一个 Widget,点击提升为,点击添加,点击提升
4. 实现功能,改变数字,滑动条跟着移动,信号槽监听

5. 提供getNum和setNum对外接口
6. 测试接口

代码示例: 

smallwidget.h

#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H#include <QWidget>namespace Ui {
class smallWidget;
}class smallWidget : public QWidget
{Q_OBJECTpublic:explicit smallWidget(QWidget *parent = nullptr);~smallWidget();//设置数字void setNum(int num);//获取数字int getNum();private:Ui::smallWidget *ui;
};#endif // SMALLWIDGET_H

smallwidget.cpp

#include "smallwidget.h"
#include "ui_smallwidget.h"smallWidget::smallWidget(QWidget *parent) :QWidget(parent),ui(new Ui::smallWidget)
{ui->setupUi(this);//QSpinBox移动 QSlider跟着移动void(QSpinBox:: *spSignal)(int) = &QSpinBox::valueChanged;connect(ui->spinBox,spSignal,ui->horizontalSlider,&QSlider::setValue);//QSlider滑动 QSpinBox跟着移动connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
//    void(QSlider:: *slSignal)(int) = &QSlider::valueChanged;
//    connect(ui->horizontalSlider,slSignal,ui->spinBox,&QSpinBox::setValue);}//设置数字
void smallWidget::setNum(int num)
{ui->spinBox->setValue(num);
}//获取数字
int smallWidget::getNum()
{return ui->spinBox->value();
}smallWidget::~smallWidget()
{delete ui;
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//点击获取  获取按钮当前的值connect(ui->btn_get,&QPushButton::clicked,[=](){ui->widget->getNum();qDebug()<<ui->widget->getNum();});//设置到一半connect(ui->btn_set,&QPushButton::clicked,[=](){ui->widget->setNum(50);});
}Widget::~Widget()
{delete ui;
}

输出如下所示: 

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

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

相关文章

【Python基础】装饰器(3848字)

文章目录 [toc]闭包什么是装饰器装饰器示例不使用装饰器语法使用装饰器语法 装饰器传参带参数的装饰器类装饰器魔术方法\__call__()类装饰器示例带参数类装饰器property装饰器分页操作商品价格操作 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python基础 学习指南&…

Spring MVC(建立连接 + 请求)

文章目录 一、建立客户端和服务器的连接二、如何构造请求&#xff08;传参&#xff09;2.1 构造请求方式 参数通用注解2.2 传递单个参数2.3 传递多个参数2.4 传递数组/集合2.5 传递对象2.6 传递JSON 三、相关的其他请求操作3.1 获取URL中的参数 PathVariable3.2 上传文件 Requ…

maven找不到依赖,in offline mode

问题描述&#xff1a; [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

未来娱乐新地标?气膜球幕影院的多维体验—轻空间

在中国&#xff0c;一座独特的娱乐场所正在崭露头角&#xff1a;气膜球幕影院。这个融合了气膜建筑与激光投影技术的创新场所&#xff0c;不仅令人惊叹&#xff0c;更带来了前所未有的科幻娱乐体验。让我们一起探索这个未来的娱乐空间&#xff0c;感受其中的多维魅力。 现场演出…

【刷题篇】滑动窗口(二)

文章目录 1、水果成篮2、找到字符串中所有字母异位词3、串联所有单词的子串4、最小覆盖子串 1、水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多…

【Python技术】使用akshare、pandas打印合成生物概念股

前不久写过一篇文章【python技术】使用akshare抓取东方财富所有概念板块&#xff0c;并把指定板块概念的成分股保存excel 简单示例 &#xff0c;当初是用低空经济作为demo示例&#xff0c;得到概念股。 今天简单跑了下&#xff0c;提示 未找到板块名称合成生物&#xff0c;请检…

SM4-GCM Library代码示例

sm4-gcm加密解密测试代码: fn main() {let key Sm4Key([0u8; 16]);let nonce [0u8; 12];let plaintext b"Hello World!";let ciphertext sm4_gcm::sm4_gcm_encrypt(&key, &nonce, plaintext);println!("Encrypted: {}", hex::encode(&cip…

String,StringBuilder,StringBuffer

String&#xff0c;StringBuffer&#xff0c;StringBuilder String类 概念:String是不可变类&#xff0c;即一旦一个String对象被创建&#xff0c;包含在这个对象中的字符序列是不可改变的&#xff0c;直至该对象被销毁&#xff0c;并且String类是final类&#xff0c;不能有子…

Debian安装Redis、RabbitMQ、Nacos

安装Redis&#xff1a; 启动Redis、开机自启动 sudo systemctl start redis-server #启动sudo systemctl enable redis-server #开机自启 Redis状态(是否在运行) sudo systemctl status redis-server #查看运行状态 redis-cli ping # 客户端尝试连接 安装RabbitMQ&#xff0c;…

【JavaEE 初阶(五)】文件操作和IO

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多文件操作 目录 1.前言2.认识文件3.文件操作3.1File 属性3.2构造方法3.3File类方法 4.文件内容操作4.1R…

「JavaEE」多线程案例1:单例模式阻塞队列

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 多线程案例分析 &#x1f349;单例模式&#x1f34c;饿汉模式&#x1f34c;懒汉模式&#x1f34c;指令重排序 &#x1f349;阻塞队列&a…

Matlab|考虑极端天气线路脆弱性的配电网分布式电源和储能优化配置模型

1主要内容 程序主要参考《考虑极端天气线路脆弱性的配电网分布式电源配置优化模型-马宇帆》&#xff0c;针对极端天气严重威胁配电网安全稳定运行的问题。基于微气象、微地形对配电网的线路脆弱性进行分析&#xff0c;然后进行分布式电源接入位置与极端天气的关联性分析&#…

易图讯三维电子沙盘-大数据处理服务

易图讯科技10名高级大数据工程师&#xff0c;高效、快速进行POI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 免费专业提供POI、AOI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 1年更新2次POI、高清卫星影像。

Electron学习笔记(四)

文章目录 相关笔记笔记说明 六、数据1、使用本地文件持久化数据(1) 用户数据目录(2) 读写本地文件(3) 第三方库 2、读写受限访问的 Cookie3、清空浏览器缓存 相关笔记 Electron学习笔记&#xff08;一&#xff09;Electron学习笔记&#xff08;二&#xff09;Electron学习笔记…

数据结构-二叉树-红黑树

一、红黑树的概念 红黑树是一种二叉搜索树&#xff0c;但在每个节点上增加一个存储位表示节点的颜色&#xff0c;可以是Red或者BLACK&#xff0c;通过对任何一条从根到叶子的路径上各个节点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出两倍&#xff0c;…

springcloud整合网关(springcloud-gateway) 跨域处理

pom引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId&…

Python 将Excel转换为多种图片格式(PNG, JPG, BMP, SVG)

目录 安装Python Excel库 使用Python将Excel工作表转换为PNG&#xff0c;JPG或BMP图片 使用Python将Excel特定单元格区域转换为PNG&#xff0c;JPG或BMP图片 使用Python将Excel工作表转换为SVG图片 有时&#xff0c;你可能希望以图片形式分享Excel数据&#xff0c;以防止他…

vue3使用setup模式的store报错

** setup store模式 $reset方法报错 ** 顾名思义就是 使用store 使用的是setup 语法模式 不能执行$reset 方法 解决方式&#xff1a; // main.ts import { createPinia } from pinia const pinia createPinia() pinia.use(({ store }) > {const initialState JSON.pars…

美股市场恒生指数冲刺19000点关口 地产股大涨

查查配5月10日电(中新财经记者 谢艺观)5月10日,港股现强势行情,恒生指数盘中一度冲至18993.28点,距离19000点关口仅一步之遥。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投…

.net core WebApi 部署 IIS

安装 IIS 下载需要的 net 版本安装 前往 .net core WebApi 项目打包 Program.cs var builder WebApplication.CreateBuilder(args);// 输出 builder.Services.AddControllers().AddJsonOptions(options > {options.JsonSerializerOptions.PropertyNamingPolicy null;…