如何禁用Qt QMessageBox播放的声音?

时间:2013-04-17 20:49:36

标签: windows qt

我正在使用使用

的Qt 4.8开发Windows应用程序
QMessageBox::information
QMessageBox::warning
...

当调用任何函数时,Windows默认播放声音。我的客户对此感到恼火,并希望在不更改Windows设置的情况下永久禁用此功能。

如果这听起来怎么摆脱?

我发现它是从

调用的
void QAccessible::updateAccessibility()

但到目前为止我还没有办法禁用它。

1 个答案:

答案 0 :(得分:5)

如果您使用其他QMessageBoxQMessageBox::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的{​​{1}}角色的任何事件/消息。

希望有所帮助。