QMessageBox 消息框

2023-10-29

QMessageBox

QMessageBox是Qt框架提供的用于弹出消息对话框的类。它可以用于显示一些提示信息,警告信息,错误信息等。

QMessageBox的使用非常简单,只需要调用静态方法即可弹出对话框:

QMessageBox::information(this, "标题", "消息内容");

上面的代码就可以弹出一个信息对话框,标题为"标题",内容为"消息内容"。

除了information之外,还有其他几种类型的对话框:warning、critical、question。它们分别表示警告、严重错误和询问。

QMessageBox还提供了一些按钮供用户选择,比如OK、Cancel等。可以通过设置标记来控制哪些按钮是可见的。默认情况下,QMessageBox会自动根据对话框类型选择合适的按钮QMessageBox还支持设置图标、复选框等特性,以满足更多的需求。

举例:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>
#include <QMessageBox>


class Dialog : public QDialog
{
    Q_OBJECT

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

    QLabel *qlabeltext;
    QPushButton *Questiong_button,*Information_button,*Warning_button,*Critical_button,*About_button,*AboutQt_button;

private slots:
    void Questiong_buttonfunc();
    void Information_buttonfunc();
    void Warning_buttonfunc();
    void Critical_buttonfunc();
    void About_buttonfunc();
    void AboutQt_buttonfunc();
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    resize(300,120);
    qlabeltext=new QLabel("测试");
    Questiong_button=new QPushButton("QuestiongMsg");  //问题消息框命令按钮
    Information_button=new QPushButton("InformationMsg");  //信息消息框命令按钮
    Warning_button=new QPushButton("WarningMsg");  //警告消息框命令按钮
    Critical_button=new QPushButton("CriticalMsg");  //错误消息框命令按钮
    About_button=new QPushButton("AboutMsg");  //关于消息框命令按钮
    AboutQt_button=new QPushButton("AboutQtMsg");  //关于qt

    QGridLayout *qglayout=new QGridLayout(this);
    qglayout->addWidget(qlabeltext,0,0);
    qglayout->addWidget(Questiong_button,1,0);
    qglayout->addWidget(Information_button,1,1);
    qglayout->addWidget(Warning_button,2,0);
    qglayout->addWidget(Critical_button,2,1);
    qglayout->addWidget(About_button,3,0);
    qglayout->addWidget(AboutQt_button,3,1);

    //连接槽函数
    connect(Questiong_button,SIGNAL(clicked()),this,SLOT(Questiong_buttonfunc()));
    connect(Information_button,SIGNAL(clicked()),this,SLOT(Information_buttonfunc()));
    connect(Warning_button,SIGNAL(clicked()),this,SLOT(Warning_buttonfunc()));
    connect(Critical_button,SIGNAL(clicked()),this,SLOT(Critical_buttonfunc()));
    connect(About_button,SIGNAL(clicked()),this,SLOT(About_buttonfunc()));
    connect(AboutQt_button,SIGNAL(clicked()),this,SLOT(AboutQt_buttonfunc()));

}

Dialog::~Dialog()
{
}

void Dialog::Questiong_buttonfunc()
{
    qlabeltext->setText("Questiong");
    //问号图标对话框  按钮OK和Canel  默认选中Cancel
    switch (QMessageBox::question(this,"问题消息对话框","你是否想退出应用程序,请选择",QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Cancel))
    {
    case QMessageBox::Ok:
        qlabeltext->setText("Questiong选择Ok");
        break;
    case QMessageBox::Cancel:
        qlabeltext->setText("Questiong选择Cancel");
        break;
    default:
        break;
    }
}
void Dialog::Information_buttonfunc()
{
    qlabeltext->setText("Information");
    //图标为i
    QMessageBox::information(this,"信息消息对话框","Information_测试");

}
void Dialog::Warning_buttonfunc()
{
    qlabeltext->setText("Warning");
    //图标为叹号  按钮OK和Canel  默认选中Cancel
    switch (QMessageBox::warning(this,"警告消息对话框","是否删除数据库kka.mdb,请注意数据安全操作"
                                  ,QMessageBox::Discard|QMessageBox::Cancel|QMessageBox::Save))
    {
    case QMessageBox::Discard:
        qlabeltext->setText("warning选择Discard");
        break;
    case QMessageBox::Cancel:
        qlabeltext->setText("warning选择Cancel");
        break;
    case QMessageBox::Save:
        qlabeltext->setText("warning选择Save");
        break;
    default:
        break;
    }
}
void Dialog::Critical_buttonfunc()
{
    qlabeltext->setText("critical");
    //图标为红×号
    QMessageBox::critical(this,"错误消息对话框","数据库文件备份错误请重新检测!");
}
void Dialog::About_buttonfunc()
{
    qlabeltext->setText("about");
    //图标
    QMessageBox::about(this,"关于消息对话框","测试about");
}
void Dialog::AboutQt_buttonfunc()
{
    qlabeltext->setText("aboutQt");
    //图标
    QMessageBox::aboutQt(this,"关于消息对话框");
}

效果:

 

 

 

 

 

自定义消息框

举例:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QMessageBox>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    QPushButton *qpb;
    QLabel *qlb1,*qlb2;
private slots:
    void customMessageBoxfunc();
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    qpb=new QPushButton("自定义消息框测试");
    qlb1=new QLabel("自定义消息框:");
    qlb2=new QLabel();

    QGridLayout *qglayout=new QGridLayout(this);
    qglayout->addWidget(qlb1,0,0);
    qglayout->addWidget(qpb,0,1);
    qglayout->addWidget(qlb2,1,0,1,2);

    //连接槽函数
    connect(qpb,SIGNAL(clicked()),this,SLOT(customMessageBoxfunc()));
}

Dialog::~Dialog()
{
}

void Dialog::customMessageBoxfunc()
{
    QMessageBox qmgbox;
    qmgbox.setWindowTitle("只因你太美简介");
    //添加按钮
    QPushButton *sing=qmgbox.addButton("唱",QMessageBox::ActionRole);
    QPushButton *jump=qmgbox.addButton("跳",QMessageBox::AcceptRole);
    QPushButton *rap=qmgbox.addButton("rap",QMessageBox::AcceptRole);

    //添加图标
    //用于设置窗口、按钮等控件的图标。它需要一个QPixmap类型的参数,表示要设置的图标。使用此函数可使控件显示指定的图标。
    qmgbox.setIconPixmap(QPixmap("d:\\222.png"));

    qmgbox.exec(); //执行这个自定以消息框
}

效果:

 

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

QMessageBox 消息框 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • linux var log目录作用,Linux系统/var/log/journal/垃圾日志清理 - 米扑博客

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal ls l etc logrotate d rw r r 1 root root 91 Apr 11 2018 bootlog rw r r
  • 李宏毅深度学习-回归

    目录 1 梯度下降 2 bias和variance 1 梯度下降 利用梯度下降寻找最优解是 如果在该点的梯度为负 向下 则需要增加参数大小 如果梯度为正 向上 则需要减小参数大小 计算时 减去学习率 偏导表示和梯度方向反向 即负的就要增加
  • Handler消息传递机制(一)

    1 定义 一套 Android 消息传递机制 2 作用 在多线程的应用场景中 将工作线程中需更新UI的操作信息 传递到 UI主线程 从而实现 工作线程对UI的更新处理 最终实现异步消息的处理 3 意义 问 为什么要用 Handler消息传递
  • python中保存np.save出错

    python中保存np save出错 代码如下 求大神解释一下
  • HTTP(S)协议详解

    1 什么是协议 协议 网络协议的简称 网络协议是通信计算机双方必须共同遵从的一组约定 如怎么样建立连接 怎么样互相识别等 只有遵守这个约定 计算机之间才能相互通信交流 粗俗理解协议就是 比如你的电脑和我的电脑要通信 我们之间的交流为什么互相
  • Mysql8的备份脚本 ,基于xtrabackup8.0

    Mysql8的备份脚本 基于xtrabackup8 0 注意 xtrabackup8 0与mysql8直接的版本依赖强 安装xtra后可查看支持的Mysql8版本 xtrabackup8 下载页面 https centos pkgs org
  • 后台管理系统布局以及跳转,点击菜单局部刷新,右侧显示对应界面完整版

    源码地址 https gitee com nggLee java funny 1 进入站长之家https sc chinaz com 2 搜索后台管理模版 下载一个 本次使用的模版 https sc chinaz com moban 160
  • CONST

    定义 编辑 const修饰的数据类型是指常类型 常类型的变量或对象的值是不能被更新的 目的 编辑 const 推出的初始目的 正是为了取代预编译指令 消除它的缺点 同时继承它的优点 主要作用 编辑 1 可以定义const常量 具有不可变性
  • 如何在一个中文大模型上,加入招投标字段标注的数据,搭建一个招投标字段解析的Transformer模型?

    ChatGPT方案1 在一个中文大模型上加入招投标字段标注的数据 并搭建招投标字段解析的Transformer模型可以通过以下步骤实现 收集并标注招投标相关的数据 可以使用现有的数据集 也可以通过爬虫技术获取相关数据 然后进行人工标注 标注
  • Ubuntu下安装和管理不同版本CMake,根据软件安装的需要选用不同版本的CMake

    0 Foreword 在安装VTK Visualization Toolkit 时发现需要用3 12版本以上的CMake才行 但是系统带的是3 10版本的 这时可以有两个方法 最简单粗暴就是把系统原本的CMake覆盖了 重新装新版 其次是麻
  • 快速了解时间敏感网络(TSN)_Part1

    在过去的几年间 以太网凭借开放的协议 良好的扩展性以及较高的带宽等优势为自己在车载领域赢得了一席之地 随着车载应用范围的扩大 也有越来越多的以太网技术涌现出来 今天我们就来聊一聊时间敏感网络 TSN 让大家快速了解这一技术 话不多说 大家坐
  • IDEA 快速生成项目结构的文档树形式

    参考文献 taodudu idea快速生成项目结构图 参考日期 2023 05 17 需求 在写文档的时候 想把项目结构输出成文档树的形式 实现 在 IDEA 中 可以点击下方 Terminal 按钮或 Alt F12 打开终端 同理 在命
  • 旋转矩阵 推导

    旋转变换 一 旋转矩阵 1 简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换 在仿射变换中的基本变换包括平移 旋转 缩放 剪切这几种 本文以及接下来的几篇文章重点介绍一下关于旋转的变换 包括二维旋转变换 三维旋转变换以及
  • vue3+vite+TS如何实现水印

    水印是通过canvas画图来实现的 首先需要创建一个ts的文件夹 之后在APP vue中全局加入水印 这样就可使全部页面都有水印 如果想要某个页面实现水印只需要单独写在页面即可 这里的判断主要是判断是否登录 登陆时再加上水印 如若不需要判断
  • 无需MS Office创建Excel!再C ++中以编程方式在Excel电子表格中创建图表

    图表是简洁显示数据的绝佳工具 此外 它们以可视方式表示数据 从而更易于使用大量数据 在需要显示数据 例如每月预算比较或产品采用率 的情况下 图表可能会有所帮助 有鉴于此 本文将教您如何使用C 在Excel文件中创建图表 使用C 在Excel
  • 多项目管理五大特点

    多项目管理建立在一般项目管理的基础上 所以它具有项目管理的所有特点 同时 多项目管理无论在内涵还是外延方面 都处在不断完善的发展中 具有区别于一般的单项目管理的特点 战略性 单项目管理注重项目本身的计划 执行及控制 并确保提交合格的最终项目
  • [python] ThreadPoolExecutor线程池

    初识 Python中已经有了threading模块 为什么还需要线程池呢 线程池又是什么东西呢 在介绍线程同步的信号量机制的时候 举得例子是爬虫的例子 需要控制同时爬取的线程数 例子中创建了20个线程 而同时只允许3个线程在运行 但是20个
  • LTS-局部时间步,自动调节步长技术

    在查看interFoam求解器时 会发现其中引入了LTS if LTS include setRDeltaT H 那么它的含义和功能是什么呢 LTS locall time step 是一种局部时间步求解器 该求解器建立于局部时间步下 它会
  • 小米官网(前一部分)html

  • QMessageBox 消息框

    QMessageBox QMessageBox是Qt框架提供的用于弹出消息对话框的类 它可以用于显示一些提示信息 警告信息 错误信息等 QMessageBox的使用非常简单 只需要调用静态方法即可弹出对话框 QMessageBox info