Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)

news2024/11/24 2:40:30

目录

1 Input Widgets简介

2 如何使用Input Widgets部件

2.1 Dial 组件-模拟车速表

2.2 QScrollBar组件-创建水平和垂直滚动条

2.3 QSlider组件-创建水平和垂直滑动条 

2.4 QKeySequenceEdit组件-捕获键盘快捷键


Input Widgets部件部件较多,将分为三篇文章介绍

文章1(Qt教程 — 3.2 深入了解Qt 控件:Input Widgets部件(1)-CSDN博客ComboBox (组合框)、FontComboBox (字体组合框)、LineEdit (单行编辑框)、TextEdit (文本编辑框)、PlainTextEdit (纯文本编辑框)

文章2(Qt教程 — 3.3 深入了解Qt 控件:Input Widgets部件(2)-CSDN博客):SpinBox (数字旋转框)、DoubleSpinBox (双精度数字旋转框)、TimeEdit (时间编辑框):、DateEdit (日期编辑框)、DateTimeEdit (日期时间编辑框): 

文章3(本文):Dial (数字拨盘框)、HorizontalScrollBar (水平滚动条)、VerticalScrollBar (垂直滚动条): 、HorizontalSlider (水平滑动条)、VerticalSlider (垂直滑动条)、KeySequenceEdit (按键序列编辑框)

1 Input Widgets简介

Qt的Input Widgets部件是一系列专门用于数据输入的界面元素。它们允许用户通过图形界面与应用程序进行交互,并提供不同的数据输入方式。以下是一些常见的Input Widgets部件:

  1. Dial (数字拨盘框): 提供了一个旋转拨盘控件,用于选择数值,常用于模拟选择器或调节器。

  2. HorizontalScrollBar (水平滚动条): QScrollBar 继承 QAbstractSlider,下同。一种水平滚动条,允许用户通过滑动来水平导航。

  3. VerticalScrollBar (垂直滚动条): 一种垂直滚动条,允许用户通过滑动来垂直导航。

  4. HorizontalSlider (水平滑动条): 水平方向的滑动条,允许用户通过拖动选择一个数值。

  5. VerticalSlider (垂直滑动条): 垂直方向的滑动条,允许用户通过拖动选择一个数值。

  6. KeySequenceEdit (按键序列编辑框): QKeySequenceEdit 继承 QWidget。允许用户输入和编辑键盘快捷键序列。

2 如何使用Input Widgets部件

2.1 Dial 组件-模拟车速表

QDial是Qt框架中的一个组件,用于提供一个圆形的拨盘控件,允许用户通过旋转拨盘来选择一个数值。它是 QAbstractSlider的一个子类,因此继承了滑动条(滑块)的许多特性,包括设置最小值、最大值、当前值以及步长等。QDial通常用于提供一个直观的方式来调整音量、选择颜色的饱和度、亮度等参数。

实现QDial的主要特征涉及设置其各种属性以及连接信号和槽,以便于与用户的交互。以下是如何实现QDial的一些关键特征:

  • 数值选择:使用setRange(int min, int max)方法设置最小和最大值。使用setValue(int value)设置初始值。
  • 自定义外观:可以通过样式表setStyleSheet来自定义QDial的外观,例如,改变拨盘的背景色、指针的颜色等。
  • 范围和间隔:setRange(int min, int max)用于设置拨盘的最小和最大数值范围。setSingleStep(int step)设置用户每次旋转时的最小变化值。 
  •  信号QDial继承自QAbstractSlider,因此提供了valueChanged(int)sliderPressed()sliderMoved(int)sliderReleased()等信号。
  •  可选的刻度显示: 使用setNotchesVisible(bool visible)来设置是否显示刻度。使用setNotchTarget(double target)可以设置刻度的间隔,这个值表示刻度间隔的理想像素宽度,实际间隔会尽量接近这个值。

使用一个 QDial,以一个 QLabel,模拟车速表。当程序初始化界面后,拖动滑块的位置, label 则会显示 dial 的值

(1)首先按照文章新建项目(Qt教程 — 1.3 如何创建Qt项目-CSDN博客)。

(2)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入QComboBox文件 —> 2)声明一个 QComboBox 对象和对应槽函数。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
// 引入 QComboBox
#include <QComboBox>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    // 声明一个 QComboBox 对象
    QComboBox *comboBox;

private slots:
    // 声明 QComboBox 对象的槽函数
    void comboBoxIndexChanged(int);

};
#endif // MAINWINDOW_H

(3)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化QDial和QLabel对象,设置QDial和QLabel显示位置与大小。设置dial页长、刻度等和label文字—>3)信号槽连接—>4)写出槽函数,模拟车速表。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置主窗体的位置与大小
    this->setGeometry(0, 0, 800, 480);

    /****** 1 ******/
    // 实例化对象和设置显示位置与大小
    dial = new QDial(this);
    dial->setGeometry(100, 50, 150, 150);
    // 设置页长(两个最大刻度的间距)
    dial->setPageStep(10);
    // 设置刻度可见
    dial->setNotchesVisible(true);
    // 设置两个凹槽之间的目标像素数
    dial->setNotchTarget(1.00);
    // 设置 dial 值的范围
    dial->setRange(0,100);
    // 开启后可指向圆的任何角度
    //dial->setWrapping(true);
    // 实例化对象和设置显示位置与大小
    label = new QLabel(this);
    label->setGeometry(155, 100, 200, 50);
    // 初始化为 0km/h
    label->setText("0km/h");
    // 信号槽连接
    connect(dial, SIGNAL(valueChanged(int)),this, SLOT(dialValueChanged(int)));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::dialValueChanged(int val)
{
    // QString::number()转换成字符串
    label->setText(QString::number(val) + "km/h");
}

(4)程序编译运行的结果如下,当程序初始化时, QDial 控件的显示如下。当用鼠标拖动
滑块或者按键盘的上下左右方向键时, label 则会显示当前“车速”。

2.2 QScrollBar组件-创建水平和垂直滚动条

QScrollBar是Qt框架中的一个控件,它提供了标准的滚动条界面,允许用户通过拖动滚动块或点击箭头按钮来滚动内容区域。QScrollBarQAbstractSlider的子类,因此它继承了滑块控件的一般特性,如设置最小值、最大值、当前值以及滑块的步进值等。下是其主要功能设置:

  • 方向性:QScrollBar可以是水平的也可以是垂直的,这由构造函数中的Qt::Orientation参数决定。
  • 数值范围和步进:可以设置滚动条的最小值、最大值(通过setMinimumsetMaximum方法),当前值(通过setValue方法)以及页步进值和单步进值(分别通过setPageStepsetSingleStep方法设置)。页步进通常用于表示用户点击滚动条背景时应该滚动的距离,而单步进值则用于箭头按钮或滚动条的键盘导航。
  • 自定义外观:通过Qt的样式表(Style Sheets),开发者可以自定义滚动条的外观,包括滚动条的轨道、滑块、和箭头按钮的样式。
  • 信号QScrollBar发出valueChanged(int)信号来通知滚动条的当前值发生了变化。此外,它还可能发出rangeChanged(int min, int max)信号,以通知滚动条的数值范围发生变化。

创建水平和垂直滚动条,使用 QScrollBar 类实例化两个控件,一个是水平滚动条,另一个是垂直滚动条,中间用一个标签文本来显示。

(1)为了简便,直接在上节的项目中添加代码。以下代码为本节可单独运行的代码,实验结果为和前节结合的代码,后同。

(2)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QScrollBar>文件 —> 2)声明QScrollBar、QLabel对象。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QScrollBar>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    // 声明水平滚动条对象
    QScrollBar *horizontalScrollBar;
    // 声明垂直滚动条对象
    QScrollBar *verticalScrollBar;
    // 声明标签文本
    QLabel *label_1;
  
};
#endif // MAINWINDOW_H

(3)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化QhorizontalScrollBar、QverticalScrollBar、QLabel对象和显示位置与大小。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置主窗体的位置与大小
    this->setGeometry(0, 0, 800, 480);

    /****** 2 ******/
    // 实例化水平滚动条及设置位置大小
    horizontalScrollBar = new QScrollBar(Qt::Horizontal, this);
    horizontalScrollBar->setGeometry(0, 450, 800, 30);
    // 实例化垂直滚动条及设置位置大小
    verticalScrollBar = new QScrollBar(Qt::Vertical, this);
    verticalScrollBar->setGeometry(770, 0, 30, 480);
    // 实例化,标签文本
    label = new QLabel(this);
    // 设置文本
    label->setText("测试滚动条");
    //设置位置大小
    label->setGeometry(600, 400, 100, 20);

}

MainWindow::~MainWindow()
{
    delete ui;
}

(4) 程序编译运行的结果。如下当程序初始化时,滚动条控件的显示如下。

2.3 QSlider组件-创建水平和垂直滑动条 

QSlider是Qt框架中的一个控件,它提供了一个滑动条,允许用户通过拖动滑块来选择一个数值范围内的值。这个控件非常适合于需要从一定范围内选择单个值的场景,例如调节音量、亮度或应用程序中的任何参数调整。下是其主要功能设置:

  • 方向性QSlider可以是水平的也可以是垂直的。这通过构造函数中的Qt::Orientation参数来设置,可以是Qt::HorizontalQt::Vertical
  • 数值范围:可以通过setMinimum(int)setMaximum(int)方法设置滑动条的最小值和最大值。这定义了用户可以选择的值的范围。
  • 当前值:当前值表示滑块的位置对应的数值,可以通过setValue(int)方法设置。value()方法用于获取当前值。
  • 刻度线QSlider支持刻度线的显示,刻度线可以放置在滑动条的上方、下方、左侧或右侧,或者同时在两边。这通过setTickPosition(QSlider::TickPosition)方法设置。可用的刻度位置包括NoTicks(无刻度)、TicksAboveTicksBelowTicksBothSidesTicksLeftTicksRight
  • 步进值setSingleStep(int)方法用于设置滑块移动的单步大小。还有setPageStep(int),当用户点击滑动条的空白区域时,滑块移动的大小。

创建水平和垂直滑动条,创建两个 QSlider 对象,一个是水平滑动条,另一个是垂直滑动条;用一个 Label 来显示当前水平或垂直滑动条当前的值。设置水平滑动条与水平滑动条相互关联,通过滑动其中一个滑动条的值相应的也会改变另一个滑动条的值。

(1)为了简便,直接在上节的项目中添加代码。

(2)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QSlider>、<QLabel>文件 —> 2)声明水平滚动条和垂直滚动条QSlider对象、QLabel对象。 —> 3)声明QSlider槽函数。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QLabel>
#include <QSlider>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    // 声明对象
    QSlider *horizontalSlider;
    QSlider *verticalSlider;
    QLabel *label_2;

private slots:
    // QSlider槽函数
    void horizontalSliderValueChanged(int);
    void verticalSliderValueChanged(int);
};
#endif // MAINWINDOW_H

(3)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化水平滚动条和垂直滚动条QSlider对象、QLabel对象和显示位置与大小。—>3)信号槽连接。—>4)写出槽函数,显示滑动条值。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置主窗体的位置与大小
    this->setGeometry(0, 0, 800, 480);

    /****** 3 ******/
    // 实例化水平滑动条对象
    horizontalSlider = new QSlider(Qt::Horizontal, this);
    // 设置显示的位置与大小
    horizontalSlider->setGeometry(300, 150, 150, 20);
    // 设置值范围
    horizontalSlider->setRange(0, 100);
    // 实例化垂直滑动条对象
    verticalSlider = new QSlider(Qt::Vertical, this);
    // 设置显示的位置与大小
    verticalSlider->setGeometry(450, 10, 20, 150);
    // 设置值范围
    verticalSlider->setRange(0, 100);
    // 实例化标签文本
    label = new QLabel("滑动条值: 0", this);
    label->setGeometry(350, 100, 100, 20);
    // 信号槽连接
    connect(horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(horizontalSliderValueChanged(int)));
    connect(verticalSlider, SIGNAL(valueChanged(int)), this, SLOT(verticalSliderValueChanged(int)));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::verticalSliderValueChanged(int val)
{
    // 当垂直滑动条的值改变时,改变水平滑动条的值
    horizontalSlider->setSliderPosition(val);
}

 (4)程序编译运行的结果如下。当程序初始化时,滑动条控件的显示如下。 Label 显示的初始值为 0,当拖动任意一个滑动条来改变当前的值,另一个滑动条的值也在变。

2.4 QKeySequenceEdit组件-捕获键盘快捷键

Qt中的QKeySequenceEdit是一个用于捕获键盘快捷键序列的小部件。这个组件允许用户输入一个快捷键序列,然后可以将这个序列用于应用程序中的快捷操作。以下是其主要功能设置:

  • 设置和获取键序列:可以通过setKeySequence(const QKeySequence &keySequence)方法设置键序列,通过keySequence()方法获取当前的键序列。

  • 清除键序列clear()方法可以清除当前输入的键序列。

  • 键序列改变信号:当键序列发生变化时,QKeySequenceEdit会发出keySequenceChanged(const QKeySequence &keySequence)信号。你可以连接这个信号到一个槽函数,以便在键序列改变时执行某些操作。

  • 显示已输入的键序列QKeySequenceEdit会在其文本框中显示已输入的键序列。

  • 键序列验证QKeySequenceEdit会自动验证输入的键序列。如果用户输入的键序列无效,它将不会被接受。

  • 自动处理特殊键QKeySequenceEdit会自动处理一些特殊的键,例如Shift、Control、Alt和Meta键。

  • 定制外观:你可以使用Qt样式表(QSS)来定制QKeySequenceEdit的外观,例如改变背景颜色、边框等。

自定义快捷键通常 KeySequenceEdit 控件记录快捷键后与 Qt 键盘事件搭配来使用,由于教程后面才说到事件,所以先不与 Qt 键盘事件搭配使用。下面使用一个 QKeySequenceEdit 控件,然后判断输入的组合键是否为 Ctrl + Q,若是,则关闭窗口,退出程序,如果不是,则继续更新记录组合键。

(1)为了简便,直接在上节的项目中添加代码。

(2)在头文件“mainwindow.h”修改代码,具体代码如下。1)导入<QKeySequenceEdit>文件 —> 2)声明QKeySequenceEdit 对象。 —> 3)声明QKeySequenceEdit槽函数。完整代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QLabel>
#include <QKeySequenceEdit>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    //声明 QKeySequenceEdit 对象
    QKeySequenceEdit *keySequenceEdit;

private slots:
    // 声明QKeySequenceEdit槽函数
    void KSEKeySequenceChanged(const QKeySequence &);
};
#endif // MAINWINDOW_H

(3)在文件“mainwindow.cpp”修改代码,具体代码如下。 1)设置主窗体的显示位置与大小。—> 2)实例化QKeySequenceEdit对象和显示位置与大小。—>3)信号槽连接。—>4)写出槽函数,捕获键盘输入值。添加完整代码如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置主窗体的位置与大小
    this->setGeometry(0, 0, 800, 480);

    /****** 4 ******/
    // 实例化
    keySequenceEdit = new QKeySequenceEdit(this);
    // 设置位置与大小
    keySequenceEdit->setGeometry(500, 140, 200, 20);
    // 信号槽连接
    connect(keySequenceEdit,SIGNAL(keySequenceChanged(const QKeySequence &)),this,SLOT(KSEKeySequenceChanged(const QKeySequence &)));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::KSEKeySequenceChanged(const QKeySequence &keySequence)
{
    // 判断输入的组合键是否为 Ctrl + Q,如果是则退出程序
    if(keySequence == QKeySequence(tr("Ctrl+Q"))) {
        // 结束程序
        this->close();
    }else {
        // 打印出按下的组合键
        qDebug()<<keySequence.toString()<<endl;
    }
}

 (4)序编译运行的结果如下。按下键盘里的任一键或者组合键 ,一秒后 ,KeySequenceEdit 将记录了这个/这组组合键,并打印在输出信息里。直到程序按下 Ctrl + Q 组合键后,程序窗口才关闭,结束。

 

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

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

相关文章

第二十四天-数据可视化Matplotlib

目录 1.介绍 2.使用 1. 安装&#xff1a; 2.创建简单图表 3.图表类型 1.一共分为7类 2.变化 1.折线图 3.分布 ​编辑 1.直方图 2.箱型图 4.关联 1. 散点图&#xff1a; 2.热力图&#xff1a; 5.组成 1.饼图 2.条形图 6.分组 1.簇型散点图 2.分组条形图 3.分…

JMeter 面试题及答案整理,最新面试题

JMeter中如何进行性能测试的规划和设计&#xff1f; 进行JMeter性能测试的规划和设计主要遵循以下几个步骤&#xff1a; 1、确定测试目标&#xff1a; 明确性能测试的目的和目标&#xff0c;比如确定要测试的系统性能指标&#xff08;如响应时间、吞吐量、并发用户数等&#…

从大模型到Agentscope——分布式Multi-Agent应用开发与部署

目录 Why需要分布式 案例 多进程的分布书版本能快速提升速度 分布式的挑战 AgentScope分布式解决 方案 实现RPC Agent 基于Actor模式的并行调度缺点&#xff1a;需要Agent内部决定消息传递目标 被调用的Agent立即返回占位符placeholder to_dist: 开启自动将单机进行扩展…

图解缓存淘汰算法 LRU、LFU | 最近最少使用、最不经常使用算法 | go语言实现

写在前面 无论是什么系统&#xff0c;在研发的过程中不可避免的会使用到缓存&#xff0c;而缓存一般来说我们不会永久存储&#xff0c;但是缓存的内容是有限的&#xff0c;那么我们如何在有限的内存空间中&#xff0c;尽可能的保留有效的缓存信息呢&#xff1f; 那么我们就可以…

代码算法训练营day8 | 344.反转字符串、 541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串

day8: 344.反转字符串541. 反转字符串II卡码网&#xff1a;54.替换数字151.翻转字符串里的单词卡码网&#xff1a;55.右旋转字符串 344.反转字符串 题目链接 状态&#xff1a;ok 文档&#xff1a;programmercarl.com 思路&#xff1a; 对于这道题目可以选择直接用C里的一个库函…

<Linux> 线程的同步与互斥

目录 前言&#xff1a; 一、资源共享问题 &#xff08;一&#xff09;多线程并发访问 &#xff08;二&#xff09;临界资源与临界区 &#xff08;三&#xff09;“锁” 是什么 二、多线程抢票场景 &#xff08;一&#xff09;并发抢票 &#xff08;二&#xff09;并发访…

基于Matlab的车牌识别算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

Oracle 临时表空间管理(Temporary Tablespace)

Oracle临时表空间&#xff08;Temporary Tablespace&#xff09;主要用来存储数据库运行中产生的临时对象&#xff0c;例如SQL排序结果集&#xff0c;临时表等&#xff0c;这些对象的生存周期只有会话。本文总结了Oralce中涉及临时表空间的管理和优化操作。 目录 一、临时表空…

Stargo 管理部署 Starrocks 集群

配置主机间 ssh 互信 ssh-copy-id hadoop02 ssh-copy-id hadoop03配置系统参数 ############################ Swap检查 ############################ echo 0 | sudo tee /proc/sys/vm/swappiness########################### 内核参数检查 ########################## echo…

全国农产品价格分析预测可视化系统设计与实现

全国农产品价格分析预测可视化系统设计与实现 【摘要】在当今信息化社会&#xff0c;数据的可视化已成为决策和分析的重要工具。尤其是在农业领域&#xff0c;了解和预测农产品价格趋势对于农民、政府和相关企业都至关重要。为了满足这一需求&#xff0c;设计并实现了全国农产…

JS引用类型

在JavaScript中&#xff0c;除了基本类型&#xff08;如字符串、数字、布尔值、null和undefined&#xff09;之外&#xff0c;还有引用类型。引用类型包括对象、数组和函数。它们在内存中的存储方式与基本类型不同&#xff0c;因为它们在内存中存储的是对实际数据的引用&#x…

LeetCode 7 / 100

哈希表、双指针 哈希表两数之和字母异位词分组最长连续序列 双指针移动零盛最多水的容器三数之和接雨水 LeetCode 1.两数之和 LeetCode 49. 字母异位词分组 LeetCode 128. 最长连续序列 LeetCode [283. 移动零](https://leetcode.cn/problems/move-zeroes/?envTypestudy-plan-…

计算机网络-概述

文章目录 1.2 因特网概述1.2.1 网络、互连网&#xff08;互联网&#xff09;和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义1.5 计算机网络的性能指标1.5.1 速率1…

DDR协议基础进阶(三)——(基本功能、初始化、MR寄存器)

DDR协议基础进阶&#xff08;三&#xff09;——&#xff08;基本功能、初始化、MR寄存器&#xff09; 一、DDR基本功能 DDR基本功能主要包括&#xff1a; 8-bit prefetch预取——8-bit&#xff0c;是指8位数据&#xff0c;即8倍芯片位宽的数据。由于DDR内部数据传输是32bit…

Spring Web MVC入门(2)

学习Spring MVC Postman介绍 在软件工程中, 我们需要具有前后端分离的思想, 以降低耦合性. 但是在测试后端代码时,我们还得写前端代码测试,这是个令人头疼的问题. 那么我们如何测试自己的后端程序呢, 这就用到了一个工具: Postman. 界面介绍: 传参的介绍 1.普通传参, 也就…

Android Studio 打包 Maker MV apk 详细步骤

一.使用RPG Make MV 部署项目&#xff0c;获取项目文件夹 这步基本都不会有问题&#xff1a; 二.安装Android Studio 安装过程参考教材就行了&#xff1a; https://blog.csdn.net/m0_62491877/article/details/126832118 但是有的版本面板没有Android的选项&#xff08;勾…

SpringAI——Java生态接入LLM

最近&#xff0c;Spring官网发布了SpringAI&#xff0c;可点此查看https://spring.io/blog/2024/03/12/spring-ai-0-8-1-released&#xff0c;对于SpringAI的介绍&#xff0c;可看官方文档&#xff1a;https://spring.io/projects/spring-ai#overview。 本文将使用SpringAI配合…

QML 布局管理器之GridLayout

一.QML GridLayout介绍 在QML中&#xff0c;GridLayout是一种用于布局元素的容器。它允许您以网格形式组织和排列元素。要使用rowspan、columnspan、layoutFillWidth和rowSpacing属性&#xff0c;您可以将一个元素跨越多行和多列&#xff0c;并填充整个宽度&#xff0c;同时设置…

Python Web开发记录 Day12:Django part6 用户登录

名人说&#xff1a;东边日出西边雨&#xff0c;道是无晴却有晴。——刘禹锡《竹枝词》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、登录界面2、用户名密码校验3、cookie与session配置①cookie与session②配置…

unity学习(60)——选择角色界面--MapHandler2-MapHandler.cs

1.新建一个脚本&#xff0c;里面有static变量loadingPlayerList using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Assets.Scripts.Model {internal class LoadData{public static List<Pl…