2018/7/6
1、一共有两个界面,PageTest、SeaPage;SeaPage里有SimulationBoxlist、SimulationBoxClass、SimulationBoxItem
2、关于信号槽的问题
a) 信号槽用于两个对象之间的通信
b) 一个信号可以关联到多个槽,当这个信号被发射时,这些槽就会一个接一个的执行,但是执行的顺序是随机的
c) 多个信号也可以关联到同一个槽中;甚至一个信号还可以关联到另一个信号。
d) 声明一个信号要使用signals关键词,但是前面不能加public这样的权限修饰符
e) Connect()函数的返回值为bool类型,当关联成功的时候返回true
f) 在调用connect()函数时信号和槽的参数只能有类型,不能有变量;原则上信号中的参数类型要和槽中的参数类型相对应,而且信号中的参数可以多于槽中的参数,但是不能反过来。如果信号中有多余的参数,那么它们将被忽略。
connect(发送者,发送信号,接收者,槽函数);
1) 主界面到sea界面
在主界面定义槽函数 void SeaPageShow();
CNTA(button,click(),this,SeaPageShow());
Void pageTest:::SeaPage()
{
this->setVisible(false);
SeaObject->setVisible(true); //海界面显示
}
2) Sea界面按“返回”按钮,回到主界面
注意:pageTest中,包含SeaPage类,
返回到主界面的槽函数也在主界面中定义。
在主界面中定义槽函数void Slot_ReturnToMainPage()
CNTA(ALLSIGNAL::GetInstance(),Signal_ReturnPageTest(),this,Slot_ReturnToMainPage());
Void PageTest::Slot_ReturnToMainPage()
{
this->setVisible(true);
SeaObject->setVisible(false);
}
在SeaPage中释放自定义信号 释放这个信号是由SeaPage中的按钮触发的
在SeaPage中定义与按钮点击信号连接的槽
Void Slot_Button();
CNTA(m_Button,clicked(),this,Slot_Button());
Void SeaPage::Slot_Button()
{
emit ALLSIGNAL::Getinstance()->Signal_ReturnPageTest();
}
3