У меня есть пример приложения с использованием Qt и интерфейса нескольких документов. В главном окне в панель меню добавляются действия, например, действие для сохранения текущего документа, как только пользователь активирует это действие. Существует класс документа, который должен быть указан, чтобы сохранить документ. К сожалению, текущий документ может измениться (его МНОЖЕСТВЕННЫЙ интерфейс документа), поэтому нелегко использовать механизм сигнала-слота. Я не знаю, к какому экземпляру документа я должен подключить сигнал.Как подключить сигнал к изменяющемуся слоту
Приведенное здесь приложение связывает сигнал с фиктивным слотом в главном окне, и этот слот перенаправляет запрос соответствующему методу в класс документа, запрашивая текущий документ и вызывая соответствующий метод этого экземпляра. Это вызывает много шаблонов.
Есть ли более элегантный способ решить эту проблему?
Вот несколько строк кода, чтобы сделать вопрос яснее:
MainWindow:
connect(action, SIGNAL(activated()), this, SLOT(onSaveFile()));
void MainWindow::onSaveFile()
{
getCurrentDocument()->save();
}
Документ:
void Document::save()
{
...
}
Большое спасибо!
Bye, Benjamin
я вижу. Это стандартный способ сделать это? – user2492801
Я не знаю, стандартный ли он, я никогда не использовал mdi. Я знаю только, что это возможность. – MEeken