6

我正在使用 Qt 4.8 开发一个 Windows 应用程序,该应用程序使用

QMessageBox::information
QMessageBox::warning
...

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

如果出现这种声音,我该如何摆脱?

我发现它是从

void QAccessible::updateAccessibility()

但到目前为止,我还没有看到禁用它的方法。

4

1 回答 1

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();

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

希望有帮助。

于 2013-04-18T06:42:59.183 回答