91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

多個窗體之間要通信真的好麻煩,比如:A調出B,B調出C,那么C給A發消息,那就得經過B周轉才能實現。對于兩三層窗體,這種方法還可以接受,但嵌套太多就有點煩人了。

資源截圖

代碼片段和文件信息

#include?“globalObserver.h“

globalObserver?*globalObserver::m_pInst?=?NULL;
globalObserver?*globalObserver::getGlobalObserver()
{
????if?(m_pInst?==?NULL)
????{
????????m_pInst?=?new?globalObserver();
????}
????return?m_pInst;
}

void?globalObserver::release()
{
????if?(m_pInst?!=?NULL)
????{
????????delete?m_pInst;
????????m_pInst?=?NULL;
????}
}

void?globalObserver::attach(const?QString?type?Qobject?*reciver?const?char?*method)
{
????obesrverApater?*oA?=?obesrverApaterFactory::getInst()->createObesrverApater();
????connect(oA?SIGNAL(notify())?reciver?method);
????relationData?*data?=?new?relationData();
????data->type?=?type;
????data->reciver?=?reciver;
????data->obesrverApater?=?oA;
????m_oRelationList.append(data);
}

void?globalObserver::detach(const?QString?type?const?Qobject?*reciver)
{
????QList::iterator?iter?=?m_oRelationList.begin();

????while?(iter?!=?m_oRelationList.end())
????{
????????if?((*iter)->type.compare(type)?==?0?&&?(*iter)->reciver?==?reciver)
????????{
????????????relationData?*data?=?*iter;
????????????m_oRelationList.removeOne((*iter));

????????????delete?data->obesrverApater;
????????????delete?data;
????????????return;
????????}
????????iter++;
????}
}

void?globalObserver::notify(const?QString?type)
{
????QList::iterator?iter?=?m_oRelationList.begin();
????while?(iter?!=?m_oRelationList.end())
????{
????????if?((*iter)->type.compare(type)?==?0)
????????{
????????????emit?(*iter)->obesrverApater->notify();
????????}
????????iter++;
????}
}

globalObserver::globalObserver(Qobject?*parent)?:?Qobject(parent)
{

}

globalObserver::~globalObserver()
{
????//釋放列表數據
????QList::iterator?iter?=?m_oRelationList.begin();

????while?(iter?!=?m_oRelationList.end())
????{
????????delete?(*iter)->obesrverApater;
????????delete?*iter;
????????iter++;
????}

}

評論

共有 條評論