首页 > 其他分享 >【Qt】消息对话框 QMessageBox

【Qt】消息对话框 QMessageBox

时间:2024-09-04 22:25:34浏览次数:11  
标签:设置 messageBox Qt 对话框 QMessageBox 按钮 MainWindow

消息对话框 QMessageBox

QMessageBox 用于显示一个消息给用户,,并且让用户进行一个简单的选择。

消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为⽤⼾提⽰重要信息,强制⽤⼾进⾏选择操作。

例子:创建一个消息对话框

(1)在Qt Designer中设置一个按钮

(2)右键点击按钮,转到槽,编辑点击按钮的槽函数

(3)创建消息对话框QMessageBox,并设置对话框标题与对话框文本

(4)设置图标

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

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

(4)设置标准选项按钮

(5)设置模态对话框

(6)运行程序

(7)代码展示

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

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

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


void MainWindow::on_pushButton_clicked()
{
    // 创建出一个消息对话框
    QMessageBox* messageBox = new QMessageBox(this);
    // 设置对话框标题
    messageBox->setWindowTitle("消息对话框");
    // 设置对话框文本
    messageBox->setText("消息对话框文本");

    // 设置图标
    messageBox->setIcon(QMessageBox::Information);

    // 设置选项按钮
    messageBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save | QMessageBox::Cancel);

    // 设置模态对话框
    messageBox->exec();
}

例子:在QMessageBox设置自定义按钮

(1)在上述例子中,取消使用标准定义的按钮,设置自定义按钮

该函数提供的俩个参数,一个是button抽象类,一个是button所起到的作用。

(2)使用自定义按钮,可以使用connect连接信号槽,来针对当前点击的按钮进行一些相关操作。

(3)标准规定的按钮中,没法进行信号槽的连接

用户点击按钮,是对话框关闭之后,此时可以通过获取 exec 的返回值,来了解用户点击的是哪一个按钮,从而执行一些逻辑。

(4)代码展示

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QPushButton>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

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


void MainWindow::on_pushButton_clicked()
{
    // 创建出一个消息对话框
    QMessageBox* messageBox = new QMessageBox(this);
    // 设置对话框标题
    messageBox->setWindowTitle("消息对话框");
    // 设置对话框文本
    messageBox->setText("消息对话框文本");

    // 设置图标
    messageBox->setIcon(QMessageBox::Information);

    // 设置选项按钮
     messageBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save | QMessageBox::Cancel);
//    QPushButton* button = new QPushButton("按钮");
//    messageBox->addButton(button, QMessageBox::AcceptRole);
//    connect(button, &QPushButton::clicked, this, &MainWindow::handle);

    // 设置模态对话框
    int reslut = messageBox->exec();
    if(reslut == QMessageBox::Ok)
    {
        qDebug() << "Ok";
    }
    else if(reslut == QMessageBox::Save)
    {
        qDebug() << "Save";
    }
    else if(reslut == QMessageBox::Cancel)
    {
        qDebug() << "Cancel";
    }
}

void MainWindow::handle()
{
    qDebug() << "button";
}

例子:快捷创建消息对话框

(1)在Qt Designer中创建一个按钮

(2)编辑点击按钮的槽函数

(3)快捷创建消息对话框

查看该函数的四个参数: 

(4)获取该函数的返回值,并进行判定

(5)执行程序

标签:设置,messageBox,Qt,对话框,QMessageBox,按钮,MainWindow
From: https://blog.csdn.net/dab112/article/details/141354697

相关文章

  • 【Qt】对话框
     对话框的基本概念    在使用某些网站的时候,有时会不经意间弹出各种奇奇怪怪的窗口。这种窗口就被称之为对话框。对话框往往是用户与用户之间进行“短平快"的操作。对话框是GUI程序中不可或缺的组成部分。⼀些不适合在主窗⼝实现的功能组件可以设置在对话框中。......
  • 基于Shiny的LLM对话框
    Shiny介绍     Shiny最初是一个R语言的包,由RStudio开发,它的主要作用是允许用户创建交互式的Web应用程序而无需深入学习复杂的Web开发技术,我相信做R开发的同学基本都知道这个R包。以下是Shiny的一些具体作用:简化Web开发:Shiny提供了一种简便的方法来创建......
  • qt之QTableview右击显示菜单选项
     由于上下文菜单添加的action后右击鼠标也会触发QAction的triggered信号,所以添加了事件过滤,并且安装给QMenu的实列化。(代码粘贴复制到vs即可运行)file.h--------------------------------------------------------------------------------------------------#include<QtWidge......
  • 2-STM32F103+ML307(中移4G Cat1)基本控制篇(自建物联网平台)-整体运行测试-Android扫
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/ML307/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明这节测试一......
  • Qt项目转换为VS项目
    我们使用VS的“打开本地文件夹”打开我们使用QtCreator创建的项目打开以后资源管理器内容如下图所示如果希望将Qt项目转为VS项目,需要安装下面的扩展,点击扩展-->管理扩展,然后输入qt进行搜索,安装:QtVisualStudioTools在提示下载完成以后,需要关闭VS进行扩展安装,安装过程中可......
  • 如何使用四博智联ESP32-C6开发板的Zigbee功能,将其作为MQTT+Zigbee网关来控制Zigbee多
    参考了乔帮主的:ESP32-C6开发板Zigbee功能抢先体验(MQTT+Zigbee网关+灯)DF创客社区关于ZigBee的原理和知识,这里就不重复了,网上的资料非常的丰富。乐鑫为Zigbee功能,提供了专门的SDK支持:GitHub-espressif/esp-zigbee-sdk:EspressifZigbeeSDK在ESP-IDF中,也专门提供了实例......
  • 如何在Pyqt中渲染使用svggraphicsItem的SVG字形?
    在使用PyQt构建应用程序时,有时需要在图形用户界面中渲染SVG(可缩放矢量图形)文件,特别是当你需要显示图标或自定义字体时。QGraphicsSvgItem是PyQt提供的一个类,用于在QGraphicsView或QGraphicsScene中渲染SVG图像。然而,如果你想使用SVG字形或通过编程方式生成矢量图形,QS......
  • QT项目学习
    打开QtCreator界面选择NewProject或者选择菜单栏【文件】-【新建文件或项目】菜单项弹出NewProject对话框,选择QtWidgetsApplication选择【Choose】按钮,弹出如下对话框设置项目名称和路径,按照向导进行下一步选择编译套件向导会默认添加一个继承自QMainWindow的类,可以......
  • 物联网通讯协议MQTT、NB-IOT、Zigbee、CoAP、RFID、BLUETOOTH、NFC、4G和HTTP
    物联网协议集一、按网络四层协议分类NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持)而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器,或者对接云平台厂商(软件支持)所以(MQTT,COAP,HTTP)是居于(NB-IoT,LORA,WIFI,蓝牙,zigbee,4G)的上层协议物理层中二、按需要网关来分......
  • MQTT揭秘:为什么它是物联网首选的通信协议
    MQTT协议简介概览MQTT是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、智慧城市、远程医疗、电力、石油与能源等领......