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

C++ 无法更新qt对话框中的按钮,c++,qt,C++,Qt,我正试图改变qt对话框的语言以及两个按钮“OK”和“CLOSE”,但我不能这样做,我只能改变文字信息的语言 PFB代码: void updateDiagWidgets() { QString qstr = QString::fromStdString(MY_String); QString qyes = QString::fromStdString(MY_String_YES); QString qno = QString::fromStdString(MY_String_NO); if(gDi

我正试图改变qt对话框的语言以及两个按钮“OK”和“CLOSE”,但我不能这样做,我只能改变文字信息的语言

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 %s\n",MY_String.c_str());
    DEBUG("updateDiagWidgets YES string is %s\n",MY_String_YES.c_str());
    DEBUG("updateDiagWidgets NO string is %s\n",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()

您可以通过github、drive或类似工具共享整个项目,因为您的示例不完整,例如,在显示小部件时,请不要指明是否要更改文本。我希望在更改语言时,翻译后的“是”和“否”字符串出现在qt消息框按钮上。请知道,我们已经有一个函数来更改语言,我有更改的字符串,我只想在语言更改后动态更新更改的字符串。什么语言?在代码中没有看到这一点,因此我要求您共享完整的代码,因为如果显示的代码不完整。您在这里做了一些奇怪的事情。您正在添加一组新按钮,即使您的消息框中已有按钮。用于从消息框中获取现有按钮,并为其设置新文本。