#include <QMessageBox>
#include <QDialogButtonBox>
#include <QGridLayout>
class QLabel;
class CMessageBox : public QDialog
{
Q_OBJECT
public:
static QMessageBox::StandardButton information(QWidget *parent, const QString &title = "",
const QString &text = "", QMessageBox::StandardButtons buttons = QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::StandardButton::Ok);
static QMessageBox::StandardButton question(QWidget *parent, const QString &title = "",
const QString &text = "", QMessageBox::StandardButtons buttons = QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::StandardButton::Ok);
static QMessageBox::StandardButton warning(QWidget *parent, const QString &title = "",
const QString &text = "", QMessageBox::StandardButtons buttons = QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::StandardButton::Ok);
static QMessageBox::StandardButton critical(QWidget *parent, const QString &title = "",
const QString &text = "", QMessageBox::StandardButtons buttons = QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::StandardButton::Ok);
static QMessageBox::StandardButton success(QWidget *parent, const QString &title = "",
const QString &text = "", QMessageBox::StandardButtons buttons = QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton defaultButton = QMessageBox::StandardButton::Ok);
/*
* button0 -->return 0
* button1 -->return 1
* button2 -->return 2
*/
static int information(QWidget *parent, const QString &title, const QString &text, QString button0, QString button1 = "", QString button2 = "");
static int question(QWidget *parent, const QString &title, const QString &text, QString button0, QString button1 = "", QString button2 = "");
static int warning(QWidget *parent, const QString &title, const QString &text, QString button0, QString button1 = "", QString button2 = "");
static int critical(QWidget *parent, const QString &title, const QString &text, QString button0, QString button1 = "", QString button2 = "");
static int success(QWidget *parent, const QString &title, const QString &text, QString button0, QString button1 = "", QString button2 = "");
/*
* Pass the parent pointer, display it in the center of the parent form,
* otherwise display it in the center of the screen
*/
explicit z();
CMessageBox (QWidget *parent,bool);
CMessageBox (QDialog *parent, const QString &title = tr("Tip"), const QString &text = "",
QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::Ok);
CMessageBox (QDialog *parent, const QString &title = tr("Tip"), const QString &text = "", QString button0 = "", QString button1 = "", QString button2 = "");
~CMessageBox ();
QAbstractButton *clickedButton() const;
QMessageBox::StandardButton standardButton(QAbstractButton *button) const;
// 设置默认按钮
void setStandardButtons(QDialogButtonBox::StandardButtons buttons);
void setStandardButtons(QMessageBox::StandardButtons buttons);
void setDefaultButton(QPushButton *button);
void setDefaultButton(QMessageBox::StandardButton button);
QPushButton *button(QDialogButtonBox::StandardButton which);
QPushButton *button(QMessageBox::StandardButton which);
void setButtonText(QMessageBox::StandardButton button, const QString &text);
// 设置窗体标题
void setTitle(const QString &title);
void setMessageWindowIcon(QIcon icon);
// 设置提示信息
void setText(const QString &text);
// 设置窗体图标
void setIcon(const QString &icon);
// 添加控件-替换提示信息所在的QLabel
void addWidget(QWidget *pWidget);
int information();
int question();
int warning();
int critical();
int success();
protected:
void changeEvent(QEvent *event);
void closeEvent(QCloseEvent *event);
virtual void paintEvent(QPaintEvent *event);
private slots:
void onButtonClicked(QAbstractButton *button);
private:
int execReturnCode(QAbstractButton *button);
private:
QLabel *m_pIconLabel;
QLabel *m_pLabel;
QGridLayout *m_pGridLayout;
QVBoxLayout *m_pLayout;
QDialogButtonBox *m_pButtonBox;
QAbstractButton *m_pClickedButton;
QAbstractButton *m_pDefaultButton;
bool m_isTextByText = false;
};
自封装MessageBox
于 2024-02-29 00:09:49 首次发布