Qt中如何才能让子窗口按钮响应到父类窗口上的槽函数?(十分着急)

我用过下面的这几种方法:第一种:1、将要调用的父类控件槽函数设置为protectedslots或publicslots类型;2、在子窗口里面构造父类窗口指针,QParen... 我用过下面的这几种方法:第一种:1、将要调用的父类控件槽函数设置为protected slots或public slots类型;2、在子窗口里面构造父类窗口指针,QParentWindow *parent=new QParentWindow();3、最后,在子窗口里面进行关联connect(m_ui->childrenButton,SIGNAL(clicked(),parent,SLOT(closeParentWindow())));我这种方法没成功。第二种:我使用动态性能转换机制,方法是:QParentWindow *parentWindow=qobject_cast<QParentWindow *>(parentWindow->parent());最后,进行关联connect(m_ui->childrenButton,SIGNAL(clicked(),parentWindow,SLOT(closeParentWindow()))); 这两种方法我都尝试了,可就是无法响应父窗口的槽函数,请网上的网友帮忙解答一下,在此谢过了! 展开
 我来答
getborn
推荐于2017-11-24 · TA获得超过964个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:459万
展开全部
你的意思是子窗口中的一个按钮被点击了,父窗口上的一个slot函数响应这个点击吧?
很简单的:
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()
{
//子窗口的按钮被点击了。
}
}
天尊的光辉
2011-09-16 · TA获得超过113个赞
知道答主
回答量:84
采纳率:0%
帮助的人:51.8万
展开全部
什么意思?让子窗口按钮响应到父类窗口上的槽函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式