显示类控件
文章目录
- 1 QLabel
- 1.1 常用属性
- 1.2 例子1,设置文本 (textFormat)
- 1.3 例子2,设置widget背景图片 (pixmap和scaledContents)
- 1.4 例子3,设置对齐方式 (alignment)
- 1.5 例子4,设置自动换行,缩进和边距
- 1.5.1 设置换行 (wordWrap)
- 1.5.2 设置缩进 (indent)
- 1.5.3 设置边距 (margin)
- 1.6 例子5 设置伙伴 (buddy)
- 2. QLCDNumber
- 2.1 常用属性
- 2.2 例子1,倒计时
- 2.3 不用计时器?
- 3. QProgressBar
- 3.1 常用属性
- 3.2 例子1,漫无止境的进度条
- 4. QCalendarWidget
- 4.1 属性和信号
- 4.2 显示当前选中的的日期
1 QLabel
1.1 常用属性
属性 | 说明 |
---|---|
text | QLabel中的⽂本 |
textFormat | ⽂本的格式. Qt::PlainText 纯⽂本 Qt::RichText 富⽂本(⽀持html标签) Qt::MarkdownText (markdown格式) Qt::AutoText 根据⽂本内容⾃动决定⽂本格式. |
pixmap | QLabel 内部包含的图⽚. |
scaledContents | 设为true表⽰内容⾃动拉伸填充 QLabel 设为false则不会⾃动拉伸 |
alignment | 对⻬⽅式.可以设置⽔平和垂直⽅向如何对⻬. |
wordWrap | 设为true内部的⽂本会⾃动换⾏.设为false则内部⽂本不会⾃动换⾏. |
indent | 设置⽂本缩进.⽔平和垂直⽅向都⽣效. |
margin | 内部⽂本和边框之间的边距.不同于于indent,但是是上下左右四个⽅向都同时有效.⽽indent最多只是两个⽅向有效(具体哪两个⽅向有效取决于alignment) |
openExternalLinks | 是否允许打开⼀个外部的链接.(当QLabel⽂本内容包含url的时候涉及到) |
buddy | 给QLabel关联⼀个"伙伴",这样点击QLabel时就能激活对应的伙伴.例如伙伴如果是⼀个QCheckBox,那么该QCheckBox就会被选中 |
1.2 例子1,设置文本 (textFormat)
现在widget.ui
上放几个Qlabel
在构造函数使用void setTextFormat(Qt::TextFormat)
和void setText(const QString &)
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setTextFormat(Qt::PlainText);ui->label_2->setTextFormat(Qt::RichText);ui->label_3->setTextFormat(Qt::MarkdownText);ui->label_4->setTextFormat(Qt::AutoText);ui->label->setText("测试文本测试文本111");ui->label_2->setText("<h1>测试文本测试文本222</h1>");ui->label_3->setText("## 测试文本测试文本333");ui->label_4->setText("<b>测试文本测试文本444</b>");
}
运行结果如下
1.3 例子2,设置widget背景图片 (pixmap和scaledContents)
创建resource.qrc
,导入图片
在widget.cpp
的构造函数设置pixmap
并设置图片的初始位置
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 创建lable和图片QLabel* label = new QLabel(this);QPixmap pic(":/nyaruko.png");// 设置label的图片和位置QRect pos = this->geometry();label->setPixmap(pic);label->setGeometry(0, 0, pos.width(), pos.height());
}
要想让图片铺满整个widget
,可以使用void setScaledContents(bool)
label->setScaledContents(true);
此时如果调整窗口大小,图片不会跟着缩放,这是因为图片仅在构造函数那里初始化了一次。
如果想让图片跟着缩放,需要使用事件,在widget.cpp
中重写resizeEvent
函数
void Widget::resizeEvent(QResizeEvent *event)
{label->setGeometry(0, 0, event->size().width(), event->size().height());
}
无论怎么拖动,都会填满整个widget
1.4 例子3,设置对齐方式 (alignment)
在widget.ui
中拖入一个QLabel
,设置frameShape
为Box
,更好观察
frameShape的可选项的介绍如下
在构造函数里使用void setAlignment(Qt::Alignment);
方法
下面是Qt::Alignment
的简单介绍(机翻)
enum Qt::AlignmentFlag
flags Qt::Alignment
这个枚举类型用于描述对齐方式。它包含水平和垂直标志,可以组合使用以产生所需的效果。TextElideMode枚举类型还可以在许多情况下用于微调对齐文本的外观。
水平标志如下:
Constant | Value | Description |
---|---|---|
Qt::AlignLeft | 0x0001 | Aligns with the left edge. |
Qt::AlignRight | 0x0002 | Aligns with the right edge. |
Qt::AlignHCenter | 0x0004 | Centers horizontally in the available space. |
Qt::AlignJustify | 0x0008 | Justifies the text in the available space. |
垂直标志如下:
Constant | Value | Description |
---|---|---|
Qt::AlignTop | 0x0020 | Aligns with the top. |
Qt::AlignBottom | 0x0040 | Aligns with the bottom. |
Qt::AlignVCenter | 0x0080 | Centers vertically in the available space. |
Qt::AlignBaseline | 0x0100 | Aligns with the baseline. |
一次只能使用一个水平标志。下面是二维标志:
Constant | Value | Description |
---|---|---|
Qt::AlignCenter | AlignVCenter | AlignHCenter | Centers in both dimensions. |
一次最多只能使用一个水平和垂直标志。Qt::AlignCenter同时计算水平和垂直。
使用水平居中和垂直居中
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("这是要设置对齐方式的文本");ui->label->setAlignment(Qt::AlignCenter);
}
将文本放到左下角
ui->label->setAlignment(Qt::AlignLeft | Qt::AlignBottom);
1.5 例子4,设置自动换行,缩进和边距
1.5.1 设置换行 (wordWrap)
继续使用1.2中的widget.ui
设置自动换行setWordWrap(bool on)
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本");ui->label->setAlignment(Qt::AlignLeft | Qt::AlignTop);ui->label->setWordWrap(true);
}
1.5.2 设置缩进 (indent)
关于indent
属性的介绍
indent : int
This property holds the label's text indent in pixelsIf a label displays text, the indent applies to the left edge if alignment() is Qt::AlignLeft, to the right edge if alignment() is Qt::AlignRight, to the top edge if alignment() is Qt::AlignTop, and to the bottom edge if alignment() is Qt::AlignBottom.If indent is negative, or if no indent has been set, the label computes the effective indent as follows: If frameWidth() is 0, the effective indent becomes 0. If frameWidth() is greater than 0, the effective indent becomes half the width of the "x" character of the widget's current font().By default, the indent is -1, meaning that an effective indent is calculating in the manner described above.缩进:整型
这个属性保存标签文本的缩进像素值。如果一个标签显示文本,如果对齐方式(alignment)是Qt::AlignLeft缩进适用于左边缘,如果对齐方式是Qt::AlignRight缩进适用于右边缘,如果对齐方式是Qt::AlignTop缩进适用于顶部边缘,如果对齐方式是Qt::AlignBottom搜进适用于底部边缘。如果缩进是负数,或者没有设置缩进,标签会按照以下方式计算有效的缩进:如果frameWidth()为0,有效的缩进变为0。如果frameWidth()大于0,有效的缩进变为当前字体中“x”字符宽度的一半。默认情况下,缩进是-1,这意味着有效的缩进是按照上述方式计算的。
设置缩进void setIndent(int)
,以像素为单位设置缩进
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本");ui->label->setAlignment(Qt::AlignLeft | Qt::AlignTop);ui->label->setWordWrap(true);ui->label->setIndent(50);
}
1.5.3 设置边距 (margin)
关于margin
的介绍
margin : int
This property holds the width of the margin
The margin is the distance between the innermost pixel of the frame and the outermost pixel of contents.
The default margin is 0.边距:整型
这个属性保存边距的宽度。
边距是指框架最内层像素与内容最外层像素之间的距离。
默认的边距是0。
使用void setMargin(int)
来设置
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本这是要设置对齐方式的文本");ui->label->setAlignment(Qt::AlignLeft | Qt::AlignTop);ui->label->setWordWrap(true);// ui->label->setIndent(50);ui->label->setMargin(20);
}
四个方向都是20px,超出的地方不会显示
1.6 例子5 设置伙伴 (buddy)
在widget.ui
中拖上两个QLabel
和两个QRadioButton
,Qlabe
l的内容要形如xxxxxx&[键盘上的按键]xxxxxxxx
在widget.cpp
的构造函数中使用void QLabel::setBuddy(QWidget *buddy)
设置两个label的伙伴。
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label_male->setBuddy(ui->radioButton_male);ui->label_female->setBuddy(ui->radioButton_female);
}
现在使用快捷键alt+m
可以选中男,alt+f
可选中女
2. QLCDNumber
2.1 常用属性
QLCDNumber
用类似LCD的样式显示一个数字
下面是常用的属性
属性 | 说明 |
---|---|
intValue | QLCDNumber 显⽰的数字值(int). |
value | QLCDNumber 显⽰的数字值(double). 和intValue是联动的. 例如给value设为1.5,intValue的值就是 设置value和intValue的⽅法名字为 display ,⽽不是 setValue 或者 setIntValue . |
digitCount | 显⽰⼏位数字. |
mode | 数字显⽰形式 1. QLCDNumber::Dec :⼗进制模式,显⽰常规的⼗进制数字。 2. QLCDNumber::Hex :⼗六进制模式,以⼗六进制格式显⽰数字。 3. QLCDNumber::Bin :⼆进制模式,以⼆进制格式显⽰数字。 4. QLCDNumber::Oct :⼋进制模式,以⼋进制格式显⽰数字 只有⼗进制的时候才能显⽰⼩数点后的内容. |
segmentStyle | 设置显⽰⻛格. 1. QLCDNumber::Flat :平⾯的显⽰⻛格,数字呈现在⼀个平坦的表⾯上。 2. QLCDNumber::Outline :轮廓显⽰⻛格,数字具有清晰的轮廓和阴影效果。 3. QLCDNumber::Filled :填充显⽰⻛格,数字被填充颜⾊并与背景区分开 |
smallDecimalPoint | 小数点的央视 |
2.2 例子1,倒计时
在widget.ui
拖入一个LCDNumber
在设置初始值,设置计时器,连接槽函数
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lcdNumber->display(10);_timer = new QTimer(this);// 把QTimer的timeout信号连接到一个槽函数connect(_timer, &QTimer::timeout, this, &Widget::timeHandler);_timer->start(1000); // 1000ms发送一次信号
}Widget::~Widget()
{delete ui;
}void Widget::timeHandler()
{int val = ui->lcdNumber->value();if(val <= 0) {// 当时间<=0时,停止计时_timer->stop();} else {// 继续计时ui->lcdNumber->display(val-1);}
}
2.3 不用计时器?
如果不使用计时器,是否可以用循环+sleep的方式呢?
在构造函数写如下内容
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lcdNumber->display(10);int val = ui->lcdNumber->value();for (;;) {if(val <= 0) {// 当时间<=0时,跳出循环break;} else {// 更新时间ui->lcdNumber->display(--val);}std::this_thread::sleep_for(std::chrono::seconds(1));}
}
运行后发现程序并没有立刻显示出窗口,而是等了10s后,才显示出widget
这是因为在main.cpp
里,要等w
构造结束后才能show()
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
如果创建一个线程呢?继续修改widget.cpp
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->lcdNumber->display(10);std::thread t([this](){int val = ui->lcdNumber->value();for (;;) {if(val <= 0) {// 当时间<=0时,跳出循环break;} else {// 更新时间ui->lcdNumber->display(--val);}std::this_thread::sleep_for(std::chrono::seconds(1));}});
}
编译没有问题,运行后会报错
这是因为 **Qt中规定,任何对于GUI上内容的操作,必须在主线程中完成。**像Widget构造函数,以及connect连接的slot函数,都是在主线程中调⽤的.⽽我们⾃⼰创建的线程则不是.当我们⾃⼰的线程中尝试对界⾯元素进⾏修改时, Qt程序往往会直接崩溃.
综上所述,使⽤定时器,是实现上述功能的最合理⽅案
3. QProgressBar
3.1 常用属性
属性 | 说明 |
---|---|
minimum | 进度条最⼩值 |
maximum | 进度条最⼤值 |
value | 进度条当前值 |
alignment | ⽂本在进度条中的对⻬⽅式. Qt::AlignLeft :左对⻬ Qt::AlignRight :右对⻬ Qt::AlignCenter :居中对⻬ Qt::AlignJustify :两端对⻬ |
textVisible | 进度条的数字是否可⻅. |
orientation | 进度条的⽅向是⽔平还是垂直 |
invertAppearance | 是否是朝反⽅向增⻓进度 |
textDirection | ⽂本的朝向. |
format | 展⽰的数字格式. %p :表⽰进度的百分⽐(0-100) %v :表⽰进度的数值(0-100) %m :表⽰剩余时间(以毫秒为单位) %t :表⽰总时间(以毫秒为单位) |
3.2 例子1,漫无止境的进度条
一个一直重复加载的进度条
在widet.ui
中导入一个QProgessBar
,widget.h
内容如下
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTimer>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void timerHandler();private:Ui::Widget *ui;QTimer* timer;
};
#endif // WIDGET_H
widget.cpp
内容如下
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 初始化ui->progressBar->setValue(0);timer = new QTimer(this);// 信号槽connect(timer, &QTimer::timeout, this, &Widget::timerHandler);// 每100ms发送一次信号timer->start(100);
}Widget::~Widget()
{delete ui;
}void Widget::timerHandler()
{int val = ui->progressBar->value();if(val >= 100) {// 重新设置valueui->progressBar->setValue(0);} else {// 每次让val+5ui->progressBar->setValue(val+5);}
}
运行结果如下
问题:若将widget.h
中的include <QTimer>
移动到widget.cpp
中,代码仍能正常运行。正常来说应该是找不到QTimer
的,这是为什么呢?
解答:这是因为Qt设计了一个专门的头文件,该头文件包含了Qt所有类的“前置声明”。当我们包含其它的Qt文件的时候,都会间接的包含该头文件
形如
...;
class QTimer;
class QLbel;
class QLCDNumber;
...
这样即使widget.h
中没有包含QTimer
,但是包含了QWidget
,该类间接包含了有前置声明的头文件,改头文件展开后,widget.h
就能通过编译了。
这样设计的目的是为了减少include头文件的数量,进而加快编译代码的速度。
4. QCalendarWidget
4.1 属性和信号
属性 | 说明 |
---|---|
selectDate | 当前选中的⽇期 |
minimumDate | 最⼩⽇期 |
maximumDate | 最⼤⽇期 |
firstDayOfWeek | 每周的第⼀天(也就是⽇历的第⼀列)是周⼏. |
gridVisible | 是否显⽰表格的边框 |
selectionMode | 是否允许选择⽇期 |
navigationBarVisible | ⽇历上⽅标题是否显⽰ |
horizontalHeaderFormat | ⽇历上⽅标题显⽰的⽇期格式 |
verticalHeaderFormat | ⽇历第⼀列显⽰的内容格式 |
dateEditEnabled | 是否允许⽇期被编辑 |
信号 | 说明 |
---|---|
selectionChanged() | 当选中的⽇期发⽣改变时发出 |
activated(constQDate&) | 当双击⼀个有效的⽇期或者按下回⻋键时发出,形参是⼀个QDate类型,保存了选中的⽇期 |
currentPageChanged(int, int) | 当年份⽉份改变时发出,形参表⽰改变后的新年份和⽉份 |
4.2 显示当前选中的的日期
在widet.ui
中放置一个ClendarWidget和一个Label
给日历的selectionChanged()
信号添加槽函数,改变Lable的内容
void Widget::on_calendarWidget_selectionChanged()
{// 获取当前选择的日期QDate date = ui->calendarWidget->selectedDate();// 更改QLabelui->label->setText("选择的日期是: " + date.toString());
}
相关文章:
显示类控件
文章目录 1 QLabel1.1 常用属性1.2 例子1,设置文本 (textFormat)1.3 例子2,设置widget背景图片 (pixmap和scaledContents)1.4 例子3,设置对齐方式 (alignment)1.5 例子4,设置自动换行,缩进和边距1.5.1 设置换行 (wordW…...
AOC显示器915Sw按键失灵维修记
大家好,我是 程序员码递夫 今天给大家分享的是自己维修老古董AOC液晶显示器按键失灵的的过程,实属DIY记录。 1、引子 家里有台老古董的19寸AOC液晶显示器(型号915Sw), 一直作为我的副显示器陪伴着左右,显示还正常&a…...
PyQt学习笔记
一.PyQt5的安装 当我们安装好开发环境后,打开pycharm在其设置里面点击按钮自动安装即可。 安装完成后我们会在这里面看到这几个东西说明安装成功了。 二.PyQt5 GUI程序框架 1.一个简单的PyQt5应用程序 首先我们用pycharm创建一个demo.py的文件。 我们创建文件为s…...
LLMops产品介绍
文章目录 字节跳动的扣子优点低代码开发丰富的插件与能力扩展强大的记忆与数据交互能力应用场景广泛 不足模型选择相对受限定制化程度受限输出效果有待提高应用部署范围有限市场认知度和用户基础不足 开悟大模型运营管理系统(LLMOPS)优点全生命周期管理降…...
【GPTs】Front-end Expert:助力前端开发的智能工具
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | GPTs应用实例 文章目录 💯GPTs指令💯前言💯 Front-end Expert主要功能适用场景优点缺点 💯小结 💯GPTs指令 中文翻译: 使用Dalle生成用户…...
一篇保姆式centos/ubuntu安装docker
前言: 本章节分别演示centos虚拟机,ubuntu虚拟机进行安装docker。 上一篇介绍:docker一键部署springboot项目 一:centos 1.卸载旧版本 yum remove docker docker-client docker-client-latest docker-common docker-latest doc…...
人工智能大趋势下软件开发的未来
随着人工智能(AI)技术的不断演进,软件开发领域正经历着深刻的变革。中国电信推出的星辰大模型软件工厂,作为国内首款破局性AI开发工具,其全自动流水线的特性——自动生成前后端代码、自主测试和纠错等,为软…...
string的模拟实现
string的模拟实现 一.string的模拟实现1.1构造函数和析构函数,以及一些简单函数1.2迭代器1.3增删查改 二.运算符重载三.流插入和流提取 一.string的模拟实现 string本质上是是一种char类型的顺序表,结构上和顺序表相似。 namespace Mystring {class st…...
Qt桌面应用开发 第七天(绘图事件 绘图设备)
目录 1.绘图事件paintEvent 2.高级绘图 3.图片绘制 4.绘图设备 4.1QPixmap 4.2QBitmap 4.3QImage 4.4QPicture 1.绘图事件paintEvent paintEvent——绘图事件 需求:利用QPainter绘制点、线、圆、矩形、文字;设置画笔改为红色,宽度为…...
PDF内容提取,MinerU使用
准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…...
基于lora的llama2二次预训练
基于lora的llama2二次预训练 一、为什么需要对llama2做基于lora的二次预训练? 加入中文训练语料进行llama2的二次预训练,这样模型就可以增加支持中文输出的能力。 二、基于lora的llama2二次预训练的目标是什么? 在保持预训练模型权重不变的情况下&a…...
机器学习之量子机器学习(Quantum Machine Learning, QML)
量子机器学习(Quantum Machine Learning, QML)是一门结合量子计算与机器学习的新兴交叉领域。它利用量子计算的优势(如并行计算、量子叠加和量子纠缠)来解决传统机器学习中难以处理的问题,或提升算法效率和性能。 QML 的核心要素 量子计算的特性: 量子叠加:允许量子比特…...
【2024 Optimal Control 16-745】【Lecture 3 + Lecture4】minimization.ipynb功能分析
主要功能-最小化问题 目标函数分析: 定义函数 f ( x ) f(x) f(x) 及其一阶、二阶导数。使用绘图工具可视化函数的形状。 实现数值优化: 使用牛顿法寻找函数的极值点,结合一阶和二阶导数加速收敛。使用正则化牛顿法解决二阶导数矩阵可能不正定的问题。 可视化过程…...
一种新的电机冷却方式——热管冷却
在现代工业设备中,电机作为一种核心动力装置,广泛应用于各个领域。例如,家用电器、自动化生产线、交通工具等都离不开电机的运作。然而,随着电机功率的不断提升和负载的增加,电机在运行过程中产生的热量也随之增多&…...
虚拟机上搭建达梦DSC简略步骤
vmware 17 centos 7.6 达梦 dm8_20240920_x86_rh7_64.iso cd /d C:\Program Files (x86)\VMware\VMware Workstation\.\vmware-vdiskmanager.exe -c -s 100MB -a lsilogic -t 2 "F:\vm\dmdsc\sharedisk\share-dcr.vmdk" .\vmware-vdiskmanager.exe -c -s 100MB -a l…...
C++ 矩阵旋转
【问题描述】 编写一个程序,读入一个矩阵,输出该矩阵以第一行第一列数字为中心,顺时针旋转90度后的新矩阵,例如: 输入的矩阵为: 1 2 3 4 5 6 顺时针旋转90度后输出的矩阵为: 4 1 5 2 6 3 【输入…...
mongodb基础操作
创建数据库 use admin授权 db.auth("admin","123456")创建用户 db.createUser({ user: "xxx", pwd: "xxxxxx", roles: [ { role: "readWrite", db: "iot" } ] })查询数据库大小 show dbs;查询结果数量 db.mo…...
以思维链为线索推理隐含情感
❀ 以思维链为线索推理隐含情感 简介摘要引言THORTHOR核心代码实验结果代码运行总结 简介 本文主要对2023ACL论文《Reasoning Implicit Sentiment with Chain-of-Thought Prompting》主要内容进行介绍。 摘要 尽管情绪分析任务常依据文本中的直接意见表达来判定目标的情绪倾向…...
(笔记,自己可见_1)简单了解ZYNQ
1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…...
部署自动清理任务解决ORA-00257: archiver error. Connect internal only, until freed
使用oracle数据库的时候,我们一般都会开启归档,确保数据库的日志连续和和数据安全。但随着数据库的运行,归档文件会越来越多,最终撑满磁盘空间,数据库无法继续归档,出现“ORA-00257: archiver error. Conne…...
scau编译原理综合性实验
一、题目要求 题目: 选择部分C语言的语法成分,设计其词法分析程序、语法语义分析程序。 要求: 设计并实现一个一遍扫描的词法语法语义分析程序,将部分C语言的语法成分(包含赋值语句、if语句、while循环语句…...
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时,突然发现它的一个接口,被另一个服务ip频繁的请求。 按理说,之前设置的是,每隔1分钟请求一次接口。但从日志来看,则是1秒钟请求一次ÿ…...
PICO VR串流调试Unity程序
在平时写Unity的VR程序的时候,需要调试自己写的代码,但是有的时候会发现场景过于复杂,不是HMD一体机能运行的,或者为了能够更方便的调试,不需要每次都将程序部署到眼睛里,这样非常浪费时间,对于…...
ESP-KeyBoard:基于 ESP32-S3 的三模客制化机械键盘
概述 在这个充满挑战与机遇的数字化时代,键盘已经成为我们日常学习、工作、娱乐生活必不可少的设备。而在众多键盘中,机械键盘,以其独特的触感、清脆的敲击音和经久耐用的特性,已经成为众多游戏玩家和电子工程师的首选。本文将为…...
PML和金属边界区别
一、完美匹配层(PML)边界 原理:PML是一种特殊的吸收边界条件。它基于麦克斯韦方程组的特殊解来设计,其材料参数是经过精心选择的,使得在这个边界区域内,电磁波能够无反射地进入并被吸收。从数学上来说&…...
机器学习基础--基于线性回归房价预测
经典的线性回归模型主要用来预测一些存在着线性关系的数据集。回归模型可以理解为:存在一个点集,用一条曲线去拟合它分布的过程。如果拟合曲线是一条直线,则称为线性回归。如果是一条二次曲线,则被称为二次回归。线性回归是回归模…...
【Y20030007】基于java+servlet+mysql的垃圾分类网站的设计与实现(附源码 配置 文档)
网垃圾分类网站的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着全球环境保护意识的提升,垃圾分类已成为一项紧迫且重要的任务。为了有效推动垃圾分类的实施,提升公众的环保意识和参与度,垃圾分类已…...
47小型项目的规划与实施
每天五分钟学Linux | 第四十七课:小型项目的规划与实施 大家好!欢迎再次来到我们的“每天五分钟学Linux”系列教程。在前面的课程中,我们学习了并发编程的知识,包括如何管理和使用进程与线程。今天,我们将探讨如何规划…...
Linux---ps命令
Linux ps 命令 | 菜鸟教程 (runoob.com) process status 用于显示进程的状态 USER: 用户名,运行此进程的用户名。PID: 进程ID(Process ID),每个进程的唯一标识号%CPU: 进程当前使用的CPU百分比%MEM: 进程当前使用的…...
Qt Qt::UniqueConnection 底层调用
在这里插入图片描述 步骤1: 1:判断槽函数连接方式, 以及信号对象是否有效2: 信号计算格式是否 大于 signal_index 目前调试 signal_index 不太清楚怎末计算的(有清楚的帮忙街道)3:获取槽函数对…...
Jenkins + gitee 自动触发项目拉取部署(Webhook配置)
目录 前言 Generic Webhook Trigger 插件 下载插件 编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建,本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目; Generic Webhook Trigger 插件 实现代码推送后,触…...
2025-2026财年美国CISA国际战略规划(下)
文章目录 前言四、加强综合网络防御(一)与合作伙伴共同实施网络防御,降低集体风险推动措施有效性衡量 (二)大规模推动标准和安全,以提高网络安全推动措施有效性衡量 (三)提高主要合作…...
aws ses生产环境申请
* aws ses生产环境申请经验: 要有域名邮箱作为反馈联系邮箱 且有收发记录 最好使用aws的WorkMail要说明清晰的使用用途、预估量、如何处理退信和投诉、防spam策略 等内容,这里可以先问问AI(比如:如何处理退信和投诉?…...
velocity unable to find resource ‘xxx.vm‘ in any resource loader
大家好,我是 程序员码递夫。 [TOC]velocity unable to find resource ‘xxx.vm’ in any resource loader 1.问题 今天帮客户解决一个远古 java web系统的bug , 客户的系统用了非常古老的框架 jdk1.6struc1.1 velocity1.5 运行在tomcat6环境。 客户想迁移到 tomc…...
InfluxDB时序数据库笔记(一)
InfluxDB笔记一汇总 1、时间序列数据库概述2、时间序列数据库特点3、时间序列数据库应用场景4、InfluxDB数据生命周期5、InfluxDB历史数据需要另外归档吗?6、InfluxDB历史数据如何归档?7、太麻烦了,允许的话选择设施完备的InfluxDB云产品吧8、…...
c#编码技巧(十九):各种集合特点汇总
.NET 常用集合对比: .NET 常见的线程安全集合 .NET 只读集合...
Python中的__init__()函数
什么是__init__()函数? __init__()函数其实是用于初始化新建对象的状态,当你创建一个类的实例时,__init__()函数的方法就会被自动调用,允许你为对象设置初始属性或执行初始化操作。 接下来这里让我们举例说明: 首先,…...
写的bug与调试
无论是代码中的逻辑混乱,还是环境配置引发的灾难,亦或是多人协作产生的诡异问题,都可以在这里分享。把你职业生涯里遇到或写过的最大 bug 故事讲出来,让大家一起感受那些惊心动魄、哭笑不得的瞬间,也为后来人敲响警钟吧…...
本地安装YAPI
项目中用到很多的RESTAPI,光靠人工管理或者普通文档肯定是不行的,翻了很多的RESTAPI管理工具,还是选择了YAPI,原因有2,一个是接口位于内网,外网网站上管理测试不到内网接口,另外一个是使用方式&…...
嵌入式Linux基于IMX6ULL tslib学习总结
目录 1. tslib开源库介绍1.1 tslib主要功能1.2 架构 2. tslib代码简单分析2.1 ts_print_mt.c分析代码2.2 ts_setup代码分析2.3 ts_open代码分析2.4 ts_config代码分析2.5 ts_read_mt代码分析2.6 tslib中4个模块的含义 3. 使用tslib库打印触摸屏2点之间的距离 基于韦东山IMX6ULL…...
pinia的使用
一、安装 Pinia 首先,确保你的项目已经安装了 Vue.js(版本 3.x)。如果没有,请先安装 Vue。 然后使用包管理器(如 npm 或 yarn)安装 Pinia: 通过 npm 安装:npm install pinia通过 ya…...
亚信安全携手飞书“走近先进” 与保隆科技探索制造业数字化转型
亚信安全携手飞书组织举办“走近先进”活动。近日活动“走近”了中国汽车供应链百强、上海市制造业五十强企业——上海保隆汽车科技股份有限公司(以下简称“保隆科技”)。活动围绕“突破桎梏 加速升级”的主题,聚焦企业数字化转型的核心议题&…...
mybatis-plus方法无效且字段映射失败错误排查
问题: Invalid bound statement (not found): com.htlc.assetswap.mapper.WalletMapper.insert,并且select * 进行查询时带下划线的字段未成功映射。 排查: 1.检查WalletMapper接口,确保继承自BaseMapper 2.启用驼峰命名法映射。a…...
poi模板动态导出,下拉框联动,公式设置
背景:有一个动态导出模板的需求,根据页面维护的数据比如模板名称,模板的sheet名称,列名称宽度高度等,导出excel文件。打破以往把excel上传到代码的resource中,或者文件服务中,再下载出来导入。这…...
string的实际应用 -- 大数相加 、大数相乘
前言:哎,做题好难o(╥﹏╥)o,有时候想不到,而有时候则是想到了却没办法理清思路,转化为代码。有必要反思了┓(;_`)┏,是否是做的太少了,或是自己的基础欠缺。 大学总是有些迷茫~ …...
16:(标准库)ADC三:使用外部触发启动ADC/模拟看门狗
使用外部触发启动ADC 1、外部中断线EXTI11触发ADC2、外部定时器TIM2_CH2触发ADC3、ADC中模拟看门狗的使用 1、外部中断线EXTI11触发ADC ADC的触发方式有很多,一般情况都是使用软件触发反式启动ADC转换。除了软件触发方式还能使用外部事件触发启动ADC转换。如下图所…...
前端框架 react 性能优化
目录 一、不使用任何性能优化API进行优化 二、通过性能优化API优化 1、React.memo 2、useCallback 3、useMemo 4、PureComponent 三、总结 总览:react的优化核心思想就是让react跳过重新渲染那个些没有改变的Component,而只重新渲染发生变化的C…...
一加ACE 3 Pro手机无法连接电脑传输文件问题
先说结论:OnePlus手机无法连接电脑传输数据的原因,大概率是一加数据线的问题。尝试其他手机品牌的数据线(比如华为),再次尝试。 连接电脑方法: 1 打开开发者模式(非必要操作) 进入…...
✅ Qt流式布局
Qt流式布局 前段时间,曾经对某个软件的一个“流式布局”有点感兴趣,什么叫“流式布局”呢?请看下图: 简而言之,流式布局就是布局应能够根据界面尺寸的变化自动调整其内部控件的位置。然而,Qt 提供的标准布局ÿ…...
【微服务】RabbitMQ与SpringAMQP消息队列
一、初识MQ 1. 同步通讯 同步通讯就好比双方打电话,可以实时响应,但只能一对一,只能同时和一个人聊天。 异步通讯就好比两个人发信息,你发信息给对方,对方不一定给你回复,但是可以一对多,可…...