加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 03:53:30 所属栏目:Windows 来源:网络整理
导读:我正在使用Qt 4.8使用的 Windows应用程序 QMessageBox::informationQMessageBox::warning... 当调用任何函数时,Windows默认播放声音.我的客户对此感到恼火,并希望在不更改Windows设置的情况下永久禁用此功能. 如果这声音怎么能摆脱? 我发现它是从中调用的 v
我正在使用Qt 4.8使用的 Windows应用程序

QMessageBox::information
QMessageBox::warning
...

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

如果这声音怎么能摆脱?

我发现它是从中调用的

void QAccessible::updateAccessibility()

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

解决方法

如果您使用不同的QMessageBox,QMessageBox :: about,或者自己创建QMessageBox并自行设置 iconPixmap和所有内容,则不应该发出哔哔声.

QMessageBox::warning(0,"Test","test"); // Plays alert

QMessageBox::about(0,"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角色的任何事件/消息.

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读