Qt-QMessageBox用法详解

2023-05-16

QMessageBox 是 Qt 框架中常用的一个类,可以生成各式各样、各种用途的消息对话框,如图 1 所示。
 


图 1 QMessageBox消息对话框


很多 GUI 程序都会用到消息对话框,且很多场景中使用的消息对话框是类似的,唯一的区别只是提示信息不同。为了提高程序员的开发效率,避免重复地“造轮子”,Qt 开发者设计好了几种通用的 QMessageBox 消息对话框,需要时可以直接使用。

通用的QMessageBox消息框

Qt 提供了 6 种通用的 QMessageBox 消息对话框,通过调用 QMessageBox 类中的 6 个静态成员方法,可以直接在项目中使用它们。

1) information消息对话框

information 对话框常用于给用户提示一些关键的信息,它的外观如下图所示:
 


图 2 information 消息对话框


在项目中使用 information 消息对话框,直接调用 QMessageBox 类中的 information() 静态成员方法即可,该方法的语法格式如下:


StandardButton QMessageBox::information(QWidget *parent,
                                        const QString &title,
                                        const QString &text,
                                        StandardButtons buttons = Ok,
                                        StandardButton defaultButton = NoButton)  

各个参数的含义是:

  • parent:指定消息对话框的父窗口,消息提示框会作为一个独立的窗口显示在父窗口的前面。消息提示框从弹出到关闭的整个过程中,用户无法操作父窗口,更不能删除父窗口;
  • title:指定消息对话框的标题,即图 2 中的 Titile;
  • text:指定消息对话框的具体内容,即图 2 中的 text;
  • buttons:指定消息对话框中包含的按钮。默认情况下,消息对话框只包含一个按钮,即图 2 中显示的 "OK" 按钮。根据需要,我们可以用|按位或运算符在消息对话框中设置多个按钮,例如 QMessageBox::Ok|QMessageBox::Cancel
  • defaultButton:指定 Enter 回车键对应的按钮,用户按下回车键时就等同于按下此按钮。注意,defaultButton 参数的值必须是 buttons 中包含的按钮,当然也可以不手动指定,QMessageBox 会自动从 buttons 中选择合适的按钮作为 defaultButton 的值。


information() 函数会返回用户按下的按钮。StandardButton 是 QMessageBox 类中定义的枚举类型,每个枚举值代表一种按钮。StandardButton 类型中的值有很多,下表给大家罗列了几个常用的:
 

表 1 QMessageBox::StandardButton 枚举类型值
枚举值含 义
QMessageBox::Ok标有 "OK" 字样的按钮,通常用来表示用户接受或同意提示框中显示的信息。
QMessageBox::Open标有 "Open" 字样的按钮。
QMessageBox::Save标有 "Save" 字样的按钮。
QMessageBox::Cancel标有 "Cancel" 字样的按钮。点击此按钮,通常表示用户拒绝接受提示框中显示的信息。
QMessageBox::Close标有 "Close" 字样的按钮。
QMessageBox::Discard标有 "Discard" 或者 "Don't Save" 字样的按钮,取决于运行平台。
QMessageBox::Apply标有 "Apply" 字样的按钮。
QMessageBox::Reset标有 "Reset" 字样的按钮。
QMessageBox::Yes标有 "Yes" 字样的按钮。
QMessageBox::No标有 "No" 字样的按钮。


例如,使用 information() 函数实现图 2 所示的对话框,实现代码为:


  
  • QMessageBox::StandardButton result = QMessageBox::information(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 information 对话框会显示在 widget 窗口的前面。通过用 result 接收 information() 函数的返回值,我们可以得知用户选择的是哪个按钮。

2) critical消息对话框

critical 消息对话框常用于给用户提示“操作错误”或“运行失败”的信息,它的外观如下图所示:
 


图 3 critical 消息对话框


项目中使用 critical 消息对话框,直接调用 QMessageBox 类提供的 critical() 静态成员方法即可,该方法的语法格式为:


StandardButton QMessageBox::critical(QWidget *parent,
                                     const QString &title,
                                     const QString &text,
                                     StandardButtons buttons = Ok,
                                     StandardButton defaultButton = NoButton)  

各个参数的含义以及返回值的含义,都与 information() 函数相同,这里不再重复赘述。

例如,使用 critical() 函数实现图 3 所示的对话框,实现代码为:


  
  • QMessageBox::StandardButton result=QMessageBox::critical(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 critical 对话框会显示在 widget 窗口的前面。

3) question消息对话框

question 对话框常用于向用户提出问题并接收用户的答案,它的外观如下图所示:
 


图 4 question消息对话框


项目中使用 question 对话框,可以直接调用 QMessageBox 类的 question() 静态成员方法,该方法的语法格式为:


StandardButton QMessageBox::question(QWidget *parent,
                                     const QString &title,
                                     const QString &text,
                                     StandardButtons buttons = StandardButtons( Yes | No ),
                                     StandardButton defaultButton = NoButton)  

各个参数的含义以及返回值的含义,都与 information() 函数相同。

例如,使用 question() 函数实现图 4 所示的对话框,实现代码为:


  
  • QMessageBox::StandardButton result=QMessageBox::question(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 question 对话框会显示在 widget 窗口的前面。

4) warning消息对话框

warining 对话框常用于向用户显示一些警告信息,它的外观如下图所示:
 


图 5 warning消息对话框


项目中使用 warning 对话框,可以直接调用 QMessageBox 类的 warning() 静态成员方法,该方法的语法格式为:


StandardButton QMessageBox::warning(QWidget *parent,
                                    const QString &title,
                                    const QString &text,
                                    StandardButtons buttons = Ok,
                                    StandardButton defaultButton = NoButton)  

各个参数的含义以及返回值的含义,都与 information() 函数相同。

例如,使用 warning() 函数实现图 5 所示的对话框,实现代码为:


  
  • QMessageBox::StandardButton result=QMessageBox::warning(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 warning 对话框会显示在 widget 窗口的前面。

5) about和aboutQt对话框

about 对话框常常作为介绍某个产品或某项功能的临时窗口,它的外观如下图所示:
 


图 6 about消息对话框


注意,about 对话框没有固定的图标,它显示的图标可能来自父窗口、包含父窗口的顶层窗口等,也可能使用和 information 对话框相同的图标。

项目中使用 about 对话框,直接调用 QMessageBox 类提供的 about() 静态成员方法即可,该方法的语法格式如下:

void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

各个参数的含义和与 information() 函数相同。和前面的几种对话框不同,about对话框中只包含一个默认的 Ok 按钮,且 about() 函数没有返回值。

aboutQt 可以看做是 about 对话框的一个具体实例,它只能显示 Qt 的介绍信息,如下图所示:
 


图 7 aboutQt对话框


项目中使用 aboutQt 对话框,直接调用 QMessageBox 类提供的 aboutQt() 静态成员方法即可,该函数的语法格式如下:

void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())

我们只能设置 aboutQt 对话框的 parent 父窗口和 title 标题,不能自定义它的内容。所以在实际场景中,aboutQt() 对话框很少使用。

自定义QMessageBox对话框

以上 6 种通用的 QMessageBox 对话框,界面上的图片无法修改,按钮上的文字也无法修改(例如无法将 OK、No 改成中文)。如果想修改它们,就需要自定义一个 QMessageBox 对话框。

QMessageBox对话框的创建

程序中创建 QMessageBox 对象,必须先引入<QMessageBox>头文件。QMessageBox 类提供了两个构造函数,分别是:


QMessageBox::QMessageBox(QWidget *parent = Q_NULLPTR)
QMessageBox::QMessageBox(Icon icon,
                         const QString &title,
                         const QString &text,
                         StandardButtons buttons = NoButton,
                         QWidget *parent = Q_NULLPTR,
                         Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)  

第一个构造函数可以创建一个“空白”对话框,即对话框中不包含任何文本和按钮。当然,通过调用 QMessageBox 类提供的成员方法,可以向“空白”对话框中添加各种元素(图标、文本、按钮等)。

第二个构造函数中,各个参数的含义是:

  • icon:指定对话框中的图片。Icon 是 QMessageBox 类中定义的枚举类型,内部包含 QMessageBox::NoIcon、QMessageBox::Question、QMessageBox::Information、QMessageBox::Warning、QMessageBox::Critical 几个值,分别表示:不指定图片、question对话框的图片(图 4)、information对话框的图片(图 2)、warning对话框的图片(图 5)、critical对话框的图片(图 3)。
  • title:指定对话框的标题;
  • text:指定对话框中显示的文本信息;
  • buttons:指定对话框中包含的的按钮,可选值如表 1 所示。
  • parent:指定对话框的父窗口;
  • f:指定对话框的属性。WindowFlags 是 Qt 提供的枚举类型,内部包含的值有很多,有的用来指定对话框的用途(比如 Qt::Dialog 表示对话框窗口),有的用来指定对话框的外观(比如 MSWindowsFixedSizeDialogHint 表示给对话框添加一个细的边框)

 
举个简单的例子:


  
  1. #include <QApplication>
  2. #include <QMessageBox>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. //创建 QMessageBox 类对象
  7. QMessageBox MyBox(QMessageBox::Question,"Title","text",QMessageBox::Yes|QMessageBox::No);
  8. //使 MyBox 对话框显示
  9. MyBox.exec();
  10. return a.exec();
  11. }

程序中创建了一个 MyBox 对话框,通过调用 QMessageBox 提供的 exec() 方法,可以使 MyBox 对话框弹出。运行程序可以发现,MyBox 对话框的外观和图 4 的 question 对话框完全一样。

QMessageBox对话框的使用

QMessageBox 类提供了很多功能实用的成员方法,方便我们快速地制作出实际场景需要的对话框。

下表给大家罗列了常用的一些 QMessageBox 类成员方法:
 

表 2 QMessageBox 常用成员方法
成员方法功 能
void QMessageBox::setWindowTitle(const QString &title)设置对话框的标题。
void setText(const QString &text)设置对话框中要显示的文本。
void setIconPixmap(const QPixmap &pixmap)设置对话框中使用的图片。
QAbstractButton *QMessageBox::clickedButton() const返回用户点击的按钮。
QPushButton *QMessageBox::addButton(const QString &text, ButtonRole role)向对话框中添加按钮,text 为按钮的文本,role 是 QMessageBox::ButtonRole 枚举类型的变量,用于描述按钮扮演的角色,它的可选值有 QMessageBox::AcceptRole(同 OK 按钮)、QMessageBox::RejectRole(同 Cancel 按钮)等。
int QMessageBox::exec()使当前对话框弹出,除非用户关闭对话框,否则对话框将一直存在。此外,当对话框中使用的都是 Qt 提供的按钮时,该方法可以监听用户点击的是哪个按钮,并将该按钮对应的枚举值返回;如果对话框中包含自定义按钮,需要借助 clickedButton() 方法确定用户点击的按钮。


举个简单的例子:


  
  1. #include <QApplication>
  2. #include <QMessageBox>
  3. #include <QPushButton>
  4. #include <QDebug>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. QMessageBox MBox;
  9. MBox.setWindowTitle("QMessageBox自定义对话框");
  10. MBox.setText("这是一个自定义的对话框");
  11. MBox.setIconPixmap(QPixmap("C:\\Users\\xiexuewu\\Desktop\\icon_c.png"));
  12. QPushButton *agreeBut = MBox.addButton("同意", QMessageBox::AcceptRole);
  13. MBox.exec();
  14. if (MBox.clickedButton() == (QAbstractButton*)agreeBut) {
  15. //在 Qt Creator 的输出窗口中输出指定字符串
  16. qDebug() << "用户点击了同意按钮";
  17. }
  18. return a.exec();
  19. }

程序运行结果如图 8 所示,点击“同意”按钮后,我们会在 Qt Creator 的输出窗口中看到“用户点击了同意按钮”。
 


图 8 自定义的 QMessageBox 对话框

QMessageBox的信号和槽

操作 QMessageBox 对话框,最常用的信号函数是 buttonClicked() 函数,最常用的槽函数是 exec() 函数,它们的语法格式和功能如下表所示。 
 

表 3 QMessageBox信号和槽
信号函数功 能
void QMessageBox::buttonClicked(QAbstractButton *button)当用户点击对话框中的某个按钮时,会触发此信号函数,该函数会将用户点击的按钮作为参数传递给槽函数。
槽函数功 能
int QMessageBox::exec()弹出对话框,直到用户手动关闭对话框,此对话框将一直存在。


举个简单的例子:


  
  1. //main.cpp
  2. #include <QApplication>
  3. #include <QWidget>
  4. #include <QMessageBox>
  5. #include <QPushButton>
  6. #include <QAbstractButton>
  7. QPushButton* agreeBut;
  8. QPushButton* disagreeBut;
  9. class MyWidget:public QWidget{
  10. Q_OBJECT
  11. public slots:
  12. void buttonClicked(QAbstractButton * butClicked);
  13. };
  14. void MyWidget::buttonClicked(QAbstractButton * butClicked){
  15. if(butClicked == (QAbstractButton*)disagreeBut){
  16. this->close();
  17. }
  18. }
  19. int main(int argc, char *argv[])
  20. {
  21. QApplication a(argc, argv);
  22. //创建主窗口
  23. MyWidget myWidget;
  24. myWidget.setWindowTitle("主窗口");
  25. myWidget.resize(400,300);
  26. //创建消息框
  27. QMessageBox MyBox(QMessageBox::Question,"","");
  28. MyBox.setParent(&myWidget);
  29. //设置消息框的属性为对话框,它会是一个独立的窗口
  30. MyBox.setWindowFlags(Qt::Dialog);
  31. MyBox.setWindowTitle("协议");
  32. MyBox.setText("使用本产品,请您严格遵守xxx规定!");
  33. //自定义两个按钮
  34. agreeBut = MyBox.addButton("同意", QMessageBox::AcceptRole);
  35. disagreeBut = MyBox.addButton("拒绝", QMessageBox::RejectRole);
  36. myWidget.show();
  37. //添加信号和槽,监听用户点击的按钮,如果用户拒绝,则主窗口随之关闭。
  38. QObject::connect(&MyBox,&QMessageBox::buttonClicked,&myWidget,&MyWidget::buttonClicked);
  39. MyBox.exec();
  40. return a.exec();
  41. }
  42. //MyWidget类的定义应该放到 .h 文件中,本例中将其写到 main.cpp 中,程序最后需要添加 #include "当前源文件名.moc" 语句,否则无法通过编译。
  43. #include "main.moc"

程序执行结果为:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt-QMessageBox用法详解 的相关文章

  • 在Linux中如何修改root帐户的登录用户名

    vi etc passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态 xff0c 并输入 x保存并退出 vi etc shadow 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键
  • Linux elasticsearch 安装超详细教程

    1 下载elasticsearch 7 11 2 linux x86 64 tar gz 之所以下载7 11 2版本是因为我使用了中文分词器 xff0c 对应中文分词器的版本号 2 可以官方下载 xff0c 会比较慢 xff0c 这里提供我
  • 程序员做一辈子?

    首先 xff0c 程序员真有必要干一辈子吗 xff1f 如果你是个搬砖的 xff0c 你会考虑一辈子搬砖吗 xff1f 你肯定会想着过几年挣钱了 xff0c 买个车跑运输 xff0c 或者自己做工头 对程序员来说 xff0c 真心没有必要干
  • ubuntu系统怎么使用ifconfig和开启远程连接

    在ubuntu系统刚安装好之后ifconfig命令和开启远程连接都是不起作用的 xff0c 如果需要使ifconfig起作用需要安装一个小工具 xff0c 如果想开启远程连接的话也需要安装open ssh工具 开启ifconfig xff1
  • LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA等指令详解

    关于多寄存器加载存储指令 1 LDMIA指令 LDMIB指令 LDMDB指令 LDMDA指令 xff08 1 xff09 LDMIA指令 xff0c IA表示每次传送后地址加4 xff08 2 xff09 LDMIB指令 xff0c 每次传
  • FreeRTOS-互斥信号量

    原文地址 xff1a http blog csdn net xukai871105 article details 43456985 0 前言 在嵌入式操作系统中互斥型信号量是任务间资源保护的重要手段 下面结合一个具体例子说明FreeRTO
  • 执行体线程--ETHREAD

    typedef struct ETHREAD KTHREAD Tcb 内嵌了KTHREAD对象作为第一个数据成员 LARGE INTEGER CreateTime 包含了线程创建时间 xff0c 他是在线程创建时被赋值的 union LAR
  • 显卡驱动的作用(本质作用)

    确切资料表明显卡不需要驱动也可以进行显示 xff0c 只需要将显示的内容存到对应的显存地址就可以 xff08 通过cpu直接或者间接的硬连线实现 xff09 也就是说单纯的显示像素的话不需要使用显卡驱动 xff0c 但是单纯的显示像素甚至某
  • 智能指针之make_unique与make_shared

    make unique的实现 std make shared是C 43 43 11的一部分 xff0c 但是std make unique很可惜不是 它是在C 43 43 14里加入标准库的 xff0c 但我们可以自己实现make uniq
  • NVIDIA Jetson TX1 系列开发教程之十二:libcurl、RapidJSON安装

    NVIDIA Jetson TX1 系列开发教程之十二 xff1a libcurl RapidJSON安装 转载请注明作者和出处 xff1a http blog csdn net u011475210嵌入式平台 xff1a NVIDIA J
  • 用户标签体系的搭建方法

    一 标签体系的困境 每一个需求背后都有对应的痛点和问题 xff0c 在讲具体的方法之前 xff0c 笔者想简单阐述一下标签体系搭建和实践过程中企业一般会遇到的问题 困境 xff0c 方便读者理解本文的搭建思路 目的和未来的优化方向 用户标签
  • Windows 安装TVM 及各种报错解决!无GPU版本

    这篇先来一个不用GPU的下次 xff0c 再整一个带GPU的 xff01 系统基本信息 Windows 11 Anaconda 4 12 Python 3 8 13 Visual Studio 2022 这几天在Windows 下安装TVM
  • C++变量前面加下划线的含义

    C 43 43 变量前面加下划线和不加下划线都不会影响对变量的定义 xff0c 只是风格问题 xff0c 更喜欢将成员变量或者私有成员变量的前面加上下划线 以表示该变量是某个类的属性 比如 xff1a int size int getsiz
  • tensorflow中GPU相关设置解决显存不足

    1 显存不足时报错如下 xff1a E tensorflow stream executor cuda cuda dnn cc 359 could not create cudnn handle CUDNN STATUS INTERNAL
  • freertos 学习笔记——第一章、裸机进阶RTOS

    第一章 前言 1 1裸机的软件写法 1 xff0c 轮询系统 void main sys init while 1 task 1 task 2 任务处理在循环中依次执行 2 xff0c 前后台系统 中断被成为前台 xff0c 无限循环被成为
  • freertos学习笔记——第三章、任务控制——3.1 全局变量造成的困扰

    裸机中经常使用全局变量 xff0c 但在RTOS中大量使用全局变量会造成很多问题 在RTOS中也可以使用全局变量但使用时一定要注意有哪些任务会写这个变量 xff0c 哪些任务会读这个变量 尤其切记在使用这个变量的过程中变量的数值发生改变 x
  • MTK项目总结

    一 sensor路径 vendor mediateck propri sensor校准 xff1a 加速度校准 adb shell 34 echo 1 gt sys bus platform drivers gsensor test cal
  • JAVA简述和JDK环境搭建

    一 Java 语言背景介绍 1 什么是 Java 语言 xff1f Java 语言是美国 Sun 公司 xff08 Stanford University Network xff09 在 1995 年推出的计算机语言 2009年 xff0c
  • Java变量、标识符以及类型转换详解

    本篇文章为本人学习笔记 xff0c 如有错误 xff0c 希望指正 一 进制 进制详细概念以及转换 xff1a https blog csdn net diyu122222 article details 80692904 这篇写的很好 x
  • Java运算符的使用和规则

    本篇文章为本人学习笔记 xff0c 如有错误 xff0c 希望指正 Java中运算符大致分为以下几类 xff1a 算数运算符赋值运算符自增自减运算符关系运算符逻辑运算符三元运算符 1 算数运算符 算数运算符包括 xff1a 作用 43 加法

随机推荐

  • Java的内存分配理解

    本篇文章为本人学习笔记 xff0c 如有错误 xff0c 希望指正 Java 程序在运行时 xff0c 需要在内存中分配空间 为了提高运算效率 xff0c 就对空间进行了不同区域的划分每一片区域都有特定的处理数据方式和内存管理方式 区域名称
  • IntelliJ IDEA的Debug教程

    1 什么是Debug模式 它是供程序员使用的程序调试工具 xff0c 它可以用于查看程序的执行流程 xff0c 也可以用于追踪程序执行过程来调试程序 2 Debug模式操作流程 如何加断点 选择要设置断点的代码行 xff0c 在行号的区域后
  • opencv获取相机图像并发布为ROS节点

    仅记录工程中的使用 完整代码请查看 xff1a https github com chx725 cv and ros ROS是最普遍使用的机器人系统之一 xff0c 提供了各种功能包 xff0c 仿真环境 xff0c 模型 xff0c 可视
  • Java中两种方法实现栈和队列(面试)

    学到LinkedList xff0c 上课时老师提了一下代码实现栈和队列 xff0c 面试可能会用上 xff0c 就码了栈和队列两种实现方案 如有问题 xff0c 希望指出 一 栈 1 数组实现栈 span class token comm
  • docker容器迁移教程

    前言 被领导要求部署一个和测试环境一样的演示环境 xff0c 并且数据库也要同步过去 xff0c 服务器上的各种服务都是docker部署的 xff0c 由于之前docker玩的比较少 xff0c 所以还是踩了不少坑的 xff0c 在此记录一
  • Java多sheet模板导出表格

    前言 需求是这样的 xff0c 需要在页面导出列表表格时同时导出每项的详情数据 xff0c 而且详情表格并不是一个常规的二维表格 xff0c 就像图中这样的效果 xff0c 所以要解决的最主要两个问题就是 xff1a 多sheet实现 异形
  • docker容器时间不同步导致在java应用中获取的时间不正确问题

    一 前言 在把Java应用部署到docker容器时 xff0c 发现应用获取到的时间和现实时间相差了8个小时 xff0c 会导致一系列不必要的麻烦 二 解决方案 1 首选需要确保宿主机的时区和时间的准确 现在宿主机上用 date R 看一下
  • Caffeine一级缓存介绍和应用

    Caffeine介绍 redis和caffeine的区别 相同点就不用说 xff0c 广义上都是缓存的方式 咱们就说说不同 redis是将数据存储到内存里 xff1b caffeine是将数据存储在本地应用里caffeine和redis相比
  • Java中使用es条件构造器BoolQueryBuilder

    前言 由于es在java中查询没法像mybatis那样方便 xff0c 而且es的构造器使用也比较繁琐 xff0c 理解不是很方便 xff0c 所以写一篇文章来记录es构造器BoolQueryBuilder查询时各种条件的构造的正确姿势 教
  • 群晖docker容器内mysql部署和远程连接

    群晖docker容器内mysql部署和远程连接 1 docker内Mysql部署2 Mysql远程访问配置 1 docker内Mysql部署 首先在群晖docker内安装ubuntu镜像 xff0c 启用镜像时注意对容器和宿主机的端口映射进
  • eclipse的安装及配置PyDev插件(win10)

    原博文 xff1a Windows下安装Eclipse 43 python2 7 43 Pydev 一 安装eclipse 学习Java第一步就是装eclipse 我每学习一门语言都会先死在安装程序上 这个也一样 一 去eclipse官网下
  • 小微企业技术人员面试流程及常见问题整理分析

    技术人员面试流程 在同一个小的企业做久了 xff0c 当有人员离职后 xff0c 招聘中的面试的工作就落在了资历老一点的员工上 虽然不是专业的HR xff0c 但还是在此记录一下一些人员面试的基本流程步骤及主要内容 一 面试流程 1 接待应
  • Ubuntu 解决触摸板不识别问题

    Ubuntu 解决触摸板不识别问题 span class hljs built in sudo span vi etc default grub span class hljs comment 把GRUB CMDLINE LINUX 61
  • 图像的灰度化、二值化

    目录 1 图像像素点 2 灰度化 3 二值化 4 使用open cv库进行图片的灰度化 二值化 4 1 将图片转换为灰度图 4 2 将灰度图转换为二值化图图片 1 图像像素点 在图像处理中 xff0c 用RGB三个分量 xff08 R xf
  • 【嵌入式】stm32程序跳转实验

    嵌入式 stm32程序跳转实验 菜老越 于 2019 04 23 17 54 56 发布 2888 收藏 22 分类专栏 xff1a 嵌入式 文章标签 xff1a keil stm32 程序跳转 IAP BootLoader 版权 嵌入式
  • C++/C语言实现HTTP的GET和POST请求

    阅读目录 HTTP请求和IP TCP 实现GET请求 实现POST请求 xff1a 参考 xff1a 回到顶部 HTTP请求和IP TCP 所谓的HTTP协议是基于IP TCP协议的 xff0c 所以要获取远端的html数据只要创建sock
  • C++ 简单实现HTTP GET/POST 请求

    HTTP 超文本传输协议 是一种客户端与服务端的传输协议 xff0c 最早用于浏览器和服务器之间的通信 xff0c 后来因为其使用灵活 方便等特点 xff0c 广泛用于客户端与服务端的通信 文章将简单介绍HTTP协议 xff0c 同时以C
  • 分布式系统架构简单介绍

    目录 xff1a 一 什么是分布式系统 xff1f 二 为什么要走分布式系统架构 xff1f 三 系统如何进行拆分 xff1f 四 分布式之后带来的技术挑战 xff1f 一 什么是分布式系统 xff1f 在谈分布式系统架构前 xff0c 我
  • 使用javascript实现对于chineseocr的API调用

    ChineseOCR在线API 网页地址 界面 提供多种接口调用方式 xff0c 比如在线调用 Javascript api调用 curl api调用和python api调用四种方式 xff0c 本次使用javascript api调用的
  • Qt-QMessageBox用法详解

    QMessageBox 是 Qt 框架中常用的一个类 xff0c 可以生成各式各样 各种用途的消息对话框 xff0c 如图 1 所示 图 1 QMessageBox消息对话框 很多 GUI 程序都会用到消息对话框 xff0c 且很多场景中使