Qt中父窗口处理子窗口事件

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_
坚持原创技术分享,您的支持将鼓励我继续创作!