1)在子窗口里面增加一个signal,在父窗口里面增加一个响应slot用于接收这个信号。
2)子窗口的按钮slot函数中emit这个signal。
3)在父窗口中把子窗口的这个signal连到自己的响应slot。
// 子窗口
**class** ChildWindow : **public** QWidget
{
Q_OBJECT
**public**:
ChildWindow(QWidget* p = 0)
:QWidget(p)
{
QVBoxLayout* l = **new** QVBoxLayout(**this**);
QPushButton* btn = **new** QPushButton("btn", **this**);
l->addWidget(btn);connect(btn, SIGNAL(clicked()), SLOT(ClickedBtn());
}signals:
** // 这个信号是发给父窗口的。
void ChildWindowEvent();**
**protected** slots:
// 点击子窗口中按钮的slot
** void ClickedBtn()
{
// 触发子窗口的信号给父窗口接收。
emit ChildWindowEvent();
}**
}
// 父窗口
**class** ParentWindow : **public** QWidget
{
Q_OBJECT
**public**:
ParentWindow(QWidget* p = 0)
:QWidget(p)
{
QVBoxLayout* l = **new** QVBoxLayout(**this**);
w = **new** ChildWindow(**this**);
l->addWidget(w);** // 把子窗口的信号连接到父窗口来。
connect(w, SIGNAL(ChildWindowEvent()), SLOT(ChildWindowEventSlot());**
}**protected**:
ChildWindow* w;
**protected** slots:
// 父窗口用于接收子窗口信号的slot。
** void ChildWindowEventSlot()
{
//子窗口的按钮被点击了。
}**
}
来源:http://zhidao.baidu.com/link?url=UfBe2D6gR-qCnB0cKOnUYcmMuqjuZPpWZLvE6Q9CGDGe6iAriihkQny4TV61t4UNSpxkNhiIcyeve_HXYUQEY_