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

Posted

技术标签:

【中文标题】如何隐藏在 qt 中生成信号的小部件【英文标题】:how can I hide a widget that generated a signal in qt 【发布时间】:2011-05-21 22:38:15 【问题描述】:

假设我们有多个小部件,并且所有小部件都有主菜单按钮。所以我将所有主菜单按钮点击信号连接到一个插槽,这应该是 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 函数?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我认为这应该可行:

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

【讨论】:

thx 我做了这个 QObject caller = sender()->parent(); ((QWidget)caller)->hide();因为发件人将是小部件的孩子 qobject_cast(sender())->window()->hide();如果你想隐藏发件人的整个窗口【参考方案2】:

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

【讨论】:

以上是关于如何隐藏在 qt 中生成信号的小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?

如何在 Qt 中将动画用于堆叠的小部件?

如何隐藏博客标签搜索中的小部件

在 Qt 中的小部件内部绘画

Qt - 如何控制 QLayout 中的小部件大小

如何计算存储在 Gtk::Grid 中的小部件?