我正在构建一个Qt Symbian项目,我想向用户显示应在几秒后自动关闭的通知.我看到诺基亚在他们的ui中使用了很多.
现在我正在使用下面的代码,以便用户可以关闭QMessageBox但我希望它能在1或2秒后自动关闭QMessageBox.我怎么能用Qt做到这一点?
QMessageBox msgBox;
msgBox.setText("Hello!");
msgBox.setIcon(QMessageBox::Information);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.exec();
Run Code Online (Sandbox Code Playgroud)
非常感谢!我的解决方案
我创建了自己的类(MessageBox)这是我显示它的代码:
MessageBox msgBox;
msgBox.setText("Hello!");
msgBox.setIcon(QMessageBox::Information);
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setAutoClose(true);
msgBox.setTimeout(3); //Closes after three seconds
msgBox.exec();
Run Code Online (Sandbox Code Playgroud)
这是我的班级:
class MessageBox : public QMessageBox
int timeout;
bool autoClose;
int currentTime;
void MessageBox::showEvent ( QShowEvent * event ) {
currentTime = 0;
if (autoClose) {
this->startTimer(1000);
}
}
void MessageBox::timerEvent(QTimerEvent *event)
{
currentTime++;
if (currentTime>=timeout) {
this->done(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我建议子类化QMessageBox以添加您自己想要的行为......
setAutoClose(bool)添加诸如和 之类的方法并在启用自动关闭选项时setAutoCloseTimeout(int)触发QTimeron会很有趣!showEvent
这样,您甚至可以改变您的外观QMessageBox,并显示一条文字“此框将在 XXX 秒后自动关闭...”或进度条等...