如何隐藏在 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看看QSignalMapper
类。基本上你将你的两个小部件的clicked()
信号连接到信号映射器的map()
插槽,它发出一个mapped(QWidget*)
信号,你连接到你的mainClicked(QWidget*)
插槽并且你让小部件通过,它发出@ 987654326@信号(其实可以自己配置参数)。 Qt 文档可以告诉您更多信息。
【讨论】:
以上是关于如何隐藏在 qt 中生成信号的小部件的主要内容,如果未能解决你的问题,请参考以下文章