Qt下QMessageBox的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt下QMessageBox的问题相关的知识,希望对你有一定的参考价值。
现在我在QT下要做一个闹钟程序,时间到了弹出对话框,然后循环播放音乐,你点击对话框的OK按钮的时候退出对话框并且关音乐。然后对话框是这样
void Window::dialogup()
QMessageBox::information(0,"Alarm","Warning:You set the time is now!");//对话框内容
void Window::comToCur()
if( QVariant(QTime::currentTime()).toString() == QVariant(TimeEdit1->time()).toString() )
QApplication::beep();
dialogup();
//设置的时间和系统时间对比,时间到了弹出对话框
然后播放音乐是
void Window::play()
QSound::play("./mysound/a.wav");
void Window::dialogdown()
QSound::stop("./mysound/a.wav");
//这两段估计还有错,这个是关闭对话框,音乐循环的部分还没写
我现在想利用QMessageBox弹出的OK按钮,点击他退出对话框并且关闭音乐,这个怎么实现。QMessageBox里面也没具体的对OK按钮的操作,刚学Qt不久编程能力也有限,各位帮帮忙(另外Qt下可以直接这样播放WAV音乐吗?为什么我调用Qapplication::beep()来用系统默认铃声的时候就没有什么声音响起来?)
还有可以的话帮我编改下实现音乐播放部分的代码。谢谢了
100分还只有一个回答,是有返回值,但是OK能做什么?点击下就退出了。。
3L大概就是这个意思啦,不过我决定不搞这个播放的功能了。谢谢了。
QMessageBox msg;
msg.setText(tr("是否要退出音乐播放?"));
QAbstractButton *confirmButton = msg.addButton(tr("OK"), QMessageBox::ActionRole);
QAbstractButton *cancelButton = msg.addButton(tr("CANCEL"), QMessageBox::ActionRole);
msg.exec();
if(msg.clickedButton() == confirmButton)
//这里写你的关闭音乐播放函数
//退出函数
else
return;
你看是这个意思不? 参考技术A QMessageBox::information是有返回值的
int ret = QMessageBox::information(0, "My Application",
"The document has been modified.\n",
QMessageBox::Ok);
if ( ret == QMessageBox::Ok )
qDebug()<<"ok";
else
qDebug()<<"bad";
参考技术B 抢分,uP!!
如何禁用 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】:如果您使用不同的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();
否则,要禁用警告声音,您可能需要在您的应用上使用global event filter 来捕捉来自QAccessibility
的任何事件/消息,角色为QAccessible::AlertMessage
。
希望对您有所帮助。
【讨论】:
您还需要调用msgBox.setStandardButtons(QMessageBox::Ok);
之类的方法来显示消息框。以上是关于Qt下QMessageBox的问题的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.1 - QMessageBox 错误?如果在隐藏 QDialog 时调用 QMessageBox,则程序退出(0)