Я должен показать окно сообщения о сохранении до истечения времени ожидания. Как только истечет время ожидания, перейдите в слот и выполните какую-либо функцию.
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;
}
}
этот код работает, я использовал окно сообщения с кнопкой «ОК», и когда тайм-аут создал анимированный щелчок и выполнил некоторую функцию.
Теперь я хочу показать окно сообщения без кнопки, а по истечении времени ожидания закрыть окно сообщения, а затем выполнить некоторую функцию.
Но окно сообщения close() не работает.
void PopUpManager::ClosePopUP()
{
if(msgBox->isEnabled())
msgBox->close();
}
если я вызову приведенный выше код, окно сообщения должно закрыться, но оно отображается.
Может ли кто-нибудь помочь мне в этом. Заранее спасибо.