Qt关于QMessageBox禁用关闭按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt关于QMessageBox禁用关闭按钮相关的知识,希望对你有一定的参考价值。

Qt关于QMessageBox禁用关闭按钮自定义一个QMessageBox msg(参数略...)
用msg.setWindowFlags(msg.windowFlags ^ Qt::WindowCloseButtonHint)想禁用关闭按钮,但是没有效果是为什么,这个代码用在widget的窗口上是可行的

参考技术A 你在弹出qmessagebox的那个slot函数里,加一个判断,如果当前的checkbox的状态是checked,那么就不要弹出qmessagebox。

如何禁用 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】:

如果您使用不同的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 的任何事件/消息,角色为QAccessible::AlertMessage

希望对您有所帮助。

【讨论】:

您还需要调用 msgBox.setStandardButtons(QMessageBox::Ok); 之类的方法来显示消息框。

以上是关于Qt关于QMessageBox禁用关闭按钮的主要内容,如果未能解决你的问题,请参考以下文章

Qt中提示框QMessageBox怎样进行美化!

可能的 Qt5 错误:调用 setFixedSize() 会禁用主窗口的关闭按钮(在 Win7 下)

QT中父窗口响应子窗口动作

qt界面怎么去掉窗口关闭的按钮

求助QT窗口最大,最小,关闭按钮问题

MFC禁用关闭按钮