Qt 窗口MainWindow(下)

对话框

对话框是 GUI 程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。Qt 常用的内置对话框有: QFiledialog (文件对话框)QColorDialog (颜色对话框)QFontDialog(字体对话框)QInputDialog(输入对话框)QMessageBox (消息框)

对话框的分类

对话框分为 模态对话框非模态对话框

模态对话框

模态对话框指的是:显示后无法与父窗口进行交互,是一种阻塞式的对话框。使用 QDialog::exec() 函数调用。

模态对话框适用于必须依赖用户选择的场合,比如消息显示,文件选择,打印设置等。

示例

1、新建 Qt 项目,在 ui 文件中的菜单栏中设置两个菜单:"文件”和“编辑”,在 菜单"文件”下新建菜单项:"创建”并将菜单项”新建”置于工具栏中; 如下图示:

在这里插入图片描述

2、在 mainwindow.cpp 文件中实现:当点击 “新建” 时,弹出一个模态对话框;

说明:在菜单项中,点击菜单项时就会触发 triggered() 信号。

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

    //当点击新建时,弹出一个模态对话框,在菜单项中,当点击之后就会触发triggered()信号
    connect(ui->action,&QAction::triggered,[=](){
        QDialog dlg(this);
        dlg.resize(200,100);
        dlg.exec();     //模态对话框
    });
}

运行效果

在这里插入图片描述

无法与父窗口进行交互

非模态对话框

非模态对话框显示后独立存在,可以同时与父窗口进行交互,是一种非阻塞式对话框,使用 QDialog::show() 函数调用。

非模态对话框一般在堆上创建,这是因为如果创建在栈上时,弹出的非模态对话框就会一闪而过。同时还需要设置 Qt:WA_DeleteOnClose 属性,目的是:当创建多个非模态对话框时(如打开了多个非模态窗口),为了避免内存泄漏要设置此属性。

非模态对话框适用于特殊功能设置的场合,比如查找操作,属性设置等。

示例

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

    connect(ui->action,&QAction::triggered,[=](){
        //非模态对话框,为了防止一闪而过,创建在堆区
        QDialog *dlg = new QDialog(this);
        dlg->resize(200,100);
        //当dlg2无限创建时,设置下面这个属性就可以在关闭非模态对话框时释放这个对象
        dlg->setAttribute(Qt::WA_DeleteOnClose);
        dlg->show();
    });
}

在这里插入图片描述

混合属性对话框

混合属性对话框同时具有模态对话框和非模态对话框的属性,对话框的生成和销毁具有非模态对话框属性,功能上具有模态对话框的属性。

使用 QDialog::setModal() 函数可以创建混合特性的对话框。true 为非模态对话框,false 为模态话对话框。 通常,创建对话框时需要指定对话框的父组件。

示例

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

    connect(ui->action,&QAction::triggered,[=](){
        //非模态对话框,为了防止一闪而过,创建在堆区
        QDialog *dlg = new QDialog(this);
        dlg->setAttribute(Qt::WA_DeleteOnClose);
        dlg->setModal(false);  //true为模态,false为非模态
        dlg->show();
    });
}

Qt内置对话框

Qt 提供了多种可复用的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog 类。常用标准对话框如下:

在这里插入图片描述

消息对话框 QMessageBox

消息对话框是应用程序中最常用的界面元素。消息对话框主要用于为用户提示重要信息,强制用户进行选择操作。

QMessageBox 类中定义了静态成员函数,可以直接调用创建不同风格的消息对话框,其中包括:

在这里插入图片描述

Question用于正常操作过程中的提问
Information用于报告正常运行信息
Warning用于报告非关键错误
Critical用于报告严重错误

其对应的函数原型如下:

在这里插入图片描述

示例1:问题提示消息对话框

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

    QPushButton *btn = new QPushButton("消息对话框",this);
    QMessageBox *msg = new QMessageBox(this);

    msg->setWindowTitle("Warning Message"); //设置消息对话框的标题
    msg->setText("Error Message!");   //设置消息对话框的内容
    msg->setIcon(QMessageBox::Question);
   msg->setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);  //在消息对话框上设置按钮信息

    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });
}

实现效果如下

在这里插入图片描述

其中可以设置的按钮的类型如下:

在这里插入图片描述

更改消息对话框中的按钮类型:

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

    QPushButton *btn = new QPushButton("消息对话框",this);
    QMessageBox *msg = new QMessageBox(this);

    msg->setWindowTitle("Warning Message"); 
    msg->setText("Error Message!");   
    msg->setIcon(QMessageBox::Question);
    msg->setStandardButtons(QMessageBox::Open | QMessageBox::Cancel);  //更改为open

    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });
}

在这里插入图片描述

示例2:信息提示消息对话框

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

    QPushButton *btn = new QPushButton("消息对话框",this);
    QMessageBox *msg = new QMessageBox(this);

    msg->setWindowTitle("Warning Message");
    msg->setText("Error Message!");   
    msg->setIcon(QMessageBox::Information);  //设置消息对话框类型为Information
    msg->setStandardButtons(QMessageBox::Open | QMessageBox::Cancel); 

    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });
}

实现效果如下

在这里插入图片描述

示例3:警告信息消息对话框

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

    QPushButton *btn = new QPushButton("消息对话框",this);
    QMessageBox *msg = new QMessageBox(this);

    msg->setWindowTitle("Warning Message"); 
    msg->setText("Error Message!");   
    msg->setIcon(QMessageBox::Warning);  //设置消息对话框类型为Warning
    msg->setStandardButtons(QMessageBox::Open | QMessageBox::Cancel);  

    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });
}

实现效果如下

在这里插入图片描述

示例4:错误提示消息对话框

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

    QPushButton *btn = new QPushButton("消息对话框",this);
    QMessageBox *msg = new QMessageBox(this);

    msg->setWindowTitle("Warning Message");
    msg->setText("Error Message!");
    msg->setIcon(QMessageBox::Critical);  //设置消息对话框类型为Warning
    msg->setStandardButtons(QMessageBox::Open | QMessageBox::Cancel);

    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });
}

实现效果如下

在这里插入图片描述

颜色对话框 QColorDialog

颜色对话框的功能是允许用户选择颜色。继承自 QDialog 类。颜色对话框如下图:

在这里插入图片描述

常用方法介绍

1、QColorDialog (QWidget *parent = nullptr) //创建对象的同时设置父对象

2、QColorDialog(const QColor &initial, QWidget *parent = nullptr) / /创建对象的同时通过 QColor 对象设置默认颜色和父对象

3、void setCurrentColor(const QColor &color) //设置当前颜色对话框

4、QColor currentColor() const //获取当前颜色对话框

5、QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions()) //打开颜色,选择对话框,并返回一个QColor 对象

参数说明: initial:设置默认颜色;parent:设置父对象;title:设置对话框标题;options:设置选项

6、void open(QObject *receiver, const char *member) //打开颜色对话框

示例1

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *btn = new QPushButton("颜色对话框",this);
    //创建颜色对话框
    QColorDialog *cdlg = new QColorDialog(this);
    connect(btn,&QPushButton::clicked,[=](){
        //打开颜色对话框,并设置默认颜色为红色
        QColor color = cdlg->getColor(QColor(255,0,0));

        qDebug() << "r = " << color.red();
        qDebug() << "g = " << color.green();
        qDebug() << "b = " << color.blue();
    });
}

效果如下

在这里插入图片描述

# 点击ok后,getcolor返回一个color对象,终端打印
r =  255
g =  0
b =  0

示例2

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *btn = new QPushButton("颜色对话框",this);
    //创建颜色对话框
    QColorDialog *cdlg = new QColorDialog(this);
    connect(btn,&QPushButton::clicked,[=](){
       //设置颜色对话框中的颜色
       cdlg->setCurrentColor(QColor(200,100,190));
       cdlg->open();
    });
}

效果如下

在这里插入图片描述

文件对话框 QFileDialog

文件对话框用于应用程序中需要打开一个外部文件或需要将当前内容存储到指定的外部文件。

常用方法介绍

1、打开文件(一次只能打开一个文件)

QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

2、打开多个文件(一次可以打开多个文件)

QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

3、 保存文件

QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

参数说明: 参数1:parent 父亲;参数2:caption 对话框标题;参数3:dir 默认打开的路径;参数4:filter 文件过滤器

示例1:打开文件

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *btn = new QPushButton("文件",this);
    QFileDialog *fdlg = new QFileDialog(this);

    connect(btn,&QPushButton::clicked,[=](){
        QString str = fdlg->getOpenFileName();
        qDebug() << str;
    });
}


//打印输出 "E:/Qt/build-dialog_1-Desktop_Qt_6_6_2_MinGW_64_bit-Debug/ui_mainwindow.h"

在这里插入图片描述

示例2:保存文件

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *btn = new QPushButton("文件", this);
    QFileDialog *fdlg = new QFileDialog(this);

    fdlg->setModal(false);

    connect(btn, &QPushButton::clicked, [=]() {
         // 使用getSaveFileName获取保存路径
        QString filePath = fdlg->getSaveFileName(this, "保存文件", QString(), "Text Files (*.txt)");
        if (!filePath.isEmpty()) {
            qDebug() << filePath;
            QFile file(filePath);
            // 尝试打开文件以写入
            if (file.open(QIODevice::WriteOnly)) {
                QTextStream out(&file);
                // 写入"hello world"
                out << "hello world";
                file.close(); // 关闭文件
            } else {
                qDebug() << "无法打开文件进行写入";
            }
        }
    });
}

//选择保存的路径 "E:/Qt/txt.txt",则输出 "E:/Qt/txt.txt"

效果如下

在这里插入图片描述

在这里插入图片描述

字体对话框 QFontDialog

Qt 中提供了预定义的字体对话框类 QFontDialog,用于提供选择字体的对话框部件。

示例:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QPushButton *btn = new QPushButton("字体", this);
    connect(btn, &QPushButton::clicked, [=]() {
        bool flag;
        //使用 QFontDialog类的静态方法 getFont打开字体对话框,并设置默认格式
        //由于getFont方法第一个参数为bool类型,所以要定义一个bool变量
        QFont font = QFontDialog::getFont(&flag,QFont("华文行楷",36));
        qDebug() << font.family().toUtf8().data();
        qDebug() << "字号:" << font.pointSize();
        qDebug() << "是否加粗" << font.bold();
        qDebug() << "是否倾斜" << font.italic();
    });
}

/*
华文行楷
字号: 36
是否加粗 false
是否倾斜 false
*/

效果如下在这里插入图片描述

输入对话框 QInputDialog

Qt 中提供了预定义的输入对话框类:QInputDialog,用于进行临时数据输入的场合。

常用方法介绍

1、双精度浮点型输入数据对话框 double getDouble (QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())

2、整型输入数据对话框 int getInt (QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());

3、选择条目型输入数据框 QString getItem (QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) ;

参数说明: parent:父亲;title:对话框标题;label:对话框标签;items:可供选择的条目

示例1:浮点型数据输入对话框

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
     , ui(new Ui::MainWindow)
{
    QPushButton *btn = new QPushButton("输入框", this);

    connect(btn, &QPushButton::clicked, [=]() {
        // 设置小数点后的位数为10(或者您需要的任何值)
        bool ok;
        //decimals 表示小数点的默认数目,此处为10
        double d = QInputDialog::getDouble(
            this, "输入框", "浮点型", 0.0, -2147483647, 2147483647, 10, &ok   
        );
        //getInt()的使用方式和getDouble方法相同
        if (ok) {
            qDebug() << "d =" << d;
        }
    });

    this->setCentralWidget(btn); // 将按钮设置为中心部件
}
//d = 12.35

运行效果

在这里插入图片描述

示例2:打开选择条目对话框

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    QPushButton *btn = new QPushButton("输入框", this);
    QInputDialog *idlg = new QInputDialog(this);
    connect(btn,&QPushButton::clicked,[=](){
        QStringList items;
        items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");
        QString item = idlg->getItem(this,"输入框","Items",items);
        qDebug() << "item: " << item.toUtf8().data();
    });
}

//item:  Spring

效果如下

在这里插入图片描述

进度条对话框 QProgressDialog

Qt 提供了预定义的进度对话框类:QProgressDialog,用于显示当前进度信息和需要用户等待的场合。

示例:每秒进度条+1

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // 创建一个新按钮,标题为"输入框"
    QPushButton *btn = new QPushButton("输入框", this);
    // 创建一个进度对话框
    QProgressDialog *pdlg = new QProgressDialog(this);
    // 创建一个定时器
    QTimer *timer = new QTimer(this);

    // 设置进度对话框属性
    pdlg->setWindowTitle(tr("处理中...")); // 设置窗口标题
    pdlg->setLabelText(tr("当前进度...")); // 设置进度对话框的文本
    pdlg->setMaximum(100); // 设置进度的最大值
    pdlg->setMinimum(0); // 设置进度的最小值

    // 连接按钮点击信号到lambda函数,显示进度对话框
    connect(btn, &QPushButton::clicked, [=]() {
        pdlg->setValue(0); // 初始化进度条为0
        pdlg->show(); // 显示进度对话框

        // 连接定时器的超时信号到lambda函数,更新进度条的值
        connect(timer, &QTimer::timeout, [=]() {
            int value = pdlg->value();
            if (value < pdlg->maximum()) {
                pdlg->setValue(value + 1); // 每次调用增加1
            } else {
                timer->stop(); // 如果达到最大值,停止定时器
            }
        });

        timer->start(1000); // 设置定时器每1000毫秒(1秒)触发一次
    });

    // 如果进度对话框被用户取消,停止定时器
    connect(pdlg, &QProgressDialog::canceled, timer, &QTimer::stop);
}

效果如下

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

36.基于SpringBoot + Vue实现的前后端分离-高校汉服租赁网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的高校汉服租赁网站系统设计与实现管理…

【包远程安装运行】SpringBoot+Mysql实现的美食分享菜谱制作平台+演示视频+开发文档(论文模板)

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的美食分享菜谱制作平台系统&#xff0c;该系统分为前台和后台&#xff0c;多用户分享平台。主要实现了 除脚手架功能以外下面是系统的功能&#xff1a; 前台普通用户&#xff1a;注册、登录、首页、美食…

如何在软件测试行业走的更远?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 时间往前推10年&#xff0c;IT业如日中天。 其中测试更是一个极具包容性的行业。那些希望在技术…

图像抠图DIS——自然图像中高精度二分图像抠图的方法(C++/python模型推理)

概述 DIS&#xff08;Dichotomous Image Segmentation&#xff09;是一种新的图像分割任务&#xff0c;旨在从自然图像中分割出高精度的物体。与传统的图像分割任务相比&#xff0c;DIS更侧重于具有单个或几个目标的图像&#xff0c;因此可以提供更丰富准确的细节。 为了研究…

Java只有中国人在搞了吗?

还是看你将来想干啥。想干应用架构&#xff0c;与Java狗谈笑风生&#xff0c;沆瀣一气&#xff0c;你就好好写Java&#xff0c;学DDD&#xff0c;看Clean Architecture。你想成为炼丹玄学工程师&#xff0c;年入百万&#xff0c;就选python&#xff0c;专精各种paper。你不在意…

如何修改SystemUI Clock的样式

开机的流程为&#xff1a; 在 CollapsedStatusBarFragment 的onCreateView 方法中 inflate R.layout.status_bar.xml&#xff0c; 里面定义有Clock。 CollapsedStatusBarFragment 的被调用流程为&#xff1a; 在StatusBar 的makeStatusBarView方法中显示出来。 所以可以在文…

Vue 若依框架 form-generator添加表格组件和动态表单组件

效果图&#xff1a; 在若依框架自带的流程表单配置基础上添加这两个组件 config.js // 表单属性【右面板】 export const formConf {formRef: elForm,formModel: formData,other: other,size: medium,labelPosition: right,labelWidth: 100,formRules: rules,gutter: 15,dis…

vue2 和 vue3 配置路由有什么区别

vue2 和 vue3 配置路由有什么区别 初始化路由器实例&#xff1a;注入到应用中&#xff1a;动态路由参数和捕获所有路由&#xff1a;编程式导航 API&#xff1a;异步加载组件&#xff1a; vue2 如何 使用路由 第一步&#xff1a;安装 vue-router第二步&#xff1a;创建路由组件第…

在面对API的安全风险,WAAP全站防护能做到哪些?

随着数字化转型的加速&#xff0c;API&#xff08;应用程序接口&#xff09;已经成为企业间和企业内部系统交互的核心组件。在应用程序开发过程中&#xff0c;API能够在不引起用户注意的情况下&#xff0c;无缝、流畅地完成各种任务。例如从一个应用程序中提取所需数据并传递给…

【MySQL】知识点 + 1

# &#xff08;1&#xff09;查询当前日期、当前时间以及到2022年1月1日还有多少天&#xff0c;然后通过mysql命令执行命令。 select curdate() AS 当前日期,curtime() AS 当前时间,datediff(2022-01-01, curdate()) AS 距离2022年1月1日还有天数;# &#xff08;2&#xff09;利…

【iOS ARKit】3D文字

首先&#xff0c;3D场景中渲染的任何虚拟元素都必须具有网格&#xff08;顶点及顶点间的拓扑关系&#xff09;&#xff0c;没有网格的元素无法利用GPU 进行渲染&#xff0c;因此&#xff0c;在3D 场景申渲染 3D文字时&#xff0c;文字也必须具有网格。在计算机系统中&#xff0…

发展新质生产力,亚信科技切中产业痛点

管理学大师拉姆查兰认为&#xff0c;经营性不确定性通常在预知范围之内&#xff0c;不会对原有格局产生根本性影响&#xff1b;而结构性不确定性则源于外部环境的根本性变化&#xff0c;将彻底改变产业格局&#xff0c;带来根本性影响。 毫无疑问&#xff0c;一个充满结构性不…

VS Code配置Python环境

首先贴一张完全卸载VS Code的图&#xff0c;包括一些配置和插件。 讲述一下如何配置Python环境以及和Conda的配合使用(涉及到虚拟环境) VS Code配置Python需要三步&#xff1a;安装Python环境&#xff1b;在VS Code软件中下载Python插件&#xff1b;新建python文件开始coding。…

Docker容器初始

华子目录 docker简介虚拟化技术硬件级虚拟化硬件级虚拟化历史操作系统虚拟化历史基于服务的云计算模式 什么是dockerDocker和传统虚拟化方式的不同之处为什么要使用docker&#xff1f;Docker 在如下几个方面具有较大的优势 对比传统虚拟机总结docker应用场景docker改变了什么 基…

抖音小店和抖音橱窗有什么区别?普通人最适合做哪个?

大家好&#xff0c;我是电商糖果 说起抖音卖货&#xff0c;很多人都会搞不清楚抖音小店和抖音橱窗有什么不同。 甚至有的朋友将他们认为是一个项目。 这里糖果就帮大家仔细的分辨一下&#xff0c;想在抖音卖货的普通人&#xff0c;看看它们谁最适合自己。 来百度APP畅享高清…

MySQL中的基本SQL语句

文章目录 MySQL中的基本SQL语句查看操作创建与删除数据库和表修改表格数据库用户管理 MySQL中的基本SQL语句 查看操作 1. 查看有哪些数据库 show databases; 2.切换数据库 use 数据库名;比如切换至 mysql数据库 use mysql;3.查看数据库中的表 show tables;4.查看表中…

干货分享 | TSMaster如何同时记录标定变量和DBC信号至BLF文件

客户在使用TSMaster软件标定功能时&#xff0c;有如下使用场景&#xff1a;将DBC文件中的信号与A2L文件中的标定变量同时记录在一个记录文件。针对此应用场景&#xff0c;TSMaster软件提供了一种方法来满足此需求。今天重点和大家分享一下关于TSMaster软件中同时记录标定变量和…

【计算机组成】计算机组成与结构(四)

上一篇&#xff1a;【计算机组成】计算机组成与结构&#xff08;三&#xff09; &#xff08;7&#xff09;存储系统 计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。 两级存储:cache-主存、主存-辅存(虚拟存储体系) 局部性原理 ◆ 局部性…

openssl 升级1.1.1.1k 到 3.0.13

下载 https://www.openssl.org/source/ tar -zxvf openssl-3.0.13.tar.gzcd openssl-3.0.13/./config enable-fips --prefix/usr/local --openssldir/usr/local/opensslmake && make install 将原有openssl备份 mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/i…

ElasTool v3.0 程序:材料弹性和机械性能的高效计算和可视化工具包

分享一个材料弹性和机械性能的高效计算和可视化工具包&#xff1a; ElasTool v3.0。 感谢论文的原作者&#xff01; 主要内容 “弹性和机械性能的高效计算和可视化对于材料的选择和新材料的设计至关重要。该工具包标志着材料弹性和机械性能计算分析和可视化方面的重大进步…