Краткий ответ: вы можете подключить сигнал к другому сигналу, и это означает, что второй сигнал также будет излучаться при каждом излучении первого сигнала. Подробнее о сигналах и слотах см. В документации здесь , также проверьтеновый способ вызова connect (с указателями на функции)
Теперь в вашем случае то, что он делает, в основном позволяет вам сохранять ui
в секрете, но в то же время направлять сигналы, которые вы хотите, наружувашего объекта, позволяя другим объектам подключаться к сигналу (сигналам), который вы предоставляете в интерфейсе.
Пример неполного использования (на основе вашего кода я назвал класс, содержащий ваш код MyWidget
):главное окно (или любое другое лицо), которое имеет доступ к вашему виджету, может получать уведомления о любых изменениях внутри, подключаясь к сигналу edited
:
void MainWindow::createMyWidget()
{
m_myWidget = new MyWidget(this);
connect(m_myWidget, &MyWidget::edited, this, &MainWindow::myWidgetWasEdited));
}
Таким образом, когда что-то меняется внутри MyWidget
,MainWindow
может быть уведомлен о редактировании и может выполнять необходимые действия внутри слота myWidgetWasEdited
.
TЕго можно расширить, если необходимо, для предоставления сигнала для каждого конкретного «редактирования» вместо одного общего edited
сигнала (но это зависит от ваших потребностей).