ktvscreencontroller.cpp

来自「QT KTV 源码,QT designer」· C++ 代码 · 共 64 行

CPP
64
字号
#include "KtvScreenController.h"

KtvScreenController* KtvScreenController::_p_ktv_ctl = 0;

KtvScreenController::KtvScreenController(){
	this->_p_screens = new QStack<QWidget*> ();
	this->_p_widget = 0;
}
KtvScreenController::~KtvScreenController(){
	while(!this->_p_screens->isEmpty())
		delete this->_p_screens->pop();
	if(this->_p_widget) delete this->_p_widget;
}
void KtvScreenController::Forward(QWidget* p_widget){
	if(!this->_p_screens->isEmpty())
		this->_p_screens->top()->hide();
	this->_p_screens->push(p_widget);
	p_widget->show();
}
void KtvScreenController::Replace(QWidget* p_widget){
	if(!this->_p_screens->isEmpty()){
		this->_p_screens->top()->hide();
		if(this->_p_widget) delete this->_p_widget;
		this->_p_widget = this->_p_screens->pop();
	}
	this->_p_screens->push(p_widget);
	p_widget->show();
}
KtvScreenController* KtvScreenController::GetController(){
	if(!KtvScreenController::_p_ktv_ctl)
		KtvScreenController::_p_ktv_ctl = new KtvScreenController();
	return KtvScreenController::_p_ktv_ctl;
}
void KtvScreenController::Back(){
	if(this->_p_screens->size() > 1){
		this->_p_screens->top()->hide();
		if(this->_p_widget){
			delete this->_p_widget;
		}
		this->_p_widget = this->_p_screens->pop();
		this->_p_screens->top()->show();
	}
}
void KtvScreenController::Toggle(){
	if(this->_p_screens->size() < 2) return;
	QWidget* p_widget1 = this->_p_screens->pop();
	p_widget1->hide();
	QWidget* p_widget2 = this->_p_screens->pop();
	p_widget2->show();
	this->_p_screens->push(p_widget1);
	this->_p_screens->push(p_widget2);
}
void KtvScreenController::Home(){
	if(this->_p_screens->size() < 2) return;
	while(this->_p_screens->size() > 1){
		if(this->_p_widget){
			delete this->_p_widget;
		}
		this->_p_widget = this->_p_screens->pop();
		this->_p_widget->hide();
	}
	this->_p_screens->top()->show();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?