无法更新 qt 对话框中的按钮

Unable to update the buttons in qt dialogue box

本文关键字:按钮 对话框 qt 更新      更新时间:2023-10-16

我正在尝试更改qt对话框的语言以及2个按钮"确定"和"关闭",但我无法这样做,我只能更改短信的语言。

PFB 代码 :

void updateDiagWidgets() {
QString qstr = QString::fromStdString(MY_String);
QString qyes = QString::fromStdString(MY_String_YES);
QString qno = QString::fromStdString(MY_String_NO);
if(gDiagBox != NULL) {
    gDiagBox->setText(qstr);
    replaint();
    QPushButton* yesBtn = gDiagBox->addButton(qyes, QMessageBox::YesRole);
    gDiagBox->addButton(qno, QMessageBox::NoRole);
    gDiagBox->setDefaultButton(yesBtn);
}
else {
 QMessageBox *msgBox = new QMessageBox(browser);
 if(msgBox != NULL) {
    DEBUG("updateDiagWidgets Message string is %sn",MY_String.c_str());
    DEBUG("updateDiagWidgets YES string is %sn",MY_String_YES.c_str());
    DEBUG("updateDiagWidgets NO string is %sn",MY_String_NO.c_str());
    msgBox->setWindowTitle("");
    msgBox->setText(qstr);
    msgBox->setParent(0);
    msgBox->setWindowFlags(Qt::Window);
    msgBox->setWindowFlags(Qt::BypassWindowManagerHint);
    QPushButton* yesBtn = msgBox->addButton(qyes, QMessageBox::YesRole);
    msgBox->addButton(qno, QMessageBox::NoRole);
    msgBox->setDefaultButton(yesBtn);
    gDiagBox = msgBox;
    DEBUG("updateDiagWidgets done msgBox updation");
 }
 else {
    DEBUG("updateDiagWidgets Error allocating memory for dialog box");
 }
}
}

我可以在上面的代码中单独更改 qstr 的语言,但我无法更改 qyes 和 qno 的语言。请帮我解决这个问题。

提前谢谢。

你在应用程序中使用了tr()吗? http://doc.qt.io/qt-5/i18n-source-translation.html