41 lines
		
	
	
		
			1005 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1005 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "SelfDestructMessageBox.h"
 | |
| 
 | |
| SelfDestructMessageBox::SelfDestructMessageBox(
 | |
|         int timeout,
 | |
|         const QString& title,
 | |
|         const QString& text,
 | |
|         QMessageBox::Icon icon,
 | |
|         QMessageBox::StandardButtons buttons,
 | |
|         QMessageBox::StandardButton defaultButton,
 | |
|         QWidget* parent,
 | |
|         Qt::WindowFlags flags)
 | |
|   : QMessageBox(icon, title, text, buttons, parent, flags),
 | |
|     m_timeout(timeout),
 | |
|     m_text(text)
 | |
| {
 | |
|     connect(&m_timer, &QTimer::timeout, this, &SelfDestructMessageBox::tick);
 | |
|     m_timer.setInterval(1000);
 | |
| 
 | |
|     setDefaultButton(defaultButton);
 | |
|     connect(this->defaultButton(), &QPushButton::clicked, this, &SelfDestructMessageBox::accept);
 | |
| }
 | |
| 
 | |
| void SelfDestructMessageBox::showEvent(QShowEvent* event)
 | |
| {
 | |
|     tick();
 | |
|     m_timer.start();
 | |
|     QMessageBox::showEvent(event);
 | |
| }
 | |
| 
 | |
| void SelfDestructMessageBox::tick(){
 | |
|     m_timeout--;
 | |
| 
 | |
|     if(m_timeout){
 | |
|         setText(m_text.arg(m_timeout));
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     m_timer.stop();
 | |
|     accept();
 | |
| }
 | 
