如何隐藏在qt中生成信号的小部件

如何隐藏在qt中生成信号的小部件,qt,hide,signals,qwidget,generated,Qt,Hide,Signals,Qwidget,Generated,假设我们有多个小部件,它们都有主菜单按钮。所以我把所有的主菜单按钮都连接到一个插槽,这个插槽应该是h connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked())); connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked())); 我有 private slots: void mainCli

假设我们有多个小部件,它们都有主菜单按钮。所以我把所有的主菜单按钮都连接到一个插槽,这个插槽应该是h

connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));
connect(widget1->mainMenuButton, SIGNAL(clicked()),this, SLOT(mainClicked()));
我有

private slots:
    void mainClicked();
在mainClicked中,我想隐藏触发单击信号的人。上述示例中的frame1或frame2

我可以使用sender()来检索触发信号的QObject,但是如何调用hide这是QWidget函数呢


非常感谢您的帮助。

我认为这应该有效:

dynamic_cast<QWidget*>(sender()) -> hide() ;
dynamic_cast(sender())->hide();

查看
QSignalMapper
类。基本上,您将两个小部件的
clicked()
信号连接到信号映射器的
map()
插槽,它会发出一个
mapped(QWidget*)
信号,您将其连接到
mainClicked(QWidget*)
插槽,然后将小部件传递出去,发出
clicked
信号(实际上您可以自己配置参数)。Qt文档可以告诉您更多信息。

thx我这样做了QObject caller=sender()->parent();((QWidget)caller)->hide();因为如果您想隐藏发送者的整个窗口,发送者将是widgetqobject_cast(sender())->window()->hide();的子对象