我必须显示保存消息框,直到超时。 一旦发生超时,就转到插槽并执行一些功能。
timerToSave=new QTimer(this);
connect(timerToSave,SIGNAL(timeout()),this,SLOT(SavingStatusSlot()));
当超时移动到储蓄库时,上面的代码是计时器。
bool PopUpManager::PopUpSaveStaus()
{
timerToSave->start(3000);
saveStatus=false;
if(SetThread::getInstance()->UISaveStatus==ST_PROCESSING)
{
msgBox = new QMessageBox(0);
msgBox->setModal(true);
msgBox->setText("Saving ... ");
msgBox->setIcon(QMessageBox::Information);
msgBox->setStandardButtons(QMessageBox::Ok);
msgBox->setCursor(Qt::WaitCursor);
msgBox->setWindowFlags(Qt::FramelessWindowHint| Qt::WindowStaysOnTopHint);
msgBox->setStyleSheet("background-color:#444;color:#FFF;outline:none;");
msgBox->exec();
}
else
SavingStatusSlot();
return saveStatus;
}
从其他类调用上面的方法,当用户单击“保存”按钮时。 一旦调用该方法,启动计时器,然后显示消息框。
如果超时发生调用插槽[在下面给出]
void PopUpManager::SavingStatusSlot()
{
msgBox->button(QMessageBox::Ok)->animateClick();
timerToSave->stop();
if(SetThread::getInstance()->UISaveStatus==ST_OK)
{
saveStatus=true;
}
else
{
PopUpWithOKButton(" Saving Error ");
saveStatus=false;
}
}
这段代码正常工作,我已经使用了带OK按钮的消息框,并在超时时创建了动画点击并执行了一些功能。
现在我想显示没有按钮的消息框,当超时时,关闭消息框然后执行一些功能
但消息框close()无效。
void PopUpManager::ClosePopUP()
{
if(msgBox->isEnabled())
msgBox->close();
}
如果我调用上面的代码,消息框必须关闭,但它正在显示。
任何人都可以帮助我。 提前谢谢。
答案 0 :(得分:0)
我已经解决了这个问题
使用了msgBox-> show();而不是msgBox-> exec(); 和msgBox-> hide(); msgBox-> close();
代码如下。
bool PopUpManager::PopUpSaveStaus()
{
timerToSave->start(3000);
saveStatus=false;
if(UISaveStatus==ST_PROCESSING)
{
msgBox = new QMessageBox(QMessageBox::Information,"Error","Processing ... ",0,0,Qt::FramelessWindowHint| Qt::WindowStaysOnTopHint);
msgBox->setStandardButtons(0);
msgBox->setCursor(Qt::WaitCursor);
msgBox->setStyleSheet("background-color:#444;color:#FFF;outline:none;");
msgBox->show();
}
else
{
SavingStatusSlot();
}
return saveStatus;
}
void PopUpManager::SavingStatusSlot()
{
msgBox->hide();
timerToSave->stop();
if(UISaveStatus==ST_OK)
{
saveStatus=true;
}
else
{
PopUpWithOKButton(" communication Failed ");
saveStatus=false;
}
}