QMessageBox信息模态对话框详细使用教程,对象创建栈和指针类型,对话框的风格样式设置,不要浪费实时间自己封装了,图文并茂,看图说话。 您所在的位置:网站首页 模态框中获取表格数据的函数 QMessageBox信息模态对话框详细使用教程,对象创建栈和指针类型,对话框的风格样式设置,不要浪费实时间自己封装了,图文并茂,看图说话。

QMessageBox信息模态对话框详细使用教程,对象创建栈和指针类型,对话框的风格样式设置,不要浪费实时间自己封装了,图文并茂,看图说话。

2023-06-11 23:41| 来源: 网络整理| 查看: 265

QMessageBox 界面设计图展示效果【1】PC端使用QMessageBoxinformation (常规信息)warning (警告消息)critical (错误信息)about (关于信息,无按钮)question (问题信息?) 嵌入式平台使用QMessageBoxQMessageBox (栈对象)QMessageBox (指针对象)推荐使用这种 QMessageBox 缺点源码

这里分嵌入式和PC端两种

界面设计图

以上这些按钮全部通过直接转到槽即可 在这里插入图片描述

展示效果

所谓有图有真相,觉得是你项目需要的就拿去用 在这里插入图片描述 我用心设计的一个 在这里插入图片描述

【1】PC端使用QMessageBox

不需要自己设计和重新封装,直接调用 特色:显示文本的地方其实就是QLabel类,官方在里面设置了他的图片和文本而已。 按钮同样如此,是QPushButton。这个框会根据你的文本内容动态调整,如果你想固定大小,可以通过样式表设置

information (常规信息) [static] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

内部函数实现

void MainWindow::on_PB_mBox_clicked() { QMessageBox::information(this,"infomation","信息"); }

在这里插入图片描述

warning (警告消息) [static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) void MainWindow::on_PB_warning_clicked() { QMessageBox::warning(this,"warning","信息"); }

在这里插入图片描述

critical (错误信息) [static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton) void MainWindow::on_PB_error_clicked() { QMessageBox::critical(this,"critical","信息"); }

在这里插入图片描述

about (关于信息,无按钮)

显示一个简单的关于具有标题标题和文本文本的框。

[static] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text) void MainWindow::on_PB_abort_clicked() { QMessageBox::about(this,"about","信息"); QMessageBox::aboutQt(this,"aboutQt"); //显示Qt的官方介绍 }

在这里插入图片描述 在这里插入图片描述

question (问题信息?)

在指定的父小部件前面打开一个带有给定标题和文本的问题消息框。

[static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton) void MainWindow::on_PB_quest_clicked() { QMessageBox::question(this,"question","信息"); }

在这里插入图片描述

嵌入式平台使用QMessageBox

在嵌入式平台,有时是使用电阻屏和电容屏作为触摸屏幕。这个时候按钮文本都要设置的大一些,就要自己动点手了 这里分享两种,使用栈和指针的实现方式。

重点是样式设置

QMessageBox (栈对象)

我就不一个一个详细介绍了,根据自己的需要看一看吧。

void MainWindow::on_PB_struct_clicked() { QMessageBox box; //去除标题和框 box.setWindowFlag(Qt::FramelessWindowHint); //这种设置后,消息盒子无法移动了。 box.resize(300,200); //不起作用,原因未知。 //设置窗口标题 box.setWindowTitle("消息对话框"); //设置标题 box.setText(QString("温馨提示")); //设置里面的Label的标题 //设置新消息 box.setInformativeText("你应该马上去学习!!!,否则你会落后。。。"); //Label里面的信息 //设置按钮类型 box.setStandardButtons(QMessageBox::Ok | QMessageBox::No); //设置无按钮 box.setStandardButtons(QMessageBox::NoButton); //按钮默认选中 box.setDefaultButton(QMessageBox::No); //设置显示信息图标 //box.setIcon(QMessageBox::Icon::Information); box.setIcon(QMessageBox::Icon::NoIcon); //添加自定义按钮,可以通过样式表设置按钮和标签的颜色。 QPushButton *okButton = box.addButton(tr("确认"), QMessageBox::ButtonRole::ActionRole); //相当于占位符 没啥作用 QPushButton *noneButton = box.addButton(" ",QMessageBox::ButtonRole::ActionRole); QPushButton *cancelButton = box.addButton("取消",QMessageBox::ButtonRole::RejectRole); //方式1 okButton->setStyleSheet("QPushButton{padding:10px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png') 20 20 20 20 stretch stretch;}" "QPushButton:pressed{padding:10px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png') 20 20 20 20 stretch stretch;}"); cancelButton->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png');}" "QPushButton:pressed{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png');}"); //文本虽然看不见,但按钮确认存在,需要设置不可点击。 noneButton->setEnabled(false); noneButton->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:none;}"); // //尝试设置按钮的样式(方式2) 不用定义指针 不用担心内存回收 // foreach(auto i,box.buttons()){ // qDebug() // i->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png');}" // "QPushButton:pressed{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png');}"); // } // else { // i->setEnabled(false); // i->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;}"); // } // } box.setStyleSheet("QMessageBox{background-color: rgb(0, 170, 255);color:#ffffff;border-radius:15px;}" "QLabel{border-radius:15px;font-size:18px;min-width:150px;qproperty-alignment:AlignCenter;color:#ffffff;}" ); box.exec(); //模态事件一直循环,等待用户点击后响应。 if (box.clickedButton() == okButton) { // do something qDebug() //don't do qDebug() // do something qDebug() //don't do qDebug() Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_PB_mBox_clicked(); void on_PB_warning_clicked(); void on_PB_error_clicked(); void on_PB_struct_clicked(); void on_PB_abort_clicked(); void on_PB_quest_clicked(); void on_toolButton_clicked(); void on_PB_struct_2_clicked(); private: Ui::MainWindow *ui; QMessageBox *Pmsgbox = nullptr; }; #endif // MAINWINDOW_H

源文件

#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_PB_mBox_clicked() { QMessageBox::information(this,"infomation","信息"); } void MainWindow::on_PB_warning_clicked() { QMessageBox::warning(this,"warning","信息"); } void MainWindow::on_PB_error_clicked() { QMessageBox::critical(this,"critical","信息"); } void MainWindow::on_PB_abort_clicked() { QMessageBox::about(this,"about","信息"); QMessageBox::aboutQt(this,"aboutQt"); } void MainWindow::on_PB_quest_clicked() { QMessageBox::question(this,"question","信息"); } void MainWindow::on_PB_struct_clicked() { QMessageBox box; //去除标题和框 box.setWindowFlag(Qt::FramelessWindowHint); box.resize(300,200); //不起作用 //设置窗口标题 box.setWindowTitle("消息对话框"); //设置标题 box.setText(QString("温馨提示")); //设置里面的Label的标题 //设置新消息 box.setInformativeText("你应该马上去学习!!!,否则你会落后。。。"); //Label里面的信息 //设置按钮类型 box.setStandardButtons(QMessageBox::Ok | QMessageBox::No); //设置无按钮 box.setStandardButtons(QMessageBox::NoButton); //按钮默认选中 box.setDefaultButton(QMessageBox::No); //设置显示信息图标 //box.setIcon(QMessageBox::Icon::Information); box.setIcon(QMessageBox::Icon::NoIcon); //添加自定义按钮,可以通过样式表设置按钮和标签的颜色。 QPushButton *okButton = box.addButton(tr("确认"), QMessageBox::ButtonRole::ActionRole); //相当于占位符 没啥作用 QPushButton *noneButton = box.addButton(" ",QMessageBox::ButtonRole::ActionRole); QPushButton *cancelButton = box.addButton("取消",QMessageBox::ButtonRole::RejectRole); //方式1 okButton->setStyleSheet("QPushButton{padding:10px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png') 20 20 20 20 stretch stretch;}" "QPushButton:pressed{padding:10px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png') 20 20 20 20 stretch stretch;}"); cancelButton->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png');}" "QPushButton:pressed{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png');}"); //文本虽然看不见,但按钮确认存在,需要设置不可点击。 noneButton->setEnabled(false); noneButton->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:none;}"); // //尝试设置按钮的样式(方式2) 不用定义指针 不用担心内存回收 // foreach(auto i,box.buttons()){ // qDebug() // i->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_7_d.png');}" // "QPushButton:pressed{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;border-image:url(':/pic/button_10_d.png');}"); // } // else { // i->setEnabled(false); // i->setStyleSheet("QPushButton{border-radius:15px;color: rgb(255, 255, 255);font-size:30px;}"); // } // } box.setStyleSheet("QMessageBox{background-color: rgb(0, 170, 255);color:#ffffff;border-radius:15px;}" "QLabel{border-radius:15px;font-size:18px;min-width:150px;qproperty-alignment:AlignCenter;color:#ffffff;}" ); box.exec(); //模态事件一直循环,等待用户点击后响应。 if (box.clickedButton() == okButton) { // do something qDebug() //don't do qDebug() // do something qDebug() //don't do qDebug() qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有