QT常用事件

鼠标事件(QMouseEvent),如点击、移动、释放等。
键盘事件(QKeyEvent),如按键按下和释放。
窗口事件(QResizeEvent, QMoveEvent),当窗口大小或位置改变时。
绘制事件(QPaintEvent),需要重新绘制部分或全部窗口时。
定时器事件(QTimerEvent),定时器超时时。
拖放事件(QDragEnterEvent, QDropEvent),进行拖放操作时。
焦点事件(QFocusEvent),当部件获得或失去键盘焦点时。

QEvent

QEvent 类是 Qt 事件系统的基础。它是所有事件类的基类,提供了处理各种事件所需的基本功能。Qt 中的事件包括用户交互事件(如鼠标点击和键盘按键)、窗口状态改变事件(如打开、关闭、最小化)、以及其他许多类型的事件。以下是 QEvent 类中主要函数的详细说明:

构造函数和析构函数
QEvent(QEvent::Type type)
构造一个事件。type 参数指定了事件的类型,这决定了事件的性质和用途。QEvent::Type 是一个枚举,包含了 Qt 支持的所有事件类型,如 QEvent::MouseMove、QEvent::KeyPress 等。

virtual ~QEvent()
虚析构函数。因为 QEvent 是许多事件类的基类,所以析构函数是虚的,确保派生类的对象可以通过基类指针正确地销毁。

事件状态管理
void accept()
标记事件为已接受。对于某些事件(如鼠标事件),接受事件意味着表示事件已经被处理,不需要进一步传递。

void ignore()
标记事件为已忽略。这表示事件没有被处理,允许事件继续传递给其他事件处理器。

bool isAccepted() const
返回事件的接受状态。如果事件已被接受,返回 true;如果被忽略,返回 false。

void setAccepted(bool accepted)
显式设置事件的接受状态。如果 accepted 为 true,则事件被标记为已接受;如果为 false,则被标记为已忽略。

事件信息查询
bool spontaneous() const
返回事件是否为自发的(spontaneous)。自发事件是由操作系统直接生成的,而非由 Qt 应用程序生成。例如,用户的鼠标点击是自发事件,而程序调用 update() 触发的重绘事件不是自发的。

QEvent::Type type() const
返回事件的类型。这个值是 QEvent::Type 枚举中的一个,表示事件的具体类别。

[static] int QEvent::registerEventType(int hint = -1)

在Qt中,QEvent::registerEventType(int hint = -1)是一个静态函数,用于注册一个新的事件类型。这在您需要创建自定义事件时非常有用。当Qt的标准事件不足以满足您的需求时,您可以注册一个新的事件类型,并在应用程序中使用它。

参数
hint: 这是一个可选参数,用于请求一个特定的事件类型值。如果指定为-1(默认值),Qt将选择第一个可用的事件类型值。如果指定了其他值,Qt会尝试分配该值作为事件类型,但如果该值已被占用,Qt将选择另一个值。hint参数提供了一种方式来尝试获取一个易于记忆的事件类型值,但不能保证分配成功。
返回值
函数返回一个int值,表示注册的事件类型。这个返回值是唯一的,可以在自定义事件中使用。

使用示例
假设您正在开发一个应用程序,需要处理一个特殊的网络数据到达事件。由于Qt标准事件不包含这种类型的事件,您可以注册一个新的事件类型来表示它:

// 在适当的地方注册新的事件类型
int MyCustomEventType = QEvent::registerEventType();// 然后,您可以在需要的地方构造并发送这个自定义事件
QEvent *event = new QEvent(static_cast<QEvent::Type>(MyCustomEventType));
QCoreApplication::postEvent(receiver, event);

在上面的示例中,MyCustomEventType是通过调用QEvent::registerEventType()获得的新事件类型。然后,您可以使用这个类型来构造自定义事件,并通过QCoreApplication::postEvent()将事件发送给特定的事件接收者(receiver)。

注意事项
注册的事件类型是全局唯一的,一旦注册,所有实例和应用程序中都可以使用该事件类型。
由于事件类型的数量有限,只有在确实需要时才应注册新的事件类型。
自定义事件的处理通常需要在事件接收者类中 重写event() 函数或特定的事件处理函数。

鼠标事件

  1. Qt::MouseButton button() const
    返回触发鼠标事件的单个按钮。对于 mousePressEvent 和 mouseReleaseEvent 事件,这将是被按下或释放的那个按钮。对于 mouseMoveEvent,这个函数返回 Qt::NoButton。
  2. Qt::MouseButtons buttons() const
    返回在事件发生时所有被按下的鼠标按钮的状态。这是一个位字段,可以表示多个按钮同时被按下,例如,左键和右键同时被按下。
  3. Qt::MouseEventFlags flags() const
    返回一个标志集,这些标志为鼠标事件提供额外的上下文信息,例如,是否设置了某些特定的事件属性。
  4. QPoint globalPos() const
    返回事件发生时鼠标光标的全局位置,即相对于整个屏幕的位置。
    int globalX() const 和 int globalY() const
    分别返回事件发生时鼠标光标的全局X和Y坐标。
  5. const QPointF &localPos() const
    返回事件发生时鼠标光标的位置,这个位置是相对于接收事件的小部件的局部坐标系的。QPointF 提供了更精确的浮点数坐标。
  6. QPoint pos() const
    返回事件发生时鼠标光标的位置,这个位置是相对于接收事件的小部件的局部坐标系的。这是一个 QPoint 对象,提供整数坐标。
  7. const QPointF &screenPos() const
    返回事件发生时鼠标光标的位置,这个位置是相对于接收事件的小部件所在屏幕的坐标系的。QPointF 提供了更精确的浮点数坐标。
  8. Qt::MouseEventSource source() const
    返回鼠标事件的来源。这个值可以帮助区分事件是由鼠标、触摸屏还是其他输入设备生成的。
  • MouseEventNotSynthesized:表示该鼠标事件是一个真实的事件,即直接由用户的物理操作(如鼠标移动或点击)产生的,没有经过任何形式的软件合成或模拟。

  • MouseEventSynthesizedBySystem:表示该鼠标事件是由系统合成的。这可能发生在操作系统层面,例如,当系统自动执行某些操作(如响应某些驱动程序的行为)时,可能会合成鼠标事件。

  • MouseEventSynthesizedByQt:表示该鼠标事件是由Qt框架合成的。Qt可能会在某些情况下合成事件,例如,为了提供平台间的一致性或处理某些特殊的输入情况。

  • MouseEventSynthesizedByApplication:表示该鼠标事件是由应用程序代码合成的。开发者可能会在应用程序中主动合成鼠标事件,以模拟用户操作或自动化测试。

  1. const QPointF &windowPos() const
    返回事件发生时鼠标光标的位置,这个位置是相对于接收事件的窗口的坐标系的。QPointF 提供了更精确的浮点数坐标。

鼠标滚轮事件

  1. QPoint angleDelta() const: 返回滚轮事件的角度增量,通常用于标准滚轮。
  2. Qt::MouseButtons buttons() const: 返回在滚轮事件发生时被按下的鼠标按钮。
  3. QPointF globalPosition() const: 返回事件发生时鼠标的全局位置。
  4. bool inverted() const: 返回一个布尔值,指示滚动方向是否被反转。
  5. Qt::ScrollPhase phase() const: 返回滚轮事件的阶段,比如Qt::ScrollPhase::ScrollBegin、Qt::ScrollPhase::ScrollUpdate等。
  • Qt::NoScrollPhase (0): 输入设备不支持滚动阶段。这表明事件来源的设备(如鼠标)无法区分滚动的不同阶段,只提供基本的滚动数据。
  • Qt::ScrollBegin (1): 滚动即将开始,但滚动距离尚未改变。这可以用于触发滚动开始的特定动作或动画。
  • Qt::ScrollUpdate (2): 滚动距离已经改变(默认值)。这是最常见的阶段,表示用户正在滚动。
  • Qt::ScrollEnd (3): 滚动已经结束,滚动距离不再改变。这可以用于触发滚动结束的动作或恢复到滚动前的某种状态。
  • Qt::ScrollMomentum (4): 用户不再触摸输入设备,但由于滚动动量,滚动仍在继续。这适用于支持惯性滚动的设备,允许应用程序处理由于手指离开触摸屏或触摸板而继续发生的滚动。
  1. QPoint pixelDelta() const: 返回滚轮事件的像素增量,对于高精度滚轮设备较为常见。
  2. QPointF position() const: 返回事件发生的位置,相对于接收事件的窗口。
  3. Qt::MouseEventSource source() const: 返回滚轮事件的来源。

键盘事件

  • int count() const
    返回事件的计数,对于大多数键盘事件,这个值为1。
  • bool isAutoRepeat() const
    检查这个事件是否是由键盘的自动重复功能产生的。
  • int key() const
    返回触发事件的键的代码(Qt 的 Qt::Key 枚举)。
  • bool matches(QKeySequence::StandardKey key) const
    检查该事件是否与给定的 QKeySequence::StandardKey 匹配。
  • Qt::KeyboardModifiers modifiers() const
    返回事件发生时有效的修饰键(如 Shift、Ctrl、Alt)。
  • quint32 nativeModifiers() const
    返回事件发生时的本地修饰键状态。

返回代表键盘修饰符键状态的原生(操作系统特定的)修饰符代码。这些修饰符包括Shift、Ctrl、Alt和Meta(在Mac上是Command键)等。nativeModifiers 的值是特定于平台的,因此它们在不同的操作系统上可能会有不同的表示方法。
应用场景:当你需要精确地处理用户输入,尤其是在需要区分不同操作系统默认键盘布局或特殊键位映射的情况下,nativeModifiers 可以提供这些详细信息。

  • quint32 nativeScanCode() const
    返回键的本地扫描码。

返回按键的原生扫描码。扫描码是指键盘上每个键的唯一标识符,与按键的字符输出无关。扫描码对于识别物理按键位置很有用,而不是按键代表的字符。
应用场景:用于游戏开发或需要精确控制键盘物理按键的应用程序中。例如,当开发跨平台的游戏时,使用扫描码可以确保无论键盘布局如何,按键映射都保持一致。

  • quint32 nativeVirtualKey() const
    返回键的本地虚拟键码。

返回与事件相关联的键的原生虚拟键码。虚拟键码是操作系统用于识别特定按键的一个代码,与按键的物理位置无关,通常与按键的功能有关。
应用场景:在需要处理特定按键功能,特别是在进行操作系统级快捷键处理或集成操作系统特有功能时使用。例如,在处理全局热键或与特定系统功能绑定的快捷键时,可以使用虚拟键码来确保正确识别按键。

  • QString text() const
    返回与事件相关联的文本。对于可打印字符,这将是字符本身。对于控制键,这可能是空字符串。

窗口事件

  1. QResizeEvent
  • const QSize &oldSize() const:返回之前的窗体大小
  • const QSize &size() const:返回当前窗体大小
  1. QPaintEvent

构造函数

  • QPaintEvent(const QRect &paintRect)
    这个构造函数创建一个 QPaintEvent 实例,其中 paintRect 参数指定了需要重绘的矩形区域。这个矩形是相对于窗口的坐标系统。

  • QPaintEvent(const QRegion &paintRegion)
    这个构造函数创建一个 QPaintEvent 实例,其中 paintRegion 参数指定了需要重绘的区域。与 QRect 相比,QRegion 可以表示更复杂的形状,包括多个不连续的矩形区域。

成员函数

  • const QRect &rect() const
    这个函数返回一个引用,指向表示需要重绘的矩形区域的 QRect。即使原始的 QPaintEvent 是用 QRegion 构造的,rect() 也会返回一个矩形,这个矩形是覆盖整个 QRegion 的最小矩形。
  • const QRegion &region() const
    这个函数返回一个引用,指向表示需要重绘的区域的 QRegion。如果原始的 QPaintEvent 是用 QRect 构造的,region() 也会返回一个区域,这个区域恰好覆盖了构造函数中指定的矩形。

动作事件

QActionEvent 是 Qt 中用于处理与动作相关的事件的类,特别是在动作(QAction)被添加到、从菜单或工具栏中移除,或者在这些容器中的位置发生变化时。这些事件对于动态更新用户界面非常有用,特别是当应用程序的某些功能被启用或禁用时,或者需要根据特定条件调整命令的可用性和顺序时。

构造函数
QActionEvent(int type, QAction *action, QAction *before = nullptr)

这个构造函数用于创建一个 QActionEvent 实例。

type: 事件的类型,可以是 QEvent::ActionAdded、QEvent::ActionRemoved 或 QEvent::ActionChanged。
action: 与事件相关联的 QAction 对象。这是被添加、移除或改变的动作。
before: (可选)指定新动作应该插入到哪个现有动作之前。如果为 nullptr,则动作被添加到容器的末尾。这个参数仅在动作被添加到容器中时有意义。
成员函数
QAction *action() const

返回与事件相关联的动作对象。无论是动作被添加、移除还是改变,这个函数都会返回那个具体的 QAction 对象。

QAction *before() const

返回新动作应该插入到哪个现有动作之前的信息。如果返回值为 nullptr,表示新动作被添加到了容器的末尾。这在处理 QEvent::ActionAdded 事件时特别有用,因为它允许您精确地控制动作在菜单或工具栏中的位置。

拖放事件

QDragLeaveEvent继承QEvent
QDragEnterEvent继承QDragMoveEvent继承QDropEvent继承QEvent

  • QDropEvent

QDropEvent类在Qt中用于处理拖放操作的最后阶段,即当用户在目标位置释放(drop)拖动的对象时触发。这个事件包含了所有必要的信息,以便应用程序可以决定如何处理被放下(dropped)的数据。

构造函数
QDropEvent(const QPointF &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = Drop)

创建一个QDropEvent实例。

pos: 放下位置的坐标(浮点型,提供更精确的位置信息)。
actions: 描述可能的拖放操作类型(例如,复制、移动)。
data: 拖放操作中传递的数据。
buttons: 触发拖放事件时按下的鼠标按钮。
modifiers: 触发事件时激活的键盘修饰键。
type: 事件的类型,默认为Drop。
成员函数
void acceptProposedAction()
接受事件中建议的拖放操作。这通常在目标同意执行拖放建议的操作时使用。

Qt::DropAction dropAction() const
返回实际的拖放操作类型。

Qt::DropAction 枚举值:
Qt::CopyAction:表示一个复制操作,即将数据从源复制到目的地,源数据保持不变。
Qt::MoveAction:表示一个移动操作,即将数据从源移动到目的地,源数据随后被删除或在原位置无效。
Qt::LinkAction:表示创建一个到数据的链接,而不是复制或移动数据本身。
Qt::ActionMask:用作掩码,以从给定的动作中提取基本动作类型。
Qt::TargetMoveAction:指示目标应对数据执行移动操作,这通常在内部拖放操作中使用,当数据实际上并未离开应用程序。
Qt::IgnoreAction:表示忽略拖放操作,不对数据执行任何操作。

Qt::KeyboardModifiers keyboardModifiers() const
返回在放下时激活的键盘修饰键。

const QMimeData *mimeData() const
返回与事件相关联的MIME数据对象,这是传递的实际数据。

Qt::MouseButtons mouseButtons() const
返回在放下事件发生时按下的鼠标按钮。

QPoint pos() const 和 const QPointF &posF() const
返回放下位置的坐标。pos()返回一个QPoint对象,而posF()返回一个更精确的QPointF对象。

Qt::DropActions possibleActions() const
返回所有可能的拖放操作。

Qt::DropAction proposedAction() const
返回建议的拖放操作,这是拖动源建议的默认操作。

void setDropAction(Qt::DropAction action)
设置拖放操作的类型。这允许在接收端改变建议的操作类型。

QObject *source() const
返回发起拖放操作的源对象。

  • QDragMoveEvent

QDragMoveEvent 类是 Qt 框架中用于处理拖拽过程中的移动事件的一个类。这个事件在拖拽操作进行中,当鼠标移动到接收拖拽的窗口或控件上时被触发。QDragMoveEvent 继承自 QDropEvent,提供了一系列的函数来管理拖拽过程中的行为和反馈。

构造函数
QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, QEvent::Type type = DragMove)

这个构造函数创建一个 QDragMoveEvent 对象。

pos:事件发生的位置。
actions:指定可能的拖拽操作(如复制、移动)。
data:拖拽的数据。
buttons:触发事件时按下的鼠标按钮。
modifiers:触发事件时激活的键盘修饰键。
type:事件的类型,默认是 DragMove。
析构函数
virtual ~QDragMoveEvent()

虚析构函数确保删除 QDragMoveEvent 对象时,派生类的析构函数也会被调用。

成员函数
void accept(const QRect &rectangle) 和 void accept()

通过调用 accept() 函数,可以接受拖拽操作。这意味着您允许放下发生。accept(const QRect &rectangle) 版本允许指定一个矩形区域,表示只有在这个区域内放下动作才被接受。

QRect answerRect() const

返回上一次调用 accept(const QRect &rectangle) 或 ignore(const QRect &rectangle) 时传递的矩形区域。如果没有提供矩形,则返回一个空的 QRect。

void ignore(const QRect &rectangle) 和 void ignore()

通过调用 ignore() 函数,可以忽略拖拽操作。这意味着当前控件不接受放下操作。与 accept() 类似,ignore(const QRect &rectangle) 允许指定一个矩形区域,表示在这个区域内的放下动作被忽略。

使用场景
QDragMoveEvent 主要用于拖拽操作过程中的动态反馈。例如,在文件浏览器中,当用户拖拽一个文件到文件夹上时,可以通过更改文件夹的外观来显示它可以接受放下操作。通过处理 QDragMoveEvent,可以在事件发生的位置显示一个高亮区域,或者显示一个指示可以放下的图标。

QMimeData

QMimeData 类是 Qt 框架中用于处理 MIME(多用途互联网邮件扩展)类型数据的一个类。它用于在应用程序内部以及应用程序之间传递数据,特别是在实现拖放和剪贴板操作时。QMimeData 可以存储多种类型的数据,包括文本、URLs、颜色、HTML、图片等,使得它成为在这些上下文中传递复杂数据的理想选择。

构造函数和析构函数
QMimeData(): 创建一个新的 QMimeData 对象。
virtual ~QMimeData(): 虚析构函数,确保派生类能够正确清理。
数据管理
void clear(): 清除对象中的所有数据。
void setData(const QString &mimeType, const QByteArray &data): 设置指定 MIME 类型的数据。
void removeFormat(const QString &mimeType): 移除指定 MIME 类型的数据。
QByteArray data(const QString &mimeType) const: 返回指定 MIME 类型的数据。
QStringList formats() const: 返回对象中存在的所有 MIME 类型。
数据检查
bool hasFormat(const QString &mimeType) const: 检查对象是否包含指定 MIME 类型的数据。
bool hasColor() const: 检查对象是否包含颜色数据。
bool hasHtml() const: 检查对象是否包含 HTML 数据。
bool hasImage() const: 检查对象是否包含图片数据。
bool hasText() const: 检查对象是否包含文本数据。
bool hasUrls() const: 检查对象是否包含 URL 列表。
数据设置
void setColorData(const QVariant &color): 设置颜色数据。
void setHtml(const QString &html): 设置 HTML 数据。
void setImageData(const QVariant &image): 设置图片数据。
void setText(const QString &text): 设置文本数据。
void setUrls(const QList &urls): 设置 URL 列表。
数据获取
QVariant colorData() const: 获取颜色数据。
QString html() const: 获取 HTML 数据。
QVariant imageData() const: 获取图片数据。
QString text() const: 获取文本数据。
QList urls() const: 获取 URL 列表。
使用场景
QMimeData 的一个典型使用场景是实现拖放操作。当用户从一个组件拖动数据到另一个组件时,源组件可以通过创建一个 QMimeData 对象并使用 setData 方法来填充数据,然后将其传递给拖放操作。目标组件接收到拖放事件后,可以通过调用 event->mimeData() 来访问这些数据,并根据需要处理它们。

此外,QMimeData 也用于剪贴板操作。应用程序可以通过 QClipboard 类的 setMimeData 方法来设置剪贴板的内容,并通过 mimeData 方法来检索剪贴板的内容。

通过这种方式,QMimeData 提供了一种灵活且强大的方法来在 Qt 应用程序中处理和传递多种类型的数据。

事件类型

  • QEvent::None (0): 未定义事件。
  • QEvent::Timer (1): 计时器事件。
  • QEvent::MouseButtonPress (2): 鼠标按键按下。
  • QEvent::MouseButtonRelease (3): 鼠标按键释放。
  • QEvent::MouseButtonDblClick (4): 鼠标双击。
  • QEvent::MouseMove (5): 鼠标移动。
  • QEvent::KeyPress (6): 键盘按键按下。
  • QEvent::KeyRelease (7): 键盘按键释放。
  • QEvent::FocusIn (8): 获得焦点。
  • QEvent::FocusOut (9): 失去焦点。
  • QEvent::Enter (10): 鼠标进入窗口。
  • QEvent::Leave (11): 鼠标离开窗口。
  • QEvent::Paint (12): 重绘事件。
  • QEvent::Move (13): 窗口或控件移动。
  • QEvent::Resize (14): 窗口或控件大小改变。
  • QEvent::Create (15): 控件创建。
  • QEvent::Destroy (16): 控件销毁。
  • QEvent::Show (17): 控件显示。
  • QEvent::Hide (18): 控件隐藏。
  • QEvent::Close (19): 请求关闭窗口。
  • QEvent::Quit (20): 应用程序退出。
  • QEvent::ParentChange (21): 父对象改变。。
  • QEvent::ThreadChange (22): 线程改变。
  • QEvent::FocusAboutToChange(23):这个事件在一个窗口或控件即将改变焦点时发生
  • QEvent::WindowActivate (24): 窗口激活。
  • QEvent::WindowDeactivate (25): 窗口停用。
  • QEvent::ShowToParent (26): 控件对父控件显示。
  • QEvent::HideToParent (27): 控件对父控件隐藏。
  • QEvent::Wheel (31): 鼠标滚轮滚动。
  • QEvent::WindowTitleChange (33): 窗口标题改变。
  • QEvent::WindowIconChange (34): 窗口图标改变。
  • QEvent::ApplicationWindowIconChange (35): 应用程序窗口图标改变。
  • QEvent::ApplicationFontChange (36): 应用程序字体改变。
  • QEvent::ApplicationLayoutDirectionChange (37): 应用程序布局方向改变。
  • QEvent::ApplicationPaletteChange (38): 应用程序调色板改变。
  • QEvent::PaletteChange (39): 调色板改变。
  • QEvent::Clipboard (40): 剪贴板内容改变。
  • QEvent::Speech (42): 语音事件。
  • QEvent::MetaCall (43): 元调用。
  • QEvent::SockAct (50): 套接字激活。
  • QEvent::WinEventAct (132): Windows消息事件。
  • QEvent::DeferredDelete (52): 延迟删除事件。
  • QEvent::DragEnter (60): 拖动进入事件。
  • QEvent::DragMove (61): 拖动移动事件。
  • QEvent::DragLeave (62): 拖动离开事件。
  • QEvent::Drop (63): 拖放事件。
    QEvent::ChildAdded (68): 子对象添加。
    QEvent::ChildPolished (69): 子对象被打磨。
    QEvent::ChildRemoved (71): 子对象被移除。
    QEvent::ActionAdded: 当一个动作(QAction)被添加到控件时发送。
    QEvent::ActionRemoved: 当一个动作被从控件中移除时发送。
    QEvent::ActionChanged: 当一个动作的状态发生改变时发送,例如,它被禁用或启用。

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

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

相关文章

内网穿透与搭建私人服务器

前言 内网穿透是一种技术&#xff0c;允许用户从外部网络访问内部私有网络中的服务器或设备。这对于想要从任何地方访问家中或办公室内部网络资源的用户非常有用。以下是为初学者准备的关于如何实现内网穿透以及搭建自己的私人服务器的详细指南。 在这个数字化时代&#xff0c;…

弱网演练的小插曲记录

文章目录 1. 写在最前面1.1 关于弱网1.2 关于插曲 2. 模拟弱网的工具2.1 tc2.1.1 原理2.1.2 使用 2.2 blade2.2.1 原理2.2.2 使用 3. tc vs iptable4. 碎碎念5.参考资料 1. 写在最前面 节前在做历史故障演练的 1:1 复现&#xff0c;以验收当前新增的监控告警可以覆盖历史的故障…

python之ftp小工具

文章目录 python之FTP小工具 python之FTP小工具 源码 #!/usr/bin/python3 import os import sys from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler from pyftpdlib.servers import FTPServer import logg…

CP03大语言模型ChatGLM3-6B特性代码解读(1)

CP03大语言模型ChatGLM3-6B特性代码解读&#xff08;1&#xff09; 文章目录 CP03大语言模型ChatGLM3-6B特性代码解读&#xff08;1&#xff09;总述提示词及UI交互基础conversation.py提示词相关角色Role的处理对话内容字符里的提示词处理 对话基础client.py模型路径等参数设置…

HTTPS(超文本传输安全协议)被恶意请求该如何处理。

HTTPS&#xff08;超文本传输安全协议&#xff09;端口攻击通常是指SSL握手中的一些攻击方式&#xff0c;比如SSL握手协商过程中的暴力破解、中间人攻击和SSL剥离攻击等。 攻击原理 攻击者控制受害者发送大量请求&#xff0c;利用压缩算法的机制猜测请求中的关键信息&#xf…

防火墙——计算机网络

前述基于密码的安全机制不能有效解决以下安全问题&#xff1a; 用户入侵&#xff1a; 利用系统漏洞进行未授权登录&#xff1b; 授权用户非法获取更高级别权限等。 软件入侵&#xff1a; 通过网络传播病毒、蠕虫和特洛伊木马。 拒绝服务攻击等。 解决方法&#xff1a; 防火墙&a…

LabVIEW压电驱动迟滞补偿控制

LabVIEW压电驱动迟滞补偿控制 随着精密控制技术的迅速发展&#xff0c;压电陶瓷驱动器因其高精度和快速响应特性&#xff0c;在微纳精密定位系统中得到了广泛应用。然而&#xff0c;压电材料固有的迟滞非线性特性严重影响了其定位精度和重复性。开发了一种基于LabVIEWFPGA的压…

Hive数据仓库行转列

查了很多资料发现网上很多文章都是转发和抄袭&#xff0c;有些问题。这里分享一个自己项目中使用的行转列例子&#xff0c;供大家参考。代码如下&#xff1a; SELECTmy_id,nm_cd_map[A] AS my_cd_a,nm_cd_map[B] AS my_cd_b,nm_cd_map[C] AS my_cd_c,nm_num_map[A] AS my_num_…

MySQL安装教程(详细版)

今天分享的是Win10系统下MySQL的安装教程&#xff0c;打开MySQL官网&#xff0c;按步骤走呀~ 宝们安装MySQL后&#xff0c;需要简单回顾一下关系型数据库的介绍与历史&#xff08;History of DataBase&#xff09; 和 常见关系型数据库产品介绍 呀&#xff0c;后面就会进入正式…

C语言OJ题——1091装箱问题

装箱问题 1.题目2.解题思路3.代码实现4.细节补充说明 1.题目 题目描述 一个工厂生产的产品形状都是长方体&#xff0c;高度都是h&#xff0c;主要有1 * 1&#xff0c;2 * 2&#xff0c;3 * 3&#xff0c;4 * 4&#xff0c;5 * 5&#xff0c;6 * 6等6种。这些产品在邮寄时被包装…

Java使用Redis实现分页功能

分页功能实现应该是比较常见的&#xff0c;对于redis来说&#xff0c;近期刷题就发现了lrange、zrange这些指令&#xff0c;这个指令怎么使用呢&#xff1f; 我们接下来就来讲解下。 目录 指令简介lrangezrange Java实现Redis实现分页功能 指令简介 lrange lrange 是 Redis 中…

Cesium for Unreal 从源码编译到应用——插件编译

一、安装环境 Unreal Engine 5.3 CMake 3.17.5 Microsoft Visual Studio 2019 二、源码准备 下载cesium-unreal-samples工程。 git clone https://github.com/CesiumGS/cesium-unreal-samples.git 然后在工程目录创建Plugins文件夹&#xff0c;并下载cesium-unreal工程。 …

keepalived双主模式测试

文章目录 环境准备部署安装keepavlived配置启动测试模拟Nginx宕机重新启动问题分析 环境准备 测试一下keepalived的双主模式&#xff0c;所谓双主模式就是两个keepavlied节点各持有一个/组虚IP&#xff0c;默认情况下&#xff0c;二者互为主备&#xff0c;同时对外提供服务&am…

ubuntu系统个人部署LangChain过程

官方教程&#xff0c;github和huggingface都需要梯子&#xff1a; 开发环境部署 chatchat-space/Langchain-Chatchat Wiki (github.com) 具体参考官方的&#xff0c;这里额外记录一下官方文档里面没有写的。 安装前&#xff0c;确保openSSL版本是新的 查看当前环境下是否有…

从宏观到微观——泽攸科技ZEM系列台式扫描电子显微镜在岩石分析中的应用

岩石作为地球地壳的主要构成物质之一&#xff0c;其微观结构对于了解地质过程、资源勘探以及工程建设具有重要意义。按照岩石的成因&#xff0c;可以把它们分为三类&#xff1a;岩浆岩、沉积岩和变质岩。在地球表面&#xff0c;沉积岩占据75%的份额&#xff0c;而在地壳深度&am…

简单计算器的实现

思路&#xff1a; 1.记录输入的中缀表达式(运算符在中间&#xff0c;我们正常写的式子) 2.将中缀表达式——>后缀表达式 由左到右遍历中缀表达式&#xff0c;若是数字&#xff0c;用数组或队列记录(记录后缀表达式)&#xff1b;若是符号&#xff0c;与操作符栈中的栈顶元素…

SVN服务备份

hotcopy备份 window批处理 保存以下内容到svn_buckup.bat&#xff0c;确保内容的路径正确&#xff0c;最后双击bat文件进行备份即可 echo offrem SVN安装路径 set svn"C:\Program Files\VisualSVN Server\bin"rem 仓库根目录 set homeE:\Repositories\WorkSpacere…

vue2的ElementUI的form表单报错“Error: [ElementForm]unpected width”修复

1. 问题 ElementUI的form表单&#xff0c;当动态切换显示表单时报错 Error: [ElementForm]unpected width。 翻译过来就是form表单的label宽度width出了问题。 2. 分析 参数说明类型可选值默认值label-width表单域标签的宽度&#xff0c;例如 ‘50px’。作为 Form 直接子元…

【Simulink系列】——动态系统仿真 之 连续系统线性连续系统

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 一、连续系统定义 连续系统输出在时间上连续变化&#xff0c;而非间隔采样取值&#xff0c;满足以下条件&#xff1a; ①输出连续变化&#xff0c;变化的间隔…

OpenAI 的 Sora AI 视频生成器太疯狂了

毫不夸张地说&#xff0c;当我第一次看到 Sora 生成的前几个视频时&#xff0c;我的下巴都惊掉了。 Sora是什么&#xff1f; Sora 是一种人工智能模型&#xff0c;可以根据简单的文本提示生成视频。它能够生成一分钟的高保真视频。 Sora 是一种扩散模型&#xff0c;一种先进的…