我有一个使用 Qt 和多文档界面的示例应用程序。在主窗口中,一旦用户激活此操作,就会向菜单栏添加操作,例如保存当前文档的操作。有一个文档类必须被告知保存文档。不幸的是,当前文档可能会发生变化(它是一个 MULTIPLE 文档界面),因此使用信号槽机制并不容易。我不知道应该将信号连接到哪个文档实例。
此处的示例应用程序将信号连接到主窗口中的一个虚拟槽,该槽通过查询当前文档并调用该实例的相应方法,将请求重定向到文档类中的相应方法。这会导致大量样板代码。
有没有更优雅的方法来解决这个问题?
这里有几行代码可以使问题更清楚:
主窗口:
connect( action, SIGNAL( activated() ), this, SLOT( onSaveFile() ));
void MainWindow::onSaveFile()
{
getCurrentDocument()->save();
}
文档:
void Document::save()
{
...
}
非常感谢!
再见,本杰明