QT QMessageBox 按钮文字更改为中文

本文介绍了两种在QT中实现自定义中文消息框的方法。一种是通过重写窗口内容来实现带有确定按钮的消息提示框和返回值的消息确认框;另一种则是利用QMessageBox的警告对话框直接设置自定义按钮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提条件:QT工程支持中文显示(非显示乱码)

方式一:重写窗口内容

//提示窗口

void MyMessageBox(QString title, QString message)

{
QMessageBox mymessage(QMessageBox::Warning, title, message);
mymessage.setStandardButtons(QMessageBox::Ok);
mymessage.setButtonText(QMessageBox::Ok, QString("确 定"));
mymessage.exec();
}
//带返回值的窗口
int MyMessageBox2(QString title, QString message)
{
QMessageBox mymessage(QMessageBox::Critical, title, message);
QPushButton *btnYes = mymessage.addButton(("是"), QMessageBox::YesRole);
QPushButton *btnNo = mymessage.addButton(("否"), QMessageBox::NoRole);
mymessage.exec();
if ((QPushButton*)mymessage.clickedButton() == btnYes)
{
return 1;
}
return 0;

}

方式二:

//创建自定义窗口按钮

if (0 == QMessageBox::warning(this, tr("注意"), tr(" 是否写入??"), tr("是"), tr("否")))

{

        //0对应“是”

        //1对应“否”

        //2对应下一个按钮,以此类推,可添加多个自定义按钮

}


建议使用方式二,简单粗暴。

### 设置或修改 QtQMessageBox 按钮的位置 在 Qt 的 `QMessageBox` 类中,默认情况下按钮的位置是由系统的风格决定的。如果需要自定义按钮的位置,则可以通过创建一个继承于 `QDialog` 或者完全定制化的对话框来实现更灵活的功能。 虽然标准的 `QMessageBox` 不支持直接调整按钮位置,但可以借助 `setLayout()` 方法或者通过子类化重新布局控件的方式完成这一需求[^1]。下面是一个简单的示例代码展示如何手动设置按钮的位置: ```cpp #include <QApplication> #include <QMessageBox> #include <QPushButton> #include <QVBoxLayout> void custom_message_box(const QString &title, const QString &text) { // 创建消息框对象 QMessageBox msgBox; msgBox.setWindowTitle(title); msgBox.setText(text); // 添加标准按钮并获取它们的指针 QPushButton *yesButton = msgBox.addButton(QMessageBox::Yes); QPushButton *noButton = msgBox.addButton(QMessageBox::No); // 获取当前布局并将按钮移动到指定位置 QGridLayout *layout = static_cast<QGridLayout*>(msgBox.layout()); layout->addWidget(yesButton, 2, 0); // 将 Yes 按钮放置在 (2, 0) layout->addWidget(noButton, 2, 1); // 将 No 按钮放置在 (2, 1) // 显示消息框 msgBox.exec(); } int main(int argc, char *argv[]) { QApplication app(argc, argv); // 调用自定义的消息框函数 custom_message_box("二哈严重警告", "串口未打开"); return app.exec(); } ``` 上述代码展示了如何通过访问 `QMessageBox` 的内部布局 (`QGridLayout`) 并重新安排按钮的位置来达到自定义效果。注意这里假设了默认布局为网格布局(通常如此),因此可以直接操作其单元格索引来改变按钮排列方式[^2]。 #### 关键点说明: - 使用 `addButton()` 函数添加按钮,并返回指向这些按钮的对象以便进一步处理。 - 利用了 `static_cast<>` 来转换 `QMessageBox` 布局至具体类型的指针,从而允许对其结构进行更多控制。 - 对按钮的具体定位依赖于目标平台上的实际渲染行为可能有所差异,在跨平台开发时需测试兼容性问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值