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

(二)QT——按钮小程序

目录

前言

按钮小程序

1、步骤

2、代码示例

3、多个按钮

①信号与槽的一对一

②多对一(多个信号连接到同一个槽)

③一对多(一个信号连接到多个槽)

结论


前言


按钮小程序

Qt 按钮程序通常包含 三个核心文件

  • mainwindow.h:主窗口类的声明(定义按钮和槽函数)。
  • mainwindow.cpp:主窗口类的实现(创建按钮并连接信号与槽)。
  • main.cpp:程序入口(运行主窗口)。

在 Qt 中,创建一个简单的按钮小程序(GUI 程序)通常涉及使用 Qt Widgets 库来创建窗口和按钮,并处理按钮的点击事件。以下是一个基础的 Qt 小程序示例,展示如何创建一个带按钮的窗口:

1、步骤

  1. 创建项目:使用 Qt Creator 创建一个 Qt Widgets Application 项目。
  2. 设计界面:在 MainWindow 窗口中添加一个按钮。
  3. 处理事件:连接按钮的点击信号到槽函数,显示消息或者执行其他操作。

2、代码示例

1. mainwindow.ui(界面设计)

  • 打开 Qt Creator 中的 mainwindow.ui 文件,拖拽一个按钮(QPushButton)到窗口中。
2. mainwindow.cpp(功能实现)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置按钮文本ui->pushButton->setText("点击我");// 连接按钮点击信号到槽函数connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::onButtonClicked);
}MainWindow::~MainWindow()
{delete ui;
}// 按钮点击槽函数
void MainWindow::onButtonClicked()
{// 弹出一个消息框QMessageBox::information(this, "提示", "苦瓜汤补钙!");
}
3. mainwindow.ui(界面设计)

在 Qt Creator 中使用拖放工具添加一个按钮,并确保按钮的 objectNamepushButton,然后连接信号和槽。

4. mainwindow.h(头文件)
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onButtonClicked(); // 按钮点击的槽函数private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

解释:

  • UI 文件:通过 Qt Creator 的设计器,我们可以直观地设计界面。按钮被命名为 pushButton,并通过信号与槽机制连接点击事件。
  • 槽函数:当按钮被点击时,onButtonClicked 槽函数会被触发,弹出一个消息框 (QMessageBox::information) 来显示提示信息。

构建与运行:

  1. 在 Qt Creator 中点击 编译 (Ctrl + B),然后点击 运行 (Ctrl + R)。
  2. 当窗口显示时,点击按钮会弹出消息框。

这就是一个简单的 Qt 按钮小程序。你可以根据需要修改按钮的行为和界面元素,Qt 提供了丰富的控件和功能,可以帮助你开发各种应用。


3、多个按钮

如果你的 Qt 小程序包含 多个按钮,你可以使用 多个槽函数 或者 使用 QObject::sender() 识别信号发送者 来动态处理多个按钮的点击事件。

注意:Qt的信号与槽机制,可以实现信号与槽的一对一、多对一和一对多。

①信号与槽的一对一

方法 1:为每个按钮创建独立的槽函数

如果每个按钮有不同的功能,你可以分别为它们创建槽函数。

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onButton1Clicked();void onButton2Clicked();void onButton3Clicked();private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 设置按钮文本ui->pushButton->setText("按钮 1");ui->pushButton_2->setText("按钮 2");ui->pushButton_3->setText("按钮 3");// 连接信号与槽connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::onButton1Clicked);connect(ui->pushButton_2, &QPushButton::clicked, this, &MainWindow::onButton2Clicked);connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::onButton3Clicked);
}MainWindow::~MainWindow()
{delete ui;
}// 定义槽函数
void MainWindow::onButton1Clicked()
{QMessageBox::information(this, "提示", "按钮 1 被点击!");
}void MainWindow::onButton2Clicked()
{QMessageBox::information(this, "提示", "按钮 2 被点击!");
}void MainWindow::onButton3Clicked()
{QMessageBox::information(this, "提示", "按钮 3 被点击!");
}

优点: 代码清晰,每个按钮的逻辑独立。
缺点: 如果按钮很多,代码会变得冗余。

方法 2:手动创建按钮

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onButton1Clicked();  // 按钮1的槽函数void onButton2Clicked();  // 按钮2的槽函数private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建按钮 1QPushButton *pushButton1 = new QPushButton("按钮 1", this);pushButton1->setGeometry(50, 50, 100, 30);// 创建按钮 2QPushButton *pushButton2 = new QPushButton("按钮 2", this);pushButton2->setGeometry(50, 100, 100, 30);// 连接信号与槽connect(pushButton1, &QPushButton::clicked, this, &MainWindow::onButton1Clicked);connect(pushButton2, &QPushButton::clicked, this, &MainWindow::onButton2Clicked);
}MainWindow::~MainWindow()
{delete ui;
}// 按钮 1 处理函数
void MainWindow::onButton1Clicked()
{qDebug() << "按钮 1 被点击";
}// 按钮 2 处理函数
void MainWindow::onButton2Clicked()
{qDebug() << "按钮 2 被点击";
}
运行步骤
  1. 在 Qt Creator 中创建 Qt Widgets 应用程序
  2. 替换 mainwindow.hmainwindow.cppmain.cpp
  3. 点击 Ctrl + R 运行
  4. 点击按钮,观察 Application Output 窗口:

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMessageBox>  // 添加 QMessageBox 头文件
#include <QPushButton>  // 添加 QPushButton 头文件QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onButton1Clicked();  // 按钮 1 槽函数void onButton2Clicked();  // 按钮 2 槽函数void onButton3Clicked();  // 按钮 3 槽函数private:Ui::MainWindow *ui;QPushButton *pushButton1;QPushButton *pushButton2;QPushButton *pushButton3;
};
#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建按钮 1pushButton1 = new QPushButton("按钮 1", this);pushButton1->setGeometry(50, 50, 150, 40);// 创建按钮 2pushButton2 = new QPushButton("按钮 2", this);pushButton2->setGeometry(50, 120, 150, 40);// 创建按钮 3pushButton3 = new QPushButton("按钮 3", this);pushButton3->setGeometry(50, 190, 150, 40);// 连接按钮信号到槽函数connect(pushButton1, &QPushButton::clicked, this, &MainWindow::onButton1Clicked);connect(pushButton2, &QPushButton::clicked, this, &MainWindow::onButton2Clicked);connect(pushButton3, &QPushButton::clicked, this, &MainWindow::onButton3Clicked);
}MainWindow::~MainWindow()
{delete ui;
}// 按钮 1 槽函数
void MainWindow::onButton1Clicked()
{QMessageBox::information(this, "提示", "按钮 1 被点击!");
}// 按钮 2 槽函数
void MainWindow::onButton2Clicked()
{QMessageBox::information(this, "提示", "按钮 2 被点击!");
}// 按钮 3 槽函数
void MainWindow::onButton3Clicked()
{QMessageBox::information(this, "提示", "按钮 3 被点击!");
}

②多对一(多个信号连接到同一个槽)

场景:多个按钮触发同一个槽函数
多个 QPushButton 连接到同一个 clicked() 槽函数,槽函数可以区分是哪个按钮触发的。

QtButtonApp/
│── main.cpp
│── mainwindow.h
│── mainwindow.cpp
│── mainwindow.ui  (如果使用 UI 设计)
│── QtButtonApp.pro

  1. 使用 QSignalMapper(Qt5 可用)或 lambda 表达式(推荐 Qt6)
    • 让多个按钮的 clicked() 信号映射到同一个槽函数,并传递不同的参数
  2. sender() 自动识别哪个按钮触发
    • 通过 QObject::sender() 获取信号来源(触发的按钮)。
    • 获取按钮 text() 或者 objectName() 来区分。

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QMap>  // 用于存储按钮QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onAnyButtonClicked();  // ✅ 多对一的槽函数private:Ui::MainWindow *ui;QMap<QPushButton*, QString> buttonMap;  // 按钮映射(用于存储按钮和它们的名称)
};
#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// ✅ 统一创建多个按钮,并存入 QMap 进行管理QStringList buttonNames = {"按钮 1", "按钮 2", "按钮 3"};int y = 50;for (const QString &name : buttonNames) {QPushButton *button = new QPushButton(name, this);button->setGeometry(50, y, 100, 40);  // 设置按钮位置y += 50;buttonMap[button] = name;  // 记录按钮和它的名称// ✅ 连接所有按钮到**同一个槽函数**(多对一)connect(button, &QPushButton::clicked, this, &MainWindow::onAnyButtonClicked);}
}MainWindow::~MainWindow()
{delete ui;
}// ✅ **多对一的槽函数**
void MainWindow::onAnyButtonClicked()
{QPushButton *button = qobject_cast<QPushButton*>(sender());  // 获取触发的按钮if (button && buttonMap.contains(button)){QMessageBox::information(this, "按钮点击", buttonMap[button] + " kgtbg!");}
}

③一对多(一个信号连接到多个槽)

"一对多" 是指 一个信号 连接到多个 槽函数,而不是多个信号连接到一个槽函数。在 Qt 中可以轻松实现这种一对多的机制

  1. 创建一个信号,并连接到多个槽函数
  2. 每个槽函数根据需要处理这个信号。

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onSlot1();void onSlot2();void onSlot3();private:Ui::MainWindow *ui;QPushButton *button;
};
#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建按钮button = new QPushButton("点击按钮", this);button->setGeometry(50, 50, 120, 40);// 直接连接按钮的 clicked 信号到多个槽函数connect(button, &QPushButton::clicked, this, &MainWindow::onSlot1);connect(button, &QPushButton::clicked, this, &MainWindow::onSlot2);connect(button, &QPushButton::clicked, this, &MainWindow::onSlot3);
}MainWindow::~MainWindow()
{delete ui;
}// 槽1
void MainWindow::onSlot1()
{QMessageBox::information(this, "槽1", "槽1 被触发!");
}// 槽2
void MainWindow::onSlot2()
{QMessageBox::information(this, "槽2", "槽2 被触发!");
}// 槽3
void MainWindow::onSlot3()
{QMessageBox::information(this, "槽3", "槽3 被触发!");
}

如果你想 点击按钮后一次性显示多个信息框,可以用 QMessageBox::information() 直接串联多个调用,也可以用 QMessageBoxexec() 方法让多个消息框同时显示。

方式 1:使用 QMessageBox::information() 串联

一次性弹出多个消息框(但用户需要手动关闭每个消息框)

void MainWindow::onButtonClicked()
{QMessageBox::information(this, "提示", "槽1 被触发!");QMessageBox::information(this, "提示", "槽2 被触发!");QMessageBox::information(this, "提示", "槽3 被触发!");
}

这种方式需要逐个点击“确定”关闭消息框,才能显示下一个。

方式 2:使用 QMessageBox 并行显示多个对话框

一次性显示多个信息框,不用逐个关闭

void MainWindow::onButtonClicked()
{QMessageBox *msgBox1 = new QMessageBox(QMessageBox::Information, "提示", "槽1 被触发!", QMessageBox::Ok, this);QMessageBox *msgBox2 = new QMessageBox(QMessageBox::Information, "提示", "槽2 被触发!", QMessageBox::Ok, this);QMessageBox *msgBox3 = new QMessageBox(QMessageBox::Information, "提示", "槽3 被触发!", QMessageBox::Ok, this);msgBox1->show();msgBox2->show();msgBox3->show();
}

这样可以同时显示多个消息框,用户可以自由关闭,不需要等待一个一个弹出。

方式 3:在一个窗口显示所有信息

如果你不想弹出多个窗口,而是在一个窗口内显示所有信息

void MainWindow::onButtonClicked()
{QString message = "槽1 被触发!\n槽2 被触发!\n槽3 被触发!";QMessageBox::information(this, "提示", message);
}

下面是一个 完整的 Qt 按钮小程序,包含 一个按钮,点击后会 一次性显示多个信息(方式 3)。

  • 创建 Qt 项目(Qt Widgets Application)。
  • 复制粘贴 mainwindow.hmainwindow.cppmain.cpp 代码。
  • 编译运行,点击按钮即可看到 一个弹窗 显示多个信息。

修改 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void onButtonClicked(); // 按钮点击槽函数private:Ui::MainWindow *ui;QPushButton *button; // 按钮指针
};
#endif // MAINWINDOW_H

修改 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建按钮button = new QPushButton("点击我", this);button->setGeometry(100, 100, 100, 50); // 设定按钮位置// 连接信号和槽connect(button, &QPushButton::clicked, this, &MainWindow::onButtonClicked);
}MainWindow::~MainWindow()
{delete ui;
}// 按钮点击事件
void MainWindow::onButtonClicked()
{// 方式 3:一次性显示多个信息QString message = "槽1 被触发!\n槽2 被触发!\n槽3 被触发!";QMessageBox::information(this, "提示", message);
}

这样不会弹出多个窗口,体验更好!


结论

Qt 按钮程序主要使用 QPushButton 和信号槽机制
支持一对一、多对一和一对多的信号槽连接
可以创建多个按钮,并让它们共享同一个槽
可以让一个按钮触发多个槽,执行多个操作

🚀 Qt 的按钮程序灵活且强大,适用于多种 GUI 应用场景!

相关文章:

(二)QT——按钮小程序

目录 前言 按钮小程序 1、步骤 2、代码示例 3、多个按钮 ①信号与槽的一对一 ②多对一&#xff08;多个信号连接到同一个槽&#xff09; ③一对多&#xff08;一个信号连接到多个槽&#xff09; 结论 前言 按钮小程序 Qt 按钮程序通常包含 三个核心文件&#xff1a; m…...

【Linux】从硬件到软件了解进程

个人主页~ 从硬件到软件了解进程 一、冯诺依曼体系结构二、操作系统三、操作系统进程管理1、概念2、PCB和task_struct3、查看进程4、通过系统调用fork创建进程&#xff08;1&#xff09;简述&#xff08;2&#xff09;系统调用生成子进程的过程〇提出问题①fork函数②父子进程关…...

HTB:Alert[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用ffuf对alert.htb域名进行子域名FUZZ 使用go…...

ARM嵌入式学习--第十天(UART)

--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输和接收。在嵌入式设计中&#xff0c;UART用来与PC进行通信&#xff0c;包括与监控…...

玉米苗和杂草识别分割数据集labelme格式1997张3类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;1997 标注数量(json文件个数)&#xff1a;1997 标注类别数&#xff1a;3 标注类别名称:["corn","weed","Bean…...

哈夫曼树

哈夫曼树&#xff08;Huffman Tree&#xff09;是一种最优的二叉树&#xff0c;常用于数据压缩&#xff0c;如在 Huffman 编码中使用。它是根据字符出现的频率来构造的&#xff0c;频率越高的字符越靠近树的根&#xff0c;频率低的字符则在较深的节点上。其核心思想是通过构建一…...

wax到底是什么意思

在很久很久以前&#xff0c;人类还没有诞生文字之前&#xff0c;人类就产生了语言&#xff1b;在诞生文字之前&#xff0c;人类就已经使用了语言很久很久。 没有文字之前&#xff0c;人们的语言其实是相对比较简单的&#xff0c;因为人类的生产和生活水平非常低下&#xff0c;…...

笔记:使用ST-LINK烧录STM32程序怎么样最方便?

一般板子在插件上&#xff0c; 8脚 3.3V;9脚 CLK;10脚 DIO;4脚GND ST_Link 19脚 3.3V;9脚 CLK;7脚 DIO;20脚 GND 烧录软件&#xff1a;ST-LINK Utility&#xff0c;Keil_5; ST_Link 接口针脚定义&#xff1a; 按定义连接ST_Link与电路板&#xff1b; 打开STM32 ST-LINK Uti…...

数据分析系列--[11] RapidMiner,K-Means聚类分析(含数据集)

一、数据集 二、导入数据 三、K-Means聚类 数据说明:提供一组数据,含体重、胆固醇、性别。 分析目标:找到这组数据中需要治疗的群体供后续使用。 一、数据集 点击下载数据集 二、导入数据 三、K-Means聚类 Ending, congratulations, youre done....

Python在数据科学领域的深度应用:从数据处理到机器学习模型构建

Python在数据科学领域的深度应用:从数据处理到机器学习模型构建 在当今大数据与人工智能蓬勃发展的时代,Python凭借其简洁的语法、强大的库支持和活跃的社区,已成为数据科学家和工程师的首选编程语言。本文将深入探讨Python在数据科学领域的应用,从数据预处理、探索性分析…...

海外问卷调查渠道查,具体运营的秘密

相信只要持之以恒并逐渐掌握技巧&#xff0c;每一位调查人在踏上征徐之时都会非常顺利的。并在日后的职业生涯中拥有捉刀厮杀的基本技能&#xff01;本文会告诉你如何做好一个优秀的海外问卷调查人。 在市场经济高速发展的今天&#xff0c;众多的企业为了自身的生存和发展而在…...

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>单词搜索

题解如下 题目&#xff1a;解析决策树&#xff1a;代码设计&#xff1a; 代码&#xff1a; 题目&#xff1a; 解析 决策树&#xff1a; 代码设计&#xff1a; 代码&#xff1a; class Solution {private boolean[][] visit;//标记使用过的数据int m,n;//行&#xff0c;列char…...

万字长文深入浅出负载均衡器

前言 本篇博客主要分享Load Balancing&#xff08;负载均衡&#xff09;&#xff0c;将从以下方面循序渐进地全面展开阐述&#xff1a; 介绍什么是负载均衡介绍常见的负载均衡算法 负载均衡简介 初识负载均衡 负载均衡是系统设计中的一个关键组成部分&#xff0c;它有助于…...

基于SpringBoot的青年公寓服务平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

经典游戏红色警戒2之英语

1. New construction options 部署新的建筑物&#xff08;一般是部署基地车时说的&#xff09;。 2. Loading 等待。&#xff08;正在进行&#xff09; 3. Construction complete 建筑完成。 4. On hold 等待。&#xff08;暂停进行&#xff09; 5. Canceled 取消。 6. Ca…...

IM 即时通讯系统-50-[特殊字符]cim(cross IM) 适用于开发者的分布式即时通讯系统

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术&#xff0c;提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…...

QtCreator在配置Compilers时,有一个叫ABI的选项,那么什么是ABI?

问题提出 QtCreator在配置Compilers时,有一个叫ABI的选项,那么什么是ABI&#xff1f; ABI&#xff08;Application Binary Interface&#xff09;介绍 ABI&#xff08;Application Binary Interface&#xff0c;应用二进制接口&#xff09;是指应用程序与操作系统或其他程序…...

处理 **5万字(约7.5万-10万token,中文1字≈1.5-2token)** 的上下文

处理 5万字&#xff08;约7.5万-10万token&#xff0c;中文1字≈1.5-2token&#xff09; 的上下文&#xff0c;对模型的长文本处理能力和显存要求较高。以下是不同规模模型的适用性分析及推荐&#xff1a; 一、模型规模与上下文能力的关系 模型类型参数量最大上下文长度&#…...

【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)

羑悻的小杀马特.-CSDN博客羑悻的小杀马特.擅长C/C题海汇总,AI学习,c的不归之路,等方面的知识,羑悻的小杀马特.关注算法,c,c语言,青少年编程领域.https://blog.csdn.net/2401_82648291?typebbshttps://blog.csdn.net/2401_82648291?typebbshttps://blog.csdn.net/2401_8264829…...

springboot 启动原理

目标&#xff1a; SpringBootApplication注解认识了解SpringBoot的启动流程 了解SpringFactoriesLoader对META-INF/spring.factories的反射加载认识AutoConfigurationImportSelector这个ImportSelector starter的认识和使用 目录 SpringBoot 启动原理SpringBootApplication 注…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...