#include "messageBox.h" #include "ui_messageDialog.h" //MessageBoxBtn g_msgBoxBtn = btn_Null; MessageBox::MessageBox(QWidget *parent) : QDialog(parent) , ui(new Ui::messageDialog) { ui->setupUi(this); if(QSysInfo::kernelType() == "linux") { //Linux下默认的Qt::Dialog即使有父窗口也无法按照子窗口的行为进行展示,并且最大、最小按钮不好关闭,因此需要去掉Dialog属性,随之而来的问题是,模态无法起作用 setWindowFlags(windowFlags() & ~Qt::Dialog); setStyleSheet("QDialog{border: 1px solid rgb(110,110,110);border-radius:5px;}"); } else { setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint);//去掉关闭按钮和图标 setFixedSize(width(), height()); //不可缩放 } connect(ui->btnConfrim, SIGNAL(clicked()), this, SLOT(onBtnClicked_confirm())); connect(ui->btnYes, SIGNAL(clicked()), this, SLOT(onBtnClicked_yes())); connect(ui->btnNo, SIGNAL(clicked()), this, SLOT(onBtnClicked_no())); } MessageBox::~MessageBox() { delete ui; } void MessageBox::setType(MessageBoxType type) { if(type == t_information) { ui->typeLabel->setStyleSheet("border-image: url(:/img/images/icon_information.png);"); ui->stackedWidget->setCurrentIndex(0); } else if(type == t_question) { ui->typeLabel->setStyleSheet("border-image: url(:/img/images/icon_question.png);"); ui->stackedWidget->setCurrentIndex(1); } else if(type == t_warning) { ui->typeLabel->setStyleSheet("border-image: url(:/img/images/icon_no.png);"); ui->stackedWidget->setCurrentIndex(0); } } void MessageBox::setMessage(MessageBoxType type,const QString& strTitle,const QString& strContent) { setType(type); ui->labelTitle->setText(strTitle); setWindowTitle(strTitle); ui->labelContent->setText(strContent); } int MessageBox::show(MessageBoxType type,const QString& strTitle,const QString& strContent) { MessageBox msgBox; msgBox.setMessage(type, strTitle, strContent); return msgBox.exec(); } void MessageBox::onBtnClicked_confirm() { // hide(); accept(); } void MessageBox::onBtnClicked_yes() { // g_msgDlgBtn = btn_Yes; // hide(); accept(); } void MessageBox::onBtnClicked_no() { // g_msgDlgBtn = btn_No; // hide(); reject(); }