我在主窗口中有2个触发器 1.从完全关闭应用程序的菜单中 2.从他的窗口X按钮忽略,只是隐藏窗口。 我正在使用这个SIGNAL / SLOTS 我怎么知道它被触发的位置?
在closeEvent
:
connect(ui->actionQuit, SIGNAL(triggered()),this, SLOT(CloseWin()));
void MainWindow::CloseWin()
{
close();
}
// triggered from the ui->actionQuit amd from the X button
void MainWindow::closeEvent(QCloseEvent *event)
{
// how can i know from where its bean triggered?
hide();
event->ignore();
}
答案 0 :(得分:3)
通过调用QObject :: sender() - http://developer.qt.nokia.com/doc/qt-4.8/qobject.html#sender,您始终可以知道谁“解雇”了该事件。请注意,只有在调用SLOT上调用此方法时,才能使用有效的返回值。
编辑:
如果您将多个信号连接到一个插槽,您还应该考虑使用信号映射器,这在此QQ中有说明: http://doc.qt.nokia.com/qq/qq10-signalmapper.html
答案 1 :(得分:2)
可能有两种解决方案:
QAction
)信号连接到单独的广告位并致电qApp->quit()
sender()
方法来确定发送信号的对象我更喜欢第一个。