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

RED*_*AIR 4 windows qt

我正在使用Qt 4.8使用的Windows应用程序

QMessageBox::information
QMessageBox::warning
...
Run Code Online (Sandbox Code Playgroud)

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

如果这声音怎么能摆脱?

我发现它是从中调用的

void QAccessible::updateAccessibility()
Run Code Online (Sandbox Code Playgroud)

但到目前为止我还没有找到一种方法来禁用它.

phy*_*att 5

如果您使用不同的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();
Run Code Online (Sandbox Code Playgroud)

否则,要禁用警告声音,您可能需要在应用上使用全局事件过滤器来捕获QAccessibility具有该角色的任何事件/消息QAccessible::AlertMessage.

希望有所帮助.