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(); | ||
|  | } |