1

假设我们有多个小部件,并且它们都有主菜单按钮。所以我将所有主菜单按钮点击信号连接到一个插槽,这应该是

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 函数?

感谢您的帮助。

4

2 回答 2

2

我认为这应该有效:

dynamic_cast<QWidget*>(sender()) -> hide() ;
于 2011-05-21T22:56:53.097 回答
0

看看QSignalMapper课堂。基本上,您将两个小部件的clicked()信号连接到map()信号映射器的插槽,它会发出一个mapped(QWidget*)信号,您连接到您的mainClicked(QWidget*)插槽并让小部件通过,该小部件clicked发出信号(实际上您可以自己配置参数)。Qt 文档可以告诉您更多信息。

于 2011-05-21T22:58:06.580 回答