请问谁知道怎么把Qt中的QMessageBox中显示的ok和cancel改成汉字啊 确定和取消啊!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问谁知道怎么把Qt中的QMessageBox中显示的ok和cancel改成汉字啊 确定和取消啊!相关的知识,希望对你有一定的参考价值。
#include <QApplication>#include <QPushButton>
#include <QMessageBox>
#include <QTextCodec>
int main(int argc,char *argv[])
QApplication a(argc,argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QPushButton *okbtn=new QPushButton(QObject::tr("确定"));
QPushButton *cancelbtn=new QPushButton(QObject::tr("取消"));
QMessageBox *mymsgbox=new QMessageBox;
mymsgbox->addButton(okbtn,QMessageBox::AcceptRole);
mymsgbox->addButton(cancelbtn,QMessageBox::RejectRole);
mymsgbox->show();
a.exec();
//代码不用解释了吧,你可以查看QT助手,主要是成员函数addButton的使用,很简单
上面是4.8的代码,如果你是在5.1的版本下,要防止汉子变乱码,一种方法是源代码以无BOM格式保存,另一种是用QTextCodec类,QT助手有使用方法
参考技术A 1、QT的国际化可以自动翻译的。2、自己做个Box
如何禁用 Qt QMessageBox 播放的声音?
【中文标题】如何禁用 Qt QMessageBox 播放的声音?【英文标题】:How can I disable sounds played by Qt QMessageBox? 【发布时间】:2013-04-17 20:49:35 【问题描述】:我正在使用 Qt 4.8 开发一个使用
的 Windows 应用程序QMessageBox::information
QMessageBox::warning
...
当调用这些函数中的任何一个时,windows 默认播放声音。我的客户对此感到恼火,并希望在不更改 Windows 设置的情况下永久禁用此功能。
如果出现这种声音,我该如何消除?
我发现它是从
void QAccessible::updateAccessibility()
但我目前还没有找到禁用它的方法。
【问题讨论】:
我认为这是一个 Windows 功能。 不,声音是从 Qt 主动调用的。 我不这么认为,QMessageBox 根本没有提到声音,而且我很确定 QMessageBox 上没有声音,因为我禁用了 Windows 声音方案。 我在调试器中单步调试了源代码。声音在void QAccessible::updateAccessibility()中播放 在他们的文档中 QAccessible 中有一个 SoundPlayed 组件。至于消息框,我知道 QMessageBox 的静态方法调用会发出声音的原生消息框。尝试制作一个 QMessageBox 消息,使用它的属性设置它,然后在该对象上调用 .exec() 。据说可以有不同的音频结果。可能值得一试。 【参考方案1】:如果您使用不同的QMessageBox
、QMessageBox::about
,或创建自己的QMessageBox
实例并自己设置iconPixmap
和所有内容,则不应听到哔哔声。
QMessageBox::warning(0, "Test", "test"); // Plays alert
QMessageBox::about(0, "Test", "test"); // No sound, but no icon either
QMessageBox msgBox;
msgBox.setParent(0);
msgBox.setWindowTitle("Test");
msgBox.setText("test");
if(false)
msgBox.setIcon(QMessageBox::Warning);// makes sound
else
QPixmap p;
p.load("warning.png");
msgBox.setIconPixmap(p);// no sound, but with icon
msgBox.exec();
否则,要禁用警告声音,您可能需要在您的应用上使用global event filter 来捕捉来自QAccessibility
的任何事件/消息,角色为QAccessible::AlertMessage
。
希望对您有所帮助。
【讨论】:
您还需要调用msgBox.setStandardButtons(QMessageBox::Ok);
之类的方法来显示消息框。以上是关于请问谁知道怎么把Qt中的QMessageBox中显示的ok和cancel改成汉字啊 确定和取消啊!的主要内容,如果未能解决你的问题,请参考以下文章