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