自封装MessageBox

#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;
};

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值