QT 中文版信息提示框

引言:在QT设计UI程序过程中,整套系统都是中文版本,然而信息提示默认只有中文,难免有点小纠结,这里针对QMessageBox稍微做了一点点改进,使其支持完美的中文提示框。调用方式非常简单,只需要将QMessageBox调用地方,改为QShowMessage即可(头文件引用不可缺少)。

头文件声明:

#ifndef QSHOWMESSAGE_H
#define QSHOWMESSAGE_H

#include <QMessageBox>
#include <QString>

class QShowMessage
{
public:
   static int information(QWidget *parent, const QString &title,
                           const QString& text,
                           int button0, int button1 = 0, int button2 = 0);
    inline static QMessageBox::StandardButton information(QWidget *parent, const QString &title,
                                                          const QString& text,
                                                          QMessageBox::StandardButton button0, QMessageBox::StandardButton button1 = QMessageBox::StandardButton::NoButton)
    { return QMessageBox::StandardButton(information(parent, title, text, QMessageBox::StandardButtons(button0), QMessageBox::StandardButtons(button1))); }

    static int question(QWidget *parent, const QString &title,
                        const QString& text,
                        int button0, int button1 = 0, int button2 = 0);
    inline static int question(QWidget *parent, const QString &title,
                               const QString& text,
                               QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
    { return question(parent, title, text, QMessageBox::StandardButtons(button0), button1); }

    static int warning(QWidget *parent, const QString &title,
                       const QString& text,
                       int button0, int button1, int button2 = 0);
    inline static int warning(QWidget *parent, const QString &title,
                              const QString& text,
                              QMessageBox::StandardButton button0, QMessageBox::StandardButton button1)
    { return warning(parent, title, text, QMessageBox::StandardButtons(button0), button1); } 
};

#endif // QSHOWMESSAGE_H

源文件定义:

#include "QShowMessage.h"

inline void setMessageBoxButtonText(QMessageBox& box, const QMessageBox::StandardButtons buttons)
{
    if ((buttons & QMessageBox::Ok) == QMessageBox::Ok)
        box.setButtonText (QMessageBox::Ok, QString("确 定"));
    if ((buttons & QMessageBox::Cancel) == QMessageBox::Cancel)
        box.setButtonText (QMessageBox::Cancel, QString("取 消"));
    if ((buttons & QMessageBox::Yes) == QMessageBox::Yes)
        box.setButtonText (QMessageBox::Yes, QString("是"));
    if ((buttons & QMessageBox::No) == QMessageBox::No)
        box.setButtonText (QMessageBox::No, QString("否"));
    if ((buttons & QMessageBox::Save) == QMessageBox::Save)
        box.setButtonText (QMessageBox::Save, QString("保 存"));
    if ((buttons & QMessageBox::SaveAll) == QMessageBox::SaveAll)
        box.setButtonText (QMessageBox::SaveAll, QString("保存所有"));
    if ((buttons & QMessageBox::Open) == QMessageBox::Open)
        box.setButtonText (QMessageBox::Open, QString("打 开"));
    if ((buttons & QMessageBox::YesToAll) == QMessageBox::YesToAll)
        box.setButtonText (QMessageBox::YesToAll, QString("全 是"));
    if ((buttons & QMessageBox::NoToAll) == QMessageBox::NoToAll)
        box.setButtonText (QMessageBox::NoToAll, QString("全 否"));
    if ((buttons & QMessageBox::Abort) == QMessageBox::Abort)
        box.setButtonText (QMessageBox::Abort, QString("终 止"));
    if ((buttons & QMessageBox::Retry) == QMessageBox::Retry)
        box.setButtonText (QMessageBox::Retry, QString("重 试"));
    if ((buttons & QMessageBox::Ignore) == QMessageBox::Ignore)
        box.setButtonText (QMessageBox::Ignore, QString("忽 略"));
    if ((buttons & QMessageBox::Close) == QMessageBox::Close)
        box.setButtonText (QMessageBox::Close, QString("关 闭"));
    if ((buttons & QMessageBox::Apply) == QMessageBox::Apply)
        box.setButtonText (QMessageBox::Apply, QString("应 用"));
    if ((buttons & QMessageBox::Help) == QMessageBox::Help)
        box.setButtonText (QMessageBox::Help, QString("帮 助"));
    if ((buttons & QMessageBox::Reset) == QMessageBox::Reset)
        box.setButtonText (QMessageBox::Reset, QString("重 置"));
    if ((buttons & QMessageBox::RestoreDefaults) == QMessageBox::RestoreDefaults)
        box.setButtonText (QMessageBox::RestoreDefaults, QString("恢复默认"));
}

int QShowMessage::information(QWidget *parent, const QString &title,
                       const QString& text,
                       int button0, int button1/* = 0*/, int button2/* = 0*/)
{
    QMessageBox::StandardButtons buttons = QMessageBox::StandardButton(button0)|QMessageBox::StandardButton(button1)|QMessageBox::StandardButton(button2);
    QMessageBox box(QMessageBox::Information, title, text, buttons, parent);
    box.setStandardButtons(buttons);
    setMessageBoxButtonText(box, buttons);
    return box.exec ();
}


int QShowMessage::question(QWidget *parent, const QString &title,
                    const QString& text,
                    int button0, int button1/* = 0*/, int button2/* = 0*/)
{
    QMessageBox::StandardButtons buttons = QMessageBox::StandardButton(button0)|QMessageBox::StandardButton(button1)|QMessageBox::StandardButton(button2);
    QMessageBox box(QMessageBox::Question, title, text, buttons, parent);
    box.setStandardButtons(buttons);
    setMessageBoxButtonText(box, buttons);
    return box.exec ();
}


int QShowMessage::warning(QWidget *parent, const QString &title,
                   const QString& text,
                   int button0, int button1, int button2/* = 0*/)
{
    QMessageBox::StandardButtons buttons = QMessageBox::StandardButton(button0)|QMessageBox::StandardButton(button1)|QMessageBox::StandardButton(button2);
    QMessageBox box(QMessageBox::Warning, title, text, buttons, parent);
    box.setStandardButtons(buttons);
    setMessageBoxButtonText(box, buttons);
    return box.exec ();
}

用例说明:

// 替换前的代码
void MainWindow::closeEvent(QCloseEvent *event)
{
    if (QMessageBox::Yes == QMessageBox::question(this, "提示", "您确定要退出软件吗?", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes) ){
        event->accept();
    }
    else {
        event->ignore();
    }
}

// 替换后的代码
void MainWindow::closeEvent(QCloseEvent *event)
{
    if (QMessageBox::Yes == QShowMessage::question(this, "提示", "您确定要退出软件吗?", QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes) ){
        event->accept();
    }
    else {
        event->ignore();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值