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

Posted

技术标签:

【中文标题】如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?【英文标题】:How to close the qt widget ui on a button clicked in promoted widget? 【发布时间】:2013-11-25 12:25:08 【问题描述】:

我有一个 qt 设计器 ui 表单,表单底部有一个 qwidgetqwidget 有一个提升的小部件。

提升的小部件有许多标签和按钮。其中一个按钮是主页按钮。单击此按钮后,用户需要关闭表单并打开主表单。

如果我使用实现 clicked() 槽的传统方法并说this->close();,则只有提升的小部件将被关闭。

我希望关闭整个 ui,然后打开 Home 表单。我该怎么做?是否从提升的小部件调用 qt 设计器 ui 表单以指示单击主页按钮?

感谢任何帮助。谢谢

【问题讨论】:

【参考方案1】:

您需要将SIGNAL 添加到您的班级(假设命名为close()),然后每当按下按钮时,此信号就会熄灭,并且通过将您的班级连接到此信号,您​​可以将表单设置为关闭。 Here 你可以找到关于信号的基本教程。如果您将代码放在问题中,我也可以指导您完成代码。

【讨论】:

好吧.. 这些是提升的小部件。它是用户界面的一部分。所以传统的发出信号并在主 ui 插槽中连接是行不通的。我之前确实尝试过。在按钮上单击我写了发出 this->home() 并在主 ui 中我将此类的信号连接到我指示 this->close() 的插槽 gotoHome();它不起作用。 我使用该对象作为提升小部件的基类,然后从那里获取信号 home()。这行得通。早些时候,我已经实例化了提升的小部件类并尝试连接发出的信号。我没有意识到主 ui 表单中的基类 qwidget 是实际对象。谢谢你的帮忙。 :) @DmitrySazonov 问题解决了。我应该发布解决方案吗?和示例代码一样? @Giz :很抱歉我没有在线回答你的第一个问题。没问题:)

以上是关于如何关闭在提升的小部件中单击的按钮上的 qt 小部件 ui?的主要内容,如果未能解决你的问题,请参考以下文章

Qt 的鼠标事件

如何通过单击放置在同一页面上的小部件来显示不同的小部件

在 Qt 中的小部件内部绘画

如何避免鼠标单击一个小部件触发 Qt 中其他小部件的信号?

如何在 FLTK 中对两个不同的小部件同时使用键盘箭头和鼠标单击?

QT:如何关闭同一个小部件的多个窗口?