changeset 29542:3d34b70b5a49

connect many Qt signals and slots without SIGNAL and SLOT macros This changes switches most code in the libgui/src and libgui/graphics directories to use the new Qt style of connecting signals and slots that uses pointers to member functions or function objects instead of strings to refer to the signal and slot functions. For an introduction, see https://wiki.qt.io/New_Signal_Slot_Syntax. There are many connections left to adapt. In some cases, there are overloaded functions (or default parameters) that need to be handled. Use of QOverload<> or an anonymous function should fix these. In others, we are connecting to parent objects where we only have a pointer to QWidget instead of a specific type of object. To fix those, we need to either move the code that makes th connection to a place where the actual types of both objects are known or pass more specific types as the parent object. In a few cases, there appear to real mismatches in the types of objects and the signal/slot functions. Files affected: ButtonControl.cc, ButtonGroup.cc, ContextMenu.cc, EditControl.cc, Figure.cc, ListBoxControl.cc, Menu.cc, Object.cc, ObjectProxy.cc, Panel.cc, PopupMenuControl.cc, PushTool.cc, SliderControl.cc, Table.cc, ToggleTool.cc, ToolBar.cc, annotation-dialog.cc, qt-graphics-toolkit.cc, color-picker.cc, command-widget.cc, dialog.cc, documentation-bookmarks.cc, documentation.cc, files-dock-widget.cc, find-files-dialog.cc, history-dock-widget.cc, interpreter-qobject.cc, file-editor-tab.cc, file-editor-tab.h, file-editor.cc, find-dialog.cc, octave-qscintilla.cc, main-window.cc, octave-dock-widget.cc, octave-qobject.cc, qt-interpreter-events.cc, set-path-dialog.cc, set-path-model.cc, settings-dialog.cc, shortcut-manager.cc, tab-bar.cc, variable-editor-model.cc, variable-editor.cc, welcome-wizard.cc, welcome-wizard.h, workspace-view.cc, and workspace-view.h.
author John W. Eaton <jwe@octave.org>
date Fri, 16 Apr 2021 23:06:32 -0400
parents ebf68dde5579
children 97238418c028
files libgui/graphics/ButtonControl.cc libgui/graphics/ButtonGroup.cc libgui/graphics/ContextMenu.cc libgui/graphics/EditControl.cc libgui/graphics/Figure.cc libgui/graphics/ListBoxControl.cc libgui/graphics/Menu.cc libgui/graphics/Object.cc libgui/graphics/ObjectProxy.cc libgui/graphics/Panel.cc libgui/graphics/PopupMenuControl.cc libgui/graphics/PushTool.cc libgui/graphics/SliderControl.cc libgui/graphics/Table.cc libgui/graphics/ToggleTool.cc libgui/graphics/ToolBar.cc libgui/graphics/annotation-dialog.cc libgui/graphics/qt-graphics-toolkit.cc libgui/src/color-picker.cc libgui/src/command-widget.cc libgui/src/dialog.cc libgui/src/documentation-bookmarks.cc libgui/src/documentation.cc libgui/src/files-dock-widget.cc libgui/src/find-files-dialog.cc libgui/src/history-dock-widget.cc libgui/src/interpreter-qobject.cc libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor-tab.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/find-dialog.cc libgui/src/m-editor/octave-qscintilla.cc libgui/src/main-window.cc libgui/src/octave-dock-widget.cc libgui/src/octave-qobject.cc libgui/src/qt-interpreter-events.cc libgui/src/set-path-dialog.cc libgui/src/set-path-model.cc libgui/src/settings-dialog.cc libgui/src/shortcut-manager.cc libgui/src/tab-bar.cc libgui/src/variable-editor-model.cc libgui/src/variable-editor.cc libgui/src/welcome-wizard.cc libgui/src/welcome-wizard.h libgui/src/workspace-view.cc libgui/src/workspace-view.h
diffstat 47 files changed, 1068 insertions(+), 1096 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/graphics/ButtonControl.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ButtonControl.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -61,8 +61,8 @@
           btn->setChecked (true);
       }
 
-    connect (btn, SIGNAL (clicked (void)), SLOT (clicked (void)));
-    connect (btn, SIGNAL (toggled (bool)), SLOT (toggled (bool)));
+    connect (btn, &QAbstractButton::clicked, this, &ButtonControl::clicked);
+    connect (btn, &QAbstractButton::toggled, this, &ButtonControl::toggled);
   }
 
   ButtonControl::~ButtonControl (void)
--- a/libgui/graphics/ButtonGroup.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ButtonGroup.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -175,14 +175,17 @@
 
     if (pp.is_visible ())
       {
-        QTimer::singleShot (0, frame, SLOT (show (void)));
+        QTimer::singleShot (0, frame, &QFrame::show);
+        // FIXME: What is the intent here?  QButtonGroup::show is not a
+        // member of QButtonGroup.
         QTimer::singleShot (0, buttongroup, SLOT (show (void)));
       }
     else
       frame->hide ();
 
-    connect (m_buttongroup, SIGNAL (buttonClicked (QAbstractButton*)),
-             SLOT (buttonClicked (QAbstractButton*)));
+    connect (m_buttongroup,
+             QOverload<QAbstractButton *>::of (&QButtonGroup::buttonClicked),
+             this, &ButtonGroup::buttonClicked);
   }
 
   ButtonGroup::~ButtonGroup (void)
@@ -464,7 +467,7 @@
   ButtonGroup::addButton (QAbstractButton *btn)
   {
     m_buttongroup->addButton (btn);
-    connect (btn, SIGNAL (toggled (bool)), SLOT (buttonToggled (bool)));
+    connect (btn, &QAbstractButton::toggled, this, &ButtonGroup::buttonToggled);
   }
 
   void
--- a/libgui/graphics/ContextMenu.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ContextMenu.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -63,8 +63,8 @@
   {
     xmenu->setAutoFillBackground (true);
 
-    connect (xmenu, SIGNAL (aboutToShow (void)), SLOT (aboutToShow (void)));
-    connect (xmenu, SIGNAL (aboutToHide (void)), SLOT (aboutToHide (void)));
+    connect (xmenu, &QMenu::aboutToShow, this, &ContextMenu::aboutToShow);
+    connect (xmenu, &QMenu::aboutToHide, this, &ContextMenu::aboutToHide);
   }
 
   ContextMenu::~ContextMenu (void)
--- a/libgui/graphics/EditControl.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/EditControl.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -93,12 +93,12 @@
     edit->setAlignment (Utils::fromHVAlign (up.get_horizontalalignment (),
                                             up.get_verticalalignment ()));
 
-    connect (edit, SIGNAL (textEdited (const QString&)),
-             SLOT (textChanged (void)));
-    connect (edit, SIGNAL (editingFinished (void)),
-             SLOT (editingFinished (void)));
-    connect (edit, SIGNAL (returnPressed (void)),
-             SLOT (returnPressed (void)));
+    connect (edit, &QLineEdit::textEdited,
+             this, &EditControl::textChanged);
+    connect (edit, &QLineEdit::editingFinished,
+             this, &EditControl::editingFinished);
+    connect (edit, &QLineEdit::returnPressed,
+             this, &EditControl::returnPressed);
   }
 
   EditControl::EditControl (octave::base_qobject& oct_qobj,
@@ -131,12 +131,12 @@
     edit->setAlignment (Utils::fromHVAlign (up.get_horizontalalignment (),
                                             up.get_verticalalignment ()));
 
-    connect (edit, SIGNAL (textChanged (void)),
-             SLOT (textChanged (void)));
-    connect (edit, SIGNAL (editingFinished (void)),
-             SLOT (editingFinished (void)));
-    connect (edit, SIGNAL (returnPressed (void)),
-             SLOT (returnPressed (void)));
+    connect (edit, &TextEdit::textChanged,
+             this, &EditControl::textChanged);
+    connect (edit, &TextEdit::editingFinished,
+             this, &EditControl::editingFinished);
+    connect (edit, &TextEdit::returnPressed,
+             this, &EditControl::returnPressed);
   }
 
   EditControl::~EditControl (void)
--- a/libgui/graphics/Figure.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/Figure.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -180,13 +180,12 @@
     // Visibility
     update (figure::properties::ID_VISIBLE);
 
-    connect (this, SIGNAL (asyncUpdate (void)),
-             this, SLOT (updateContainer (void)));
+    connect (this, &Figure::asyncUpdate, this, &Figure::updateContainer);
 
     // Register for the signal that indicates when a window has moved
     // to a different screen
-    connect (win, SIGNAL (figureWindowShown ()),
-             this, SLOT (figureWindowShown ()));
+    connect (win, &FigureWindow::figureWindowShown,
+             this, &Figure::figureWindowShown);
 
     win->addReceiver (this);
     m_container->addReceiver (this);
@@ -406,7 +405,7 @@
       case figure::properties::ID_VISIBLE:
         if (fp.is_visible ())
           {
-            QTimer::singleShot (0, win, SLOT (show ()));
+            QTimer::singleShot (0, win, &QMainWindow::show);
             if (! fp.is___gl_window__ ())
               {
                 gh_manager& gh_mgr = m_interpreter.get_gh_manager ();
@@ -868,8 +867,7 @@
     figure::properties& fp = properties<figure> ();
     fp.set___device_pixel_ratio__ (screen->devicePixelRatio ());
 
-    connect (window, SIGNAL (screenChanged (QScreen*)),
-             this, SLOT (screenChanged (QScreen*)));
+    connect (window, &QWindow::screenChanged, this, &Figure::screenChanged);
 #endif
   }
 
--- a/libgui/graphics/ListBoxControl.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ListBoxControl.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -124,12 +124,12 @@
 
     list->viewport ()->installEventFilter (this);
 
-    connect (list, SIGNAL (itemSelectionChanged (void)),
-             SLOT (itemSelectionChanged (void)));
-    connect (list, SIGNAL (activated (const QModelIndex &)),
-             SLOT (itemActivated (const QModelIndex &)));
-    connect (list, SIGNAL (itemPressed (QListWidgetItem*)),
-             SLOT (itemPressed (QListWidgetItem*)));
+    connect (list, &QListWidget::itemSelectionChanged,
+             this, &ListBoxControl::itemSelectionChanged);
+    connect (list, &QListWidget::activated,
+             this, &ListBoxControl::itemActivated);
+    connect (list, &QListWidget::itemPressed,
+             this, &ListBoxControl::itemPressed);
   }
 
   ListBoxControl::~ListBoxControl (void)
--- a/libgui/graphics/Menu.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/Menu.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -161,7 +161,7 @@
           }
       }
 
-    connect (action, SIGNAL (triggered (bool)), SLOT (actionTriggered (void)));
+    connect (action, &QAction::triggered, this, &Menu::actionTriggered);
   }
 
   Menu::~Menu (void)
@@ -281,8 +281,7 @@
         _menu = new QMenu (action->parentWidget ());
         action->setMenu (_menu);
         action->setShortcut (QKeySequence ());
-        connect (_menu, SIGNAL (aboutToShow (void)),
-                 this, SLOT (actionHovered (void)));
+        connect (_menu, &QMenu::aboutToShow, this, &Menu::actionHovered);
       }
 
     return _menu;
--- a/libgui/graphics/Object.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/Object.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -71,8 +71,8 @@
       {
         m_qobject->setProperty ("QtHandles::Object",
                                 QVariant::fromValue<void*> (this));
-        connect (m_qobject, SIGNAL (destroyed (QObject*)),
-                 SLOT (objectDestroyed (QObject*)));
+        connect (m_qobject, &QObject::destroyed,
+                 this, &Object::objectDestroyed);
       }
   }
 
--- a/libgui/graphics/ObjectProxy.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ObjectProxy.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -53,24 +53,24 @@
       {
         if (m_object)
           {
-            disconnect (this, SIGNAL (sendUpdate (int)),
-                        m_object, SLOT (slotUpdate (int)));
-            disconnect (this, SIGNAL (sendRedraw (void)),
-                        m_object, SLOT (slotRedraw (void)));
-            disconnect (this, SIGNAL (sendShow (void)),
-                        m_object, SLOT (slotShow (void)));
+            disconnect (this, &ObjectProxy::sendUpdate,
+                        m_object, &Object::slotUpdate);
+            disconnect (this, &ObjectProxy::sendRedraw,
+                        m_object, &Object::slotRedraw);
+            disconnect (this, &ObjectProxy::sendShow,
+                        m_object, &Object::slotShow);
           }
 
         m_object = obj;
 
         if (m_object)
           {
-            connect (this, SIGNAL (sendUpdate (int)),
-                     m_object, SLOT (slotUpdate (int)));
-            connect (this, SIGNAL (sendRedraw (void)),
-                     m_object, SLOT (slotRedraw (void)));
-            connect (this, SIGNAL (sendShow (void)),
-                     m_object, SLOT (slotShow (void)));
+            connect (this, &ObjectProxy::sendUpdate,
+                     m_object, &Object::slotUpdate);
+            connect (this, &ObjectProxy::sendRedraw,
+                     m_object, &Object::slotRedraw);
+            connect (this, &ObjectProxy::sendShow,
+                     m_object, &Object::slotShow);
           }
       }
   }
--- a/libgui/graphics/Panel.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/Panel.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -164,7 +164,7 @@
       m_container->canvas (m_handle)->addEventMask (Canvas::KeyRelease);
 
     if (pp.is_visible ())
-      QTimer::singleShot (0, frame, SLOT (show (void)));
+      QTimer::singleShot (0, frame, &QFrame::show);
     else
       frame->hide ();
   }
--- a/libgui/graphics/PopupMenuControl.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/PopupMenuControl.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -69,8 +69,8 @@
 
     update (uicontrol::properties::ID_VALUE);
 
-    connect (box, SIGNAL (activated (int)),
-             SLOT (currentIndexChanged (int)));
+    connect (box, QOverload<int>::of (&QComboBox::activated),
+             this, &PopupMenuControl::currentIndexChanged);
   }
 
   PopupMenuControl::~PopupMenuControl (void)
--- a/libgui/graphics/PushTool.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/PushTool.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -59,7 +59,7 @@
                       const graphics_object& go, QAction *action)
     : ToolBarButton<uipushtool> (oct_qobj, interp, go, action)
   {
-    connect (action, SIGNAL (triggered (bool)), this, SLOT (clicked (void)));
+    connect (action, &QAction::triggered, this, &PushTool::clicked);
   }
 
   PushTool::~PushTool (void)
--- a/libgui/graphics/SliderControl.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/SliderControl.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -90,7 +90,8 @@
                                                * RANGE_INT_MAX));
       }
 
-    connect (slider, SIGNAL (valueChanged (int)), SLOT (valueChanged (int)));
+    connect (slider, &QAbstractSlider::valueChanged,
+             this, &SliderControl::valueChanged);
   }
 
   SliderControl::~SliderControl (void)
--- a/libgui/graphics/Table.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/Table.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -479,12 +479,12 @@
     m_tableWidget->installEventFilter (this);
 
 
-    connect (m_tableWidget, SIGNAL (itemChanged (QTableWidgetItem*)),
-             SLOT (itemChanged (QTableWidgetItem*)));
-    connect (m_tableWidget, SIGNAL (cellClicked (int, int)),
-             SLOT (cellClicked (int, int)));
-    connect (m_tableWidget, SIGNAL (itemSelectionChanged (void)),
-             SLOT (itemSelectionChanged (void)));
+    connect (m_tableWidget, &QTableWidget::itemChanged,
+             this, &Table::itemChanged);
+    connect (m_tableWidget, &QTableWidget::cellClicked,
+             this, &Table::cellClicked);
+    connect (m_tableWidget, &QTableWidget::itemSelectionChanged,
+             this, &Table::itemSelectionChanged);
   }
 
   Table::~Table (void) { }
--- a/libgui/graphics/ToggleTool.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ToggleTool.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -64,8 +64,7 @@
     action->setCheckable (true);
     action->setChecked (tp.is_state ());
 
-    connect (action, SIGNAL (toggled (bool)),
-             this, SLOT (triggered (bool)));
+    connect (action, &QAction::toggled, this, &ToggleTool::triggered);
   }
 
   ToggleTool::~ToggleTool (void)
--- a/libgui/graphics/ToolBar.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/ToolBar.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -150,7 +150,7 @@
                   if (xevent->type () == QEvent::ActionAdded)
                     {
                       if (bar->actions ().size () == 2)
-                        QTimer::singleShot (0, this, SLOT (hideEmpty (void)));
+                        QTimer::singleShot (0, this, &ToolBar::hideEmpty);
                     }
                   else
                     {
--- a/libgui/graphics/annotation-dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/annotation-dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -64,20 +64,20 @@
     restoreGeometry (settings->value (gp_annotation_geometry).toByteArray ());
 
   // connect signals
-  connect (ui->button_box, SIGNAL (clicked (QAbstractButton *)),
-           this, SLOT (button_clicked (QAbstractButton *)));
+  connect (ui->button_box, &QDialogButtonBox::clicked,
+           this, &annotation_dialog::button_clicked);
 
-  connect (ui->edit_string, SIGNAL (textChanged (const QString&)),
-           this, SLOT (edit_string_changed (const QString&)));
+  connect (ui->edit_string, &QLineEdit::textChanged,
+           this, &annotation_dialog::edit_string_changed);
 
-  connect (ui->btn_color, SIGNAL (clicked ()),
-           this, SLOT (prompt_for_color ()));
+  connect (ui->btn_color, &QPushButton::clicked,
+           this, &annotation_dialog::prompt_for_color);
 
-  connect (ui->btn_background_color, SIGNAL (clicked ()),
-           this, SLOT (prompt_for_color ()));
+  connect (ui->btn_background_color, &QPushButton::clicked,
+           this, &annotation_dialog::prompt_for_color);
 
-  connect (ui->btn_edge_color, SIGNAL (clicked ()),
-           this, SLOT (prompt_for_color ()));
+  connect (ui->btn_edge_color, &QPushButton::clicked,
+           this, &annotation_dialog::prompt_for_color);
 
   // set gui element to default values
   ui->cb_fit_box_to_text->setChecked (true);
--- a/libgui/graphics/qt-graphics-toolkit.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/graphics/qt-graphics-toolkit.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -112,8 +112,8 @@
     // BlockingQueuedConnection. After the signal is emitted, the interpreter
     // thread is locked until the slot has returned.
 
-    connect (this, SIGNAL (create_object_signal (double)),
-             this, SLOT (create_object (double)),
+    connect (this, &qt_graphics_toolkit::create_object_signal,
+             this, &qt_graphics_toolkit::create_object,
              Qt::BlockingQueuedConnection);
   }
 
--- a/libgui/src/color-picker.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/color-picker.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -42,7 +42,7 @@
     setFlat (true);
     setFocusPolicy (Qt::NoFocus);  // no focus, would change the color
     update_button ();
-    connect (this, SIGNAL (clicked (void)), SLOT (select_color (void)));
+    connect (this, &color_picker::clicked, this, &color_picker::select_color);
   }
 
   // Slot for button clicked: select a new color using QColorDialog
--- a/libgui/src/command-widget.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/command-widget.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -83,23 +83,23 @@
 
     setFocusProxy (m_line_edit);
 
-    connect (m_line_edit, SIGNAL (returnPressed (void)),
-             this, SLOT (accept_input_line (void)));
+    connect (m_line_edit, &QLineEdit::returnPressed,
+             this, &command_widget::accept_input_line);
 
-    connect (this, SIGNAL (clear_line_edit (void)),
-             m_line_edit, SLOT (clear (void)));
+    connect (this, &command_widget::clear_line_edit,
+             m_line_edit, &QLineEdit::clear);
 
-    connect (pause_button, SIGNAL (clicked (void)),
-             &oct_qobj, SLOT (interpreter_pause (void)));
+    connect (pause_button, &QPushButton::clicked,
+             &oct_qobj, &base_qobject::interpreter_pause);
 
-    connect (stop_button, SIGNAL (clicked (void)),
-             &oct_qobj, SLOT (interpreter_stop (void)));
+    connect (stop_button, &QPushButton::clicked,
+             &oct_qobj, &base_qobject::interpreter_stop);
 
-    connect (resume_button, SIGNAL (clicked (void)),
-             &oct_qobj, SLOT (interpreter_resume (void)));
+    connect (resume_button, &QPushButton::clicked,
+             &oct_qobj, &base_qobject::interpreter_resume);
 
     connect (p, SIGNAL (update_prompt_signal (const QString&)),
-             m_prompt, SLOT (setText (const QString&)));
+             m_prompt, SLOT (setText (const QSTring&)));
 
     connect (p, SIGNAL (interpreter_output_signal (const QString&)),
              this, SLOT (insert_interpreter_output (const QString&)));
--- a/libgui/src/dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -51,45 +51,17 @@
     : QObject (), m_octave_qobj (oct_qobj), m_dialog_result (-1),
       m_dialog_button (), m_string_list (), m_list_index (), m_path_name ()
   {
-    connect (this,
-             SIGNAL (create_dialog (const QString&, const QString&,
-                                    const QString&, const QStringList&,
-                                    const QString&, const QStringList&)),
-             this,
-             SLOT (handle_create_dialog (const QString&, const QString&,
-                                         const QString&, const QStringList&,
-                                         const QString&, const QStringList&)));
+    connect (this, &QUIWidgetCreator::create_dialog,
+             this, &QUIWidgetCreator::handle_create_dialog);
 
-    connect (this,
-             SIGNAL (create_listview (const QStringList&, const QString&,
-                                      int, int, const QIntList&,
-                                      const QString&, const QStringList&,
-                                      const QString&, const QString&)),
-             this,
-             SLOT (handle_create_listview (const QStringList&, const QString&,
-                                           int, int, const QIntList&,
-                                           const QString&, const QStringList&,
-                                           const QString&, const QString&)));
+    connect (this, &QUIWidgetCreator::create_listview,
+             this, &QUIWidgetCreator::handle_create_listview);
 
-    connect (this,
-             SIGNAL (create_inputlayout (const QStringList&, const QString&,
-                                         const QFloatList&, const QFloatList&,
-                                         const QStringList&)),
-             this,
-             SLOT (handle_create_inputlayout (const QStringList&,
-                                              const QString&,
-                                              const QFloatList&,
-                                              const QFloatList&,
-                                              const QStringList&)));
+    connect (this, &QUIWidgetCreator::create_inputlayout,
+             this, &QUIWidgetCreator::handle_create_inputlayout);
 
-    connect (this,
-             SIGNAL (create_filedialog (const QStringList&,const QString&,
-                                        const QString&, const QString&,
-                                        const QString&)),
-             this,
-             SLOT (handle_create_filedialog (const QStringList&, const QString&,
-                                             const QString&, const QString&,
-                                             const QString&)));
+    connect (this, &QUIWidgetCreator::create_filedialog,
+             this, &QUIWidgetCreator::handle_create_filedialog);
   }
 
   QString QUIWidgetCreator::rm_amp (const QString& text)
@@ -211,8 +183,8 @@
       = new MessageDialog (m_octave_qobj, message, title, icon,
                            button, defbutton, role);
 
-    connect (message_dialog, SIGNAL (buttonClicked (QAbstractButton *)),
-             this, SLOT (dialog_button_clicked (QAbstractButton *)));
+    connect (message_dialog, &MessageDialog::buttonClicked,
+             this, &QUIWidgetCreator::dialog_button_clicked);
 
     message_dialog->setAttribute (Qt::WA_DeleteOnClose);
     message_dialog->show ();
@@ -263,8 +235,8 @@
       = new ListDialog (m_octave_qobj, list, mode, wd, ht, initial,
                         name, prompt, ok_string, cancel_string);
 
-    connect (list_dialog, SIGNAL (finish_selection (const QIntList&, int)),
-             this, SLOT (list_select_finished (const QIntList&, int)));
+    connect (list_dialog, &ListDialog::finish_selection,
+             this, &QUIWidgetCreator::list_select_finished);
 
     list_dialog->setAttribute (Qt::WA_DeleteOnClose);
     list_dialog->show ();
@@ -294,8 +266,8 @@
     InputDialog *input_dialog
       = new InputDialog (m_octave_qobj, prompt, title, nr, nc, defaults);
 
-    connect (input_dialog, SIGNAL (finish_input (const QStringList&, int)),
-             this, SLOT (input_finished (const QStringList&, int)));
+    connect (input_dialog, &InputDialog::finish_input,
+             this, &QUIWidgetCreator::input_finished);
 
     input_dialog->setAttribute (Qt::WA_DeleteOnClose);
     input_dialog->show ();
@@ -323,10 +295,8 @@
       = new FileDialog (m_octave_qobj, filters, title, filename,
                         dirname, multimode);
 
-    connect (file_dialog, SIGNAL (finish_input (const QStringList&,
-                                                const QString&, int)),
-             this, SLOT (filedialog_finished (const QStringList&,
-                                              const QString&, int)));
+    connect (file_dialog, &FileDialog::finish_input,
+             this, &QUIWidgetCreator::filedialog_finished);
 
     file_dialog->setAttribute (Qt::WA_DeleteOnClose);
     file_dialog->show ();
@@ -503,17 +473,17 @@
     // If empty, make blank rather than use default OS behavior.
     setWindowTitle (title.isEmpty () ? " " : title);
 
-    connect (select_all, SIGNAL (clicked ()),
-             view, SLOT (selectAll ()));
+    connect (select_all, &QPushButton::clicked,
+             view, &QListView::selectAll);
 
-    connect (buttonOk, SIGNAL (clicked ()),
-             this, SLOT (buttonOk_clicked ()));
+    connect (buttonOk, &QPushButton::clicked,
+             this, &ListDialog::buttonOk_clicked);
 
-    connect (buttonCancel, SIGNAL (clicked ()),
-             this, SLOT (buttonCancel_clicked ()));
+    connect (buttonCancel, &QPushButton::clicked,
+             this, &ListDialog::buttonCancel_clicked);
 
-    connect (view, SIGNAL (doubleClicked (const QModelIndex&)),
-             this, SLOT (item_double_clicked (const QModelIndex&)));
+    connect (view, &QListView::doubleClicked,
+             this, &ListDialog::item_double_clicked);
   }
 
   ListDialog::~ListDialog (void)
@@ -619,11 +589,11 @@
     // If empty, make blank rather than use default OS behavior.
     setWindowTitle (title.isEmpty () ? " " : title);
 
-    connect (buttonOk, SIGNAL (clicked ()),
-             this, SLOT (buttonOk_clicked ()));
+    connect (buttonOk, &QPushButton::clicked,
+             this, &InputDialog::buttonOk_clicked);
 
-    connect (buttonCancel, SIGNAL (clicked ()),
-             this, SLOT (buttonCancel_clicked ()));
+    connect (buttonCancel, &QPushButton::clicked,
+             this, &InputDialog::buttonCancel_clicked);
   }
 
   void InputDialog::buttonOk_clicked (void)
@@ -699,9 +669,9 @@
 
     selectFile (filename);
 
-    connect (this, SIGNAL (accepted ()), this, SLOT (acceptSelection ()));
+    connect (this, &FileDialog::accepted, this, &FileDialog::acceptSelection);
 
-    connect (this, SIGNAL (rejected ()), this, SLOT (rejectSelection ()));
+    connect (this, &FileDialog::rejected, this, &FileDialog::rejectSelection);
   }
 
   void FileDialog::rejectSelection (void)
--- a/libgui/src/documentation-bookmarks.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/documentation-bookmarks.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -75,10 +75,10 @@
     m_tree->setEditTriggers (QAbstractItemView::EditKeyPressed
                                       | QAbstractItemView::SelectedClicked);
 
-    connect (m_tree, SIGNAL (customContextMenuRequested (const QPoint &)),
-             this, SLOT (ctx_menu (const QPoint &)));
-    connect (m_tree, SIGNAL (itemDoubleClicked (QTreeWidgetItem*, int)),
-             this, SLOT (handle_double_click (QTreeWidgetItem*, int)));
+    connect (m_tree, &QTreeWidget::customContextMenuRequested,
+             this, &documentation_bookmarks::ctx_menu);
+    connect (m_tree, &QTreeWidget::itemDoubleClicked,
+             this, &documentation_bookmarks::handle_double_click);
 
     // Define the icons for the tree view
     icon_folder.addPixmap (style ()->standardPixmap(QStyle::SP_DirClosedIcon),
@@ -122,18 +122,18 @@
 
     m_filter->addItems (settings->value (dc_bookmark_filter_mru).toStringList ());
 
-    connect (m_filter, SIGNAL (editTextChanged (const QString &)),
-             this, SLOT (filter_bookmarks (const QString &)));
-    connect (m_filter->lineEdit (), SIGNAL (editingFinished (void)),
-             this, SLOT (update_filter_history (void)));
+    connect (m_filter, &QComboBox::editTextChanged,
+             this, &documentation_bookmarks::filter_bookmarks);
+    connect (m_filter->lineEdit (), &QLineEdit::editingFinished,
+             this, &documentation_bookmarks::update_filter_history);
 
     m_filter_checkbox = new QCheckBox (m_filter_widget);
     bool filter_state = settings->value (dc_bookmark_filter_active).toBool ();
     m_filter_checkbox->setChecked (filter_state);
     filter_activate (filter_state);
 
-    connect (m_filter_checkbox, SIGNAL (toggled (bool)),
-             this, SLOT (filter_activate (bool)));
+    connect (m_filter_checkbox, &QCheckBox::toggled,
+             this, &documentation_bookmarks::filter_activate);
 
     QLabel *filter_label = new QLabel (tr ("Filter"), m_filter_widget);
     QHBoxLayout *h_box_bm = new QHBoxLayout (m_filter_widget);
@@ -326,21 +326,24 @@
       {
         resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
 
-        menu.addAction (tr ("&Open"), this, SLOT (open (bool)));
-        menu.addAction (tr ("&Rename"), this, SLOT (edit (bool)));
-        menu.addAction (rmgr.icon ("window-close"), tr ("Remo&ve"), this,
-                        SLOT (remove (bool)));
+        menu.addAction (tr ("&Open"), this, &documentation_bookmarks::open);
+        menu.addAction (tr ("&Rename"), this, &documentation_bookmarks::edit);
+        menu.addAction (rmgr.icon ("window-close"), tr ("Remo&ve"),
+                        this, &documentation_bookmarks::remove);
         menu.addSeparator ();
       }
 
-    menu.addAction (tr ("&Add Folder"), this, SLOT (add_folder (bool)));
+    menu.addAction (tr ("&Add Folder"), this,
+                    QOverload<bool>::of (&documentation_bookmarks::add_folder));
 
     menu.addSeparator ();
 
     if (m_filter_shown)
-      menu.addAction (tr ("Hide &Filter"), this, SLOT (show_filter (bool)));
+      menu.addAction (tr ("Hide &Filter"),
+                      this, &documentation_bookmarks::show_filter);
     else
-      menu.addAction (tr ("Show &Filter"), this, SLOT (show_filter (bool)));
+      menu.addAction (tr ("Show &Filter"),
+                      this, &documentation_bookmarks::show_filter);
 
     menu.exec (m_tree->mapToGlobal (xpos));
   }
--- a/libgui/src/documentation.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/documentation.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -132,8 +132,8 @@
     // The browser
     QWidget *browser_find = new QWidget (this);
     m_doc_browser = new documentation_browser (m_help_engine, browser_find);
-    connect (m_doc_browser, SIGNAL (cursorPositionChanged (void)),
-             this, SLOT(handle_cursor_position_change (void)));
+    connect (m_doc_browser, &documentation_browser::cursorPositionChanged,
+             this, &documentation::handle_cursor_position_change);
 
     // Tool bar
     construct_tool_bar ();
@@ -142,23 +142,23 @@
     QWidget *find_footer = new QWidget (browser_find);
     QLabel *find_label = new QLabel (tr ("Find:"), find_footer);
     m_find_line_edit = new QLineEdit (find_footer);
-    connect (m_find_line_edit, SIGNAL (returnPressed (void)),
-             this, SLOT(find (void)));
-    connect (m_find_line_edit, SIGNAL (textEdited (const QString&)),
-             this, SLOT(find_forward_from_anchor (const QString&)));
+    connect (m_find_line_edit, &QLineEdit::returnPressed,
+             this, [=] () { find (); });
+    connect (m_find_line_edit, &QLineEdit::textEdited,
+             this, &documentation::find_forward_from_anchor);
     QToolButton *forward_button = new QToolButton (find_footer);
     forward_button->setText (tr ("Search forward"));
     forward_button->setToolTip (tr ("Search forward"));
     resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
     forward_button->setIcon (rmgr.icon ("go-down"));
-    connect (forward_button, SIGNAL (pressed (void)),
-             this, SLOT(find (void)));
+    connect (forward_button, &QToolButton::pressed,
+             this, [=] () { find (); });
     QToolButton *backward_button = new QToolButton (find_footer);
     backward_button->setText (tr ("Search backward"));
     backward_button->setToolTip (tr ("Search backward"));
     backward_button->setIcon (rmgr.icon ("go-up"));
-    connect (backward_button, SIGNAL (pressed (void)),
-             this, SLOT(find_backward (void)));
+    connect (backward_button, &QToolButton::pressed,
+             this, &documentation::find_backward);
     QHBoxLayout *h_box_find_footer = new QHBoxLayout (find_footer);
     h_box_find_footer->addWidget (find_label);
     h_box_find_footer->addWidget (m_find_line_edit);
@@ -176,11 +176,11 @@
     notice_settings (rmgr.get_settings ());
 
     m_findnext_shortcut->setContext (Qt::WidgetWithChildrenShortcut);
-    connect (m_findnext_shortcut, SIGNAL (activated (void)),
-             this, SLOT(find (void)));
+    connect (m_findnext_shortcut, &QShortcut::activated,
+             this, [=] () { find (); });
     m_findprev_shortcut->setContext (Qt::WidgetWithChildrenShortcut);
-    connect (m_findprev_shortcut, SIGNAL (activated (void)),
-             this, SLOT(find_backward (void)));
+    connect (m_findprev_shortcut, &QShortcut::activated,
+             this, &documentation::find_backward);
 
     find_footer->hide ();
     m_search_anchor_position = 0;
@@ -201,9 +201,10 @@
         content->setObjectName ("documentation_tab_contents");
         navi->addTab (content, tr ("Contents"));
 
-        connect(m_help_engine->contentWidget (),
-                SIGNAL (linkActivated (const QUrl&)),
-                m_doc_browser, SLOT(handle_index_clicked (const QUrl&)));
+        connect (m_help_engine->contentWidget (),
+                 &QHelpContentWidget::linkActivated,
+                 m_doc_browser, [=] (const QUrl& url) {
+                   m_doc_browser->handle_index_clicked (url); });
 
         // Index
         QHelpIndexWidget *index = m_help_engine->indexWidget ();
@@ -239,28 +240,27 @@
 #if defined (HAVE_NEW_QHELPINDEXWIDGET_API)
         connect (m_help_engine->indexWidget (),
                  &QHelpIndexWidget::documentActivated,
-                 this, [this](const QHelpLink &link) {
-                        m_doc_browser->handle_index_clicked (link.url);});
+                 this, [=] (const QHelpLink &link) {
+                   m_doc_browser->handle_index_clicked (link.url); });
 #else
         connect (m_help_engine->indexWidget (),
-                 SIGNAL (linkActivated (const QUrl&, const QString&)),
-                 m_doc_browser, SLOT(handle_index_clicked (const QUrl&,
-                                                           const QString&)));
+                 &QHelpIndexWidget::linkActivated,
+                 m_doc_browser, &documentation_browser::handle_index_clicked);
 #endif
 
-        connect (m_filter, SIGNAL (editTextChanged (const QString&)),
-                 this, SLOT(filter_update (const QString&)));
+        connect (m_filter, &QComboBox::editTextChanged,
+                 this, &documentation::filter_update);
 
-        connect (m_filter->lineEdit (), SIGNAL (editingFinished (void)),
-                 this, SLOT(filter_update_history (void)));
+        connect (m_filter->lineEdit (), &QLineEdit::editingFinished,
+                 this, &documentation::filter_update_history);
 
         // Bookmarks (own class)
         documentation_bookmarks *bookmarks
           = new documentation_bookmarks (this, m_doc_browser, m_octave_qobj, navi);
         navi->addTab (bookmarks, tr ("Bookmarks"));
 
-        connect (m_action_bookmark, SIGNAL (triggered ()),
-                 bookmarks, SLOT (add_bookmark ()));
+        connect (m_action_bookmark, &QAction::triggered,
+                 bookmarks, [=] () { bookmarks->add_bookmark (); });
         connect (p, SIGNAL (save_settings_signal (void)),
                  bookmarks, SLOT (save_settings (void)));
 
@@ -276,18 +276,17 @@
         search_all->setObjectName ("documentation_tab_search");
         navi->addTab (search_all, tr ("Search"));
 
-        connect (search, SIGNAL (search (void)),
-                 this, SLOT(global_search (void)));
+        connect (search, &QHelpSearchQueryWidget::search,
+                 this, &documentation::global_search);
 
-        connect (search_engine, SIGNAL (searchingStarted (void)),
-                 this, SLOT(global_search_started (void)));
-        connect (search_engine, SIGNAL (searchingFinished (int)),
-                 this, SLOT(global_search_finished (int)));
+        connect (search_engine, &QHelpSearchEngine::searchingStarted,
+                 this, &documentation::global_search_started);
+        connect (search_engine, &QHelpSearchEngine::searchingFinished,
+                 this, &documentation::global_search_finished);
 
         connect (search_engine->resultWidget (),
-                 SIGNAL (requestShowLink (const QUrl&)),
-                 this,
-                 SLOT(handle_search_result_clicked (const QUrl&)));
+                 &QHelpSearchResultWidget::requestShowLink,
+                 this, &documentation::handle_search_result_clicked);
 
         // Fill the splitter
         insertWidget (0, navi);
@@ -383,16 +382,16 @@
     popdown_button_next_pages->setArrowType(Qt::DownArrow);
     m_tool_bar->addWidget (popdown_button_next_pages);
 
-    connect (m_doc_browser, SIGNAL (backwardAvailable (bool)),
-             m_action_go_prev, SLOT (setEnabled (bool)));
-    connect (m_doc_browser, SIGNAL (backwardAvailable (bool)),
-             popdown_button_prev_pages, SLOT (setEnabled (bool)));
-    connect (m_doc_browser, SIGNAL (forwardAvailable (bool)),
-             m_action_go_next, SLOT (setEnabled (bool)));
-    connect (m_doc_browser, SIGNAL (forwardAvailable (bool)),
-             popdown_button_next_pages, SLOT (setEnabled (bool)));
-    connect (m_doc_browser, SIGNAL (historyChanged (void)),
-             this, SLOT (update_history_menus (void)));
+    connect (m_doc_browser, &documentation_browser::backwardAvailable,
+             m_action_go_prev, &QAction::setEnabled);
+    connect (m_doc_browser, &documentation_browser::backwardAvailable,
+             popdown_button_prev_pages, &QToolButton::setEnabled);
+    connect (m_doc_browser, &documentation_browser::forwardAvailable,
+             m_action_go_next, &QAction::setEnabled);
+    connect (m_doc_browser, &documentation_browser::forwardAvailable,
+             popdown_button_next_pages, &QToolButton::setEnabled);
+    connect (m_doc_browser, &documentation_browser::historyChanged,
+             this, &documentation::update_history_menus);
 
     // Init prev/next menus
     for (int i = 0; i < max_history_entries; ++i)
@@ -405,10 +404,10 @@
         m_next_pages_menu->addAction (m_next_pages_actions[i]);
       }
 
-    connect (m_prev_pages_menu, SIGNAL (triggered (QAction *)),
-             this, SLOT (open_hist_url (QAction *)));
-    connect (m_next_pages_menu, SIGNAL (triggered (QAction *)),
-             this, SLOT (open_hist_url (QAction *)));
+    connect (m_prev_pages_menu, &QMenu::triggered,
+             this, &documentation::open_hist_url);
+    connect (m_next_pages_menu, &QMenu::triggered,
+             this, &documentation::open_hist_url);
 
     // Find
     m_tool_bar->addSeparator ();
@@ -536,9 +535,8 @@
 
                 if (! url.isEmpty ())
                   {
-                    connect (this, SIGNAL (show_single_result (const QUrl&)),
-                             this,
-                             SLOT (handle_search_result_clicked (const QUrl&)));
+                    connect (this, &documentation::show_single_result,
+                             this, &documentation::handle_search_result_clicked);
 
                     emit show_single_result (url);
                   }
@@ -965,8 +963,8 @@
     : QTextBrowser (p), m_help_engine (he), m_zoom_level (0)
   {
     setOpenLinks (false);
-    connect (this, SIGNAL (anchorClicked (QUrl)),
-             this, SLOT (handle_index_clicked (QUrl)));
+    connect (this, &documentation_browser::anchorClicked,
+             this, [=] (const QUrl& url) { handle_index_clicked (url); });
   }
 
   documentation_browser::~documentation_browser (void)
--- a/libgui/src/files-dock-widget.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/files-dock-widget.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -165,29 +165,29 @@
     popdown_menu->addSeparator ();
     popdown_menu->addAction (rmgr.icon ("folder"),
                              tr ("Set Browser Directory..."),
-                             this, SLOT (popdownmenu_search_dir (bool)));
+                             this, &files_dock_widget::popdownmenu_search_dir);
     popdown_menu->addSeparator ();
     popdown_menu->addAction (rmgr.icon ("edit-find"),
                              tr ("Find Files..."),
-                             this, SLOT (popdownmenu_findfiles (bool)));
+                             this, &files_dock_widget::popdownmenu_findfiles);
     popdown_menu->addSeparator ();
     popdown_menu->addAction (rmgr.icon ("document-new"),
                              tr ("New File..."),
-                             this, SLOT (popdownmenu_newfile (bool)));
+                             this, &files_dock_widget::popdownmenu_newfile);
     popdown_menu->addAction (rmgr.icon ("folder-new"),
                              tr ("New Directory..."),
-                             this, SLOT (popdownmenu_newdir (bool)));
+                             this, &files_dock_widget::popdownmenu_newdir);
 
     m_navigation_tool_bar->addWidget (m_current_directory);
     m_navigation_tool_bar->addAction (directory_up_action);
     m_navigation_tool_bar->addWidget (popdown_button);
 
-    connect (directory_up_action, SIGNAL (triggered ()), this,
-             SLOT (change_directory_up ()));
-    connect (m_sync_octave_directory_action, SIGNAL (triggered ()), this,
-             SLOT (do_sync_octave_directory ()));
-    connect (m_sync_browser_directory_action, SIGNAL (triggered ()), this,
-             SLOT (do_sync_browser_directory ()));
+    connect (directory_up_action, &QAction::triggered,
+             this, &files_dock_widget::change_directory_up);
+    connect (m_sync_octave_directory_action, &QAction::triggered,
+             this, &files_dock_widget::do_sync_octave_directory);
+    connect (m_sync_browser_directory_action, &QAction::triggered,
+             this, &files_dock_widget::do_sync_browser_directory);
 
     gui_settings *settings = rmgr.get_settings ();
     // FIXME: what should happen if settings is 0?
@@ -256,19 +256,18 @@
     m_current_directory->setEditText
       (m_file_system_model->fileInfo (rootPathIndex). absoluteFilePath ());
 
-    connect (m_file_tree_view, SIGNAL (activated (const QModelIndex &)),
-             this, SLOT (item_double_clicked (const QModelIndex &)));
+    connect (m_file_tree_view, &FileTreeViewer::activated,
+             this, &files_dock_widget::item_double_clicked);
 
     // add context menu to tree_view
     m_file_tree_view->setContextMenuPolicy (Qt::CustomContextMenu);
-    connect (m_file_tree_view,
-             SIGNAL (customContextMenuRequested (const QPoint &)),
-             this, SLOT (contextmenu_requested (const QPoint &)));
+    connect (m_file_tree_view, &FileTreeViewer::customContextMenuRequested,
+             this, &files_dock_widget::contextmenu_requested);
 
     m_file_tree_view->header ()->setContextMenuPolicy (Qt::CustomContextMenu);
     connect (m_file_tree_view->header (),
-             SIGNAL (customContextMenuRequested (const QPoint &)),
-             this, SLOT (headercontextmenu_requested (const QPoint &)));
+             &QHeaderView::customContextMenuRequested,
+             this, &files_dock_widget::headercontextmenu_requested);
 
     // Layout the widgets vertically with the toolbar on top
     QVBoxLayout *vbox_layout = new QVBoxLayout ();
@@ -282,8 +281,23 @@
     // FIXME: Add right-click contextual menus for copying, pasting,
     //        deleting files (and others).
 
-    connect (m_current_directory->lineEdit (), SIGNAL (returnPressed ()),
-             this, SLOT (accept_directory_line_edit ()));
+    connect (m_current_directory->lineEdit (), &QLineEdit::returnPressed,
+             this, &files_dock_widget::accept_directory_line_edit);
+
+    // FIXME: We could use
+    //
+    //    connect (m_current_directory,
+    //             QOverload<const QString&>::of (&QComboBox::activated),
+    //             this, &files_dock_widget::set_current_directory);
+    //
+    // but referring to QComboBox::activated will generate deprecated
+    // function warnings from GCC.  We could also use
+    //
+    //    connect (m_current_directory, &QComboBox::textActivated,
+    //             this, &files_dock_widget::set_current_directory);
+    //
+    // but the function textActivated was not introduced until Qt 5.14
+    // so we'll need a feature test.
 
     connect (m_current_directory, SIGNAL (activated (const QString &)),
              this, SLOT (set_current_directory (const QString &)));
@@ -483,6 +497,20 @@
                             m_columns_shown_defs.at (i)).toBool ());
       }
 
+    // FIXME: We could use
+    //
+    //   connect (&m_sig_mapper, QOverload<int>::of (&QSignalMapper::mapped),
+    //            this, &workspace_view::toggle_header);
+    //
+    // but referring to QSignalMapper::mapped will generate deprecated
+    // function warnings from GCC.  We could also use
+    //
+    //   connect (&m_sig_mapper, &QSignalMapper::mappedInt,
+    //            this, &workspace_view::toggle_header);
+    //
+    // but the function mappedInt was not introduced until Qt 5.15 so
+    // we'll need a feature test.
+
     connect (m_sig_mapper, SIGNAL (mapped (int)),
              this, SLOT (toggle_header (int)));
 
@@ -517,70 +545,68 @@
 
         // construct the context menu depending on item
         menu.addAction (rmgr.icon ("document-open"), tr ("Open"),
-                        this, SLOT (contextmenu_open (bool)));
+                        this, &files_dock_widget::contextmenu_open);
 
         if (info.isDir ())
           {
             menu.addAction (tr ("Open in System File Explorer"),
-                            this, SLOT (contextmenu_open_in_app (bool)));
+                            this, &files_dock_widget::contextmenu_open_in_app);
           }
 
         if (info.isFile ())
           menu.addAction (tr ("Open in Text Editor"),
-                          this, SLOT (contextmenu_open_in_editor (bool)));
+                          this, &files_dock_widget::contextmenu_open_in_editor);
 
         menu.addAction (tr ("Copy Selection to Clipboard"),
-                        this, SLOT (contextmenu_copy_selection (bool)));
+                        this, &files_dock_widget::contextmenu_copy_selection);
 
         if (info.isFile () && info.suffix () == "m")
-          menu.addAction (rmgr.icon ("media-playback-start"),
-                          tr ("Run"), this, SLOT (contextmenu_run (bool)));
+          menu.addAction (rmgr.icon ("media-playback-start"), tr ("Run"),
+                          this, &files_dock_widget::contextmenu_run);
 
         if (info.isFile ())
-          menu.addAction (tr ("Load Data"), this, SLOT (contextmenu_load (bool)));
+          menu.addAction (tr ("Load Data"),
+                          this, &files_dock_widget::contextmenu_load);
 
         if (info.isDir ())
           {
             menu.addSeparator ();
-            menu.addAction (rmgr.icon ("go-first"),
-                            tr ("Set Current Directory"),
-                            this, SLOT (contextmenu_setcurrentdir (bool)));
+            menu.addAction (rmgr.icon ("go-first"), tr ("Set Current Directory"),
+                            this, &files_dock_widget::contextmenu_setcurrentdir);
 
             QMenu *add_path_menu = menu.addMenu (tr ("Add to Path"));
 
             add_path_menu->addAction (tr ("Selected Directories"),
-                                      this, SLOT (contextmenu_add_to_path (bool)));
+                                      this, [=] (bool checked) { contextmenu_add_to_path (checked); });
             add_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
-                                      this, SLOT (contextmenu_add_to_path_subdirs (bool)));
+                                      this, &files_dock_widget::contextmenu_add_to_path_subdirs);
 
             QMenu *rm_path_menu = menu.addMenu (tr ("Remove from Path"));
 
-            rm_path_menu->addAction (tr ("Selected Directories"), this,
-                                     SLOT (contextmenu_rm_from_path (bool)));
+            rm_path_menu->addAction (tr ("Selected Directories"),
+                                     this, &files_dock_widget::contextmenu_rm_from_path);
             rm_path_menu->addAction (tr ("Selected Directories and Subdirectories"),
-                                     this, SLOT (contextmenu_rm_from_path_subdirs (bool)));
+                                     this, &files_dock_widget::contextmenu_rm_from_path_subdirs);
 
             menu.addSeparator ();
 
-            menu.addAction (rmgr.icon ("edit-find"),
-                            tr ("Find Files..."), this,
-                            SLOT (contextmenu_findfiles (bool)));
+            menu.addAction (rmgr.icon ("edit-find"), tr ("Find Files..."),
+                            this, &files_dock_widget::contextmenu_findfiles);
           }
 
         menu.addSeparator ();
-        menu.addAction (tr ("Rename..."), this, SLOT (contextmenu_rename (bool)));
-        menu.addAction (rmgr.icon ("edit-delete"),
-                        tr ("Delete..."), this, SLOT (contextmenu_delete (bool)));
+        menu.addAction (tr ("Rename..."),
+                        this, &files_dock_widget::contextmenu_rename);
+        menu.addAction (rmgr.icon ("edit-delete"), tr ("Delete..."),
+                        this, &files_dock_widget::contextmenu_delete);
 
         if (info.isDir ())
           {
             menu.addSeparator ();
-            menu.addAction (rmgr.icon ("document-new"),
-                            tr ("New File..."),
-                            this, SLOT (contextmenu_newfile (bool)));
-            menu.addAction (rmgr.icon ("folder-new"),
-                            tr ("New Directory..."),
-                            this, SLOT (contextmenu_newdir (bool)));
+            menu.addAction (rmgr.icon ("document-new"), tr ("New File..."),
+                            this, &files_dock_widget::contextmenu_newfile);
+            menu.addAction (rmgr.icon ("folder-new"), tr ("New Directory..."),
+                            this, &files_dock_widget::contextmenu_newdir);
           }
 
         // show the menu
--- a/libgui/src/find-files-dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/find-files-dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -64,8 +64,8 @@
     m_dir_iterator = nullptr;
 
     m_timer = new QTimer (this);
-    connect (m_timer, SIGNAL (timeout (void)),
-             this, SLOT (look_for_files (void)));
+    connect (m_timer, &QTimer::timeout,
+             this, &find_files_dialog::look_for_files);
 
     gui_settings *settings = rmgr.get_settings ();
 
@@ -86,8 +86,8 @@
 
     m_browse_button = new QPushButton (tr ("Browse..."));
     m_browse_button->setToolTip (tr ("Browse for start directory"));
-    connect (m_browse_button, SIGNAL (clicked (void)),
-             this, SLOT (browse_folders (void)));
+    connect (m_browse_button, &QPushButton::clicked,
+             this, &find_files_dialog::browse_folders);
 
     m_recurse_dirs_check = new QCheckBox (tr ("Search subdirectories"));
     m_recurse_dirs_check->setChecked (settings->value (ff_recurse_dirs).toBool ());
@@ -134,22 +134,22 @@
                 // FIXME: use value<Qt::SortOrder> instead of static cast after
                 //        dropping support of Qt 5.4
 
-    connect (m_file_list, SIGNAL (doubleClicked (const QModelIndex&)),
-             this, SLOT (item_double_clicked (const QModelIndex &)));
+    connect (m_file_list, &QTableView::doubleClicked,
+             this, &find_files_dialog::item_double_clicked);
 
     m_status_bar = new QStatusBar;
     m_status_bar->showMessage (tr ("Idle."));
 
     m_find_button = new QPushButton (tr ("Find"));
     m_find_button->setToolTip (tr ("Start search for matching files"));
-    connect (m_find_button, SIGNAL (clicked (void)),
-             this, SLOT (start_find (void)));
+    connect (m_find_button, &QPushButton::clicked,
+             this, &find_files_dialog::start_find);
 
     m_stop_button = new QPushButton (tr ("Stop"));
     m_stop_button->setToolTip (tr ("Stop searching"));
     m_stop_button->setEnabled (false);
-    connect (m_stop_button, SIGNAL (clicked (void)),
-             this, SLOT (stop_find (void)));
+    connect (m_stop_button, &QPushButton::clicked,
+             this, &find_files_dialog::stop_find);
 
     // layout everything
     QDialogButtonBox *button_box = new QDialogButtonBox (Qt::Vertical);
@@ -158,7 +158,8 @@
 
     // add dialog close button
     m_close_button = button_box->addButton (QDialogButtonBox::Close);
-    connect (button_box, SIGNAL (rejected (void)), this, SLOT (close (void)));
+    connect (button_box, &QDialogButtonBox::rejected,
+             this, &find_files_dialog::close);
 
     // name options
     QGroupBox *name_group = new QGroupBox (tr ("Filename/location"));
@@ -197,7 +198,8 @@
 
     setLayout (main_layout);
 
-    connect (this, SIGNAL (finished (int)), this, SLOT (handle_done (int)));
+    connect (this, &find_files_dialog::finished,
+             this, &find_files_dialog::handle_done);
   }
 
   find_files_dialog::~find_files_dialog (void)
--- a/libgui/src/history-dock-widget.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/history-dock-widget.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -162,18 +162,18 @@
         resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
 
         menu.addAction (rmgr.icon ("edit-copy"), tr ("Copy"), this,
-                        SLOT (handle_contextmenu_copy (bool)));
+                        &history_dock_widget::handle_contextmenu_copy);
         menu.addAction (tr ("Evaluate"), this,
-                        SLOT (handle_contextmenu_evaluate (bool)));
+                        &history_dock_widget::handle_contextmenu_evaluate);
         menu.addAction (rmgr.icon ("document-new"), tr ("Create script"), this,
-                        SLOT (handle_contextmenu_create_script (bool)));
+                        &history_dock_widget::handle_contextmenu_create_script);
       }
     if (m_filter_shown)
       menu.addAction (tr ("Hide filter"), this,
-                      SLOT (handle_contextmenu_filter ()));
+                      &history_dock_widget::handle_contextmenu_filter);
     else
       menu.addAction (tr ("Show filter"), this,
-                      SLOT (handle_contextmenu_filter ()));
+                      &history_dock_widget::handle_contextmenu_filter);
 
     menu.exec (m_history_list_view->mapToGlobal (xpos));
   }
@@ -298,9 +298,8 @@
       (tr ("Double-click a command to transfer it to the Command Window."));
     m_history_list_view->setSelectionMode (QAbstractItemView::ExtendedSelection);
     m_history_list_view->setContextMenuPolicy (Qt::CustomContextMenu);
-    connect (m_history_list_view,
-             SIGNAL (customContextMenuRequested (const QPoint &)), this,
-             SLOT (ctxMenu (const QPoint &)));
+    connect (m_history_list_view, &QListView::customContextMenuRequested,
+             this, &history_dock_widget::ctxMenu);
 
     m_filter = new QComboBox (this);
     m_filter->setToolTip (tr ("Enter text to filter the command history"));
@@ -353,16 +352,16 @@
     filter_activate (filter_state);
 
     // Connect signals and slots
-    connect (m_filter, SIGNAL (editTextChanged (const QString&)),
+    connect (m_filter, &QComboBox::editTextChanged,
              &m_sort_filter_proxy_model,
-             SLOT (setFilterWildcard (const QString&)));
-    connect (m_filter_checkbox, SIGNAL (toggled (bool)),
-             this, SLOT (filter_activate (bool)));
-    connect (m_filter->lineEdit (), SIGNAL (editingFinished (void)),
-             this, SLOT (update_filter_history (void)));
+             &QSortFilterProxyModel::setFilterWildcard);
+    connect (m_filter_checkbox, &QCheckBox::toggled,
+             this, &history_dock_widget::filter_activate);
+    connect (m_filter->lineEdit (), &QLineEdit::editingFinished,
+             this, &history_dock_widget::update_filter_history);
 
-    connect (m_history_list_view, SIGNAL (doubleClicked (QModelIndex)),
-             this, SLOT (handle_double_click (QModelIndex)));
+    connect (m_history_list_view, &QListView::doubleClicked,
+             this, &history_dock_widget::handle_double_click);
 
     m_history_list_view->setTextElideMode (Qt::ElideRight);
   }
--- a/libgui/src/interpreter-qobject.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/interpreter-qobject.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -55,8 +55,8 @@
     evmgr.connect_link (m_octave_qobj.get_qt_interpreter_events ());
     evmgr.enable ();
 
-    connect (this, SIGNAL (ready (void)),
-             &m_octave_qobj, SLOT (interpreter_ready (void)));
+    connect (this, &interpreter_qobject::ready,
+             &m_octave_qobj, &base_qobject::interpreter_ready);
 
     int exit_status = 0;
 
--- a/libgui/src/m-editor/file-editor-tab.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/m-editor/file-editor-tab.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -130,20 +130,20 @@
     // Initialize last modification date to now
     m_last_modified = QDateTime::currentDateTimeUtc();
 
-    connect (m_edit_area, SIGNAL (cursorPositionChanged (int, int)),
-             this, SLOT (handle_cursor_moved (int,int)));
-
-    connect (m_edit_area, SIGNAL (SCN_CHARADDED (int)),
-             this, SLOT (handle_char_added (int)));
-
-    connect (m_edit_area, SIGNAL (SCN_DOUBLECLICK (int, int, int)),
-             this, SLOT (handle_double_click (int, int, int)));
-
-    connect (m_edit_area, SIGNAL (linesChanged ()),
-             this, SLOT (handle_lines_changed ()));
-
-    connect (m_edit_area, SIGNAL (context_menu_edit_signal (const QString&)),
-             this, SLOT (handle_context_menu_edit (const QString&)));
+    connect (m_edit_area, &octave_qscintilla::cursorPositionChanged,
+             this, &file_editor_tab::handle_cursor_moved);
+
+    connect (m_edit_area, &octave_qscintilla::SCN_CHARADDED,
+             this, &file_editor_tab::handle_char_added);
+
+    connect (m_edit_area, &octave_qscintilla::SCN_DOUBLECLICK,
+             this, &file_editor_tab::handle_double_click);
+
+    connect (m_edit_area, &octave_qscintilla::linesChanged,
+             this, &file_editor_tab::handle_lines_changed);
+
+    connect (m_edit_area, &octave_qscintilla::context_menu_edit_signal,
+             this, &file_editor_tab::handle_context_menu_edit);
 
     // create statusbar for row/col indicator and eol mode
     m_status_bar = new QStatusBar (this);
@@ -193,13 +193,11 @@
     m_edit_area->setMarkerBackgroundColor (QColor (192,192,192),
                                            marker::unsure_debugger_position);
 
-    connect (m_edit_area, SIGNAL (marginClicked (int, int,
-                                  Qt::KeyboardModifiers)),
-             this, SLOT (handle_margin_clicked (int, int,
-                                                Qt::KeyboardModifiers)));
-
-    connect (m_edit_area, SIGNAL (context_menu_break_condition_signal (int)),
-             this, SLOT (handle_context_menu_break_condition (int)));
+    connect (m_edit_area, &octave_qscintilla::marginClicked,
+             this, &file_editor_tab::handle_margin_clicked);
+
+    connect (m_edit_area, &octave_qscintilla::context_menu_break_condition_signal,
+             this, &file_editor_tab::handle_context_menu_break_condition);
 
     // line numbers
     m_edit_area->setMarginsForegroundColor (QColor (96, 96, 96));
@@ -227,40 +225,39 @@
     // Any interpreter_event signal from a file_editor_tab_widget is
     // handled the same as for the parent main_window object.
 
-    connect (m_edit_area, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
-
-    connect (m_edit_area, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
+    connect (m_edit_area, QOverload<const fcn_callback&>::of (&octave_qscintilla::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&file_editor_tab::interpreter_event));
+
+    connect (m_edit_area, QOverload<const meth_callback&>::of (&octave_qscintilla::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&file_editor_tab::interpreter_event));
 
     // connect modified signal
-    connect (m_edit_area, SIGNAL (modificationChanged (bool)),
-             this, SLOT (update_window_title (bool)));
-
-    connect (m_edit_area, SIGNAL (copyAvailable (bool)),
-             this, SLOT (handle_copy_available (bool)));
-
-    connect (&m_file_system_watcher, SIGNAL (fileChanged (const QString&)),
-             this, SLOT (file_has_changed (const QString&)));
-
-    connect (this, SIGNAL (maybe_remove_next (int)),
-             this, SLOT (handle_remove_next (int)));
-
-    connect (this, SIGNAL (dbstop_if (const QString&, int, const QString&)),
-             this,
-             SLOT (handle_dbstop_if (const QString&, int, const QString&)));
-
-    connect (this, SIGNAL (request_add_breakpoint (int, const QString&)),
-             this, SLOT (handle_request_add_breakpoint (int, const QString&)));
-
-    connect (this, SIGNAL (api_entries_added (void)),
-             this, SLOT (handle_api_entries_added (void)));
-
-    connect (this, SIGNAL (confirm_dbquit_and_save_signal (const QString&, const QString&, bool, bool)),
-             this, SLOT (confirm_dbquit_and_save (const QString&, const QString&, bool, bool)));
-
-    connect (this, SIGNAL (do_save_file_signal (const QString&, bool, bool)),
-             this, SLOT (do_save_file (const QString&, bool, bool)));
+    connect (m_edit_area, &octave_qscintilla::modificationChanged,
+             this, &file_editor_tab::update_window_title);
+
+    connect (m_edit_area, &octave_qscintilla::copyAvailable,
+             this, &file_editor_tab::handle_copy_available);
+
+    connect (&m_file_system_watcher, &QFileSystemWatcher::fileChanged,
+             this, [=] (const QString& path) { file_has_changed (path); });
+
+    connect (this, &file_editor_tab::maybe_remove_next,
+             this, &file_editor_tab::handle_remove_next);
+
+    connect (this, &file_editor_tab::dbstop_if,
+             this, &file_editor_tab::handle_dbstop_if);
+
+    connect (this, &file_editor_tab::request_add_breakpoint,
+             this, &file_editor_tab::handle_request_add_breakpoint);
+
+    connect (this, &file_editor_tab::api_entries_added,
+             this, &file_editor_tab::handle_api_entries_added);
+
+    connect (this, &file_editor_tab::confirm_dbquit_and_save_signal,
+             this, &file_editor_tab::confirm_dbquit_and_save);
+
+    connect (this, &file_editor_tab::do_save_file_signal,
+             this, &file_editor_tab::do_save_file);
 
     resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
     gui_settings *settings = rmgr.get_settings ();
@@ -277,7 +274,7 @@
   file_editor_tab::~file_editor_tab (void)
   {
     // Tell all connected markers to self-destruct.
-    emit remove_all_breakpoints ();
+    emit remove_all_breakpoints_signal ();
     emit remove_all_positions ();
 
     // Destroy lexer attached to m_edit_area, which is not the parent
@@ -673,8 +670,8 @@
         // Build information for auto completion (APIs)
         m_lexer_apis = new QsciAPIs (lexer);
 
-        connect (this, SIGNAL (request_add_octave_apis (const QStringList&)),
-                 this, SLOT (handle_add_octave_apis (const QStringList&)));
+        connect (this, &file_editor_tab::request_add_octave_apis,
+                 this, &file_editor_tab::handle_add_octave_apis);
 
         // Get the settings for this new lexer
         update_lexer_settings ();
@@ -933,15 +930,15 @@
   void file_editor_tab::handle_api_entries_added (void)
   {
     // disconnect slot for saving prepared info if already connected
-    disconnect (m_lexer_apis, SIGNAL (apiPreparationFinished ()),
+    disconnect (m_lexer_apis, &QsciAPIs::apiPreparationFinished,
                 nullptr, nullptr);
 
     // check whether path for prepared info exists or can be created
     if (QDir ("/").mkpath (m_prep_apis_path))
       {
         // path exists, apis info can be saved there
-        connect (m_lexer_apis, SIGNAL (apiPreparationFinished ()),
-                 this, SLOT (save_apis_info ()));
+        connect (m_lexer_apis, &QsciAPIs::apiPreparationFinished,
+                 this, &file_editor_tab::save_apis_info);
       }
 
     m_lexer_apis->prepare ();  // prepare apis info
@@ -1825,8 +1822,8 @@
         msg_box->addButton (tr ("Chan&ge encoding"), QMessageBox::AcceptRole);
         msg_box->addButton (tr ("&Close"), QMessageBox::RejectRole);
 
-        connect (msg_box, SIGNAL (buttonClicked (QAbstractButton *)),
-                 this, SLOT (handle_decode_warning_answer (QAbstractButton *)));
+        connect (msg_box, &QMessageBox::buttonClicked,
+                 this, &file_editor_tab::handle_decode_warning_answer);
 
         msg_box->setWindowModality (Qt::WindowModal);
         msg_box->setAttribute (Qt::WA_DeleteOnClose);
@@ -1876,14 +1873,14 @@
         resource_manager& rmgr = m_octave_qobj.get_resource_manager ();
         rmgr.combo_encoding (enc_combo);
         m_new_encoding = enc_combo->currentText ();
-        connect (enc_combo, SIGNAL (currentTextChanged (const QString&)),
-                 this, SLOT (handle_current_enc_changed (const QString&)));
+        connect (enc_combo, &QComboBox::currentTextChanged,
+                 this, &file_editor_tab::handle_current_enc_changed);
 
         QDialogButtonBox *buttons
           = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
                                   Qt::Horizontal);
-        connect (buttons, SIGNAL (accepted ()), &dlg, SLOT (accept ()));
-        connect (buttons, SIGNAL (rejected ()), &dlg, SLOT (reject ()));
+        connect (buttons, &QDialogButtonBox::accepted, &dlg, &QDialog::accept);
+        connect (buttons, &QDialogButtonBox::rejected, &dlg, &QDialog::reject);
 
         QGridLayout *main_layout = new QGridLayout;
         main_layout->setSizeConstraint (QLayout::SetFixedSize);
@@ -1980,8 +1977,8 @@
 
          octave_value_list argout = Fdbstatus (interp, ovl (), 1);
 
-         connect (this, SIGNAL (update_breakpoints_signal (const octave_value_list&)),
-                  this, SLOT (update_breakpoints_handler (const octave_value_list&)),
+         connect (this, &file_editor_tab::update_breakpoints_signal,
+                  this, &file_editor_tab::update_breakpoints_handler,
                   Qt::QueuedConnection);
 
          emit update_breakpoints_signal (argout);
@@ -2337,21 +2334,21 @@
         fileDialog->setOption(QFileDialog::DontConfirmOverwrite);
       }
 
-    connect (fileDialog, SIGNAL (filterSelected (const QString&)),
-             this, SLOT (handle_save_as_filter_selected (const QString&)));
+    connect (fileDialog, &QFileDialog::filterSelected,
+             this, &file_editor_tab::handle_save_as_filter_selected);
 
     if (remove_on_success)
       {
-        connect (fileDialog, SIGNAL (fileSelected (const QString&)),
-                 this, SLOT (handle_save_file_as_answer_close (const QString&)));
-
-        connect (fileDialog, SIGNAL (rejected ()),
-                 this, SLOT (handle_save_file_as_answer_cancel ()));
+        connect (fileDialog, &QFileDialog::fileSelected,
+                 this, &file_editor_tab::handle_save_file_as_answer_close);
+
+        connect (fileDialog, &QFileDialog::rejected,
+                 this, &file_editor_tab::handle_save_file_as_answer_cancel);
       }
     else
       {
-        connect (fileDialog, SIGNAL (fileSelected (const QString&)),
-                 this, SLOT (handle_save_file_as_answer (const QString&)));
+        connect (fileDialog, &QFileDialog::fileSelected,
+                 this, &file_editor_tab::handle_save_file_as_answer);
       }
 
     show_dialog (fileDialog, ! valid_file_name ());
@@ -2575,8 +2572,8 @@
                                  arg (m_file_name),
                                  QMessageBox::Yes | QMessageBox::No, this);
 
-            connect (msgBox, SIGNAL (finished (int)),
-                     this, SLOT (handle_file_reload_answer (int)));
+            connect (msgBox, &QMessageBox::finished,
+                     this, &file_editor_tab::handle_file_reload_answer);
 
             msgBox->setWindowModality (Qt::WindowModal);
             msgBox->setAttribute (Qt::WA_DeleteOnClose);
@@ -2615,8 +2612,8 @@
 
         m_edit_area->setReadOnly (true);
 
-        connect (msgBox, SIGNAL (finished (int)),
-                 this, SLOT (handle_file_resave_answer (int)));
+        connect (msgBox, &QMessageBox::finished,
+                 this, &file_editor_tab::handle_file_resave_answer);
 
         msgBox->setWindowModality (Qt::WindowModal);
         msgBox->setAttribute (Qt::WA_DeleteOnClose);
@@ -2694,13 +2691,14 @@
       {
         m_edit_area->setMarginLineNumbers (2, true);
         auto_margin_width ();
-        connect (m_edit_area, SIGNAL (linesChanged ()),
-                 this, SLOT (auto_margin_width ()));
+        connect (m_edit_area, &octave_qscintilla::linesChanged,
+                 this, &file_editor_tab::auto_margin_width);
       }
     else
       {
         m_edit_area->setMarginLineNumbers (2, false);
-        disconnect (m_edit_area, SIGNAL (linesChanged ()), nullptr, nullptr);
+        disconnect (m_edit_area, &octave_qscintilla::linesChanged,
+                    nullptr, nullptr);
       }
 
     m_smart_indent = settings->value (ed_auto_indent).toBool ();
@@ -2915,10 +2913,11 @@
               }
           }
 
-        connect (this, SIGNAL (remove_position_via_debugger_linenr (int)),
-                 dp,   SLOT (handle_remove_via_original_linenr (int)));
-        connect (this, SIGNAL (remove_all_positions (void)),
-                 dp,   SLOT (handle_remove (void)));
+        connect (this, &file_editor_tab::remove_position_via_debugger_linenr,
+                 dp, &marker::handle_remove_via_original_linenr);
+
+        connect (this, &file_editor_tab::remove_all_positions,
+                 dp, &marker::handle_remove);
 
         center_current_line (false);
       }
@@ -2968,27 +2967,20 @@
                                  cond == "" ? marker::breakpoint
                                  : marker::cond_break, cond);
 
-                connect (this, SIGNAL (remove_breakpoint_via_debugger_linenr
-                                       (int)),
-                         bp,   SLOT (handle_remove_via_original_linenr (int)));
-                connect (this, SIGNAL (request_remove_breakpoint_via_editor_linenr
-                                       (int)),
-                         bp,   SLOT (handle_request_remove_via_editor_linenr
-                                     (int)));
-                connect (this, SIGNAL (remove_all_breakpoints (void)),
-                         bp,   SLOT (handle_remove (void)));
-                connect (this, SIGNAL (find_translated_line_number (int, int&,
-                                                                    marker*&)),
-                         bp,   SLOT (handle_find_translation (int, int&,
-                                                              marker*&)));
-                connect (this, SIGNAL (find_linenr_just_before (int, int&, int&)),
-                         bp,   SLOT (handle_find_just_before (int, int&, int&)));
-                connect (this, SIGNAL (report_marker_linenr (QIntList&,
-                                                             QStringList&)),
-                         bp,   SLOT (handle_report_editor_linenr (QIntList&,
-                                                                  QStringList&)));
-                connect (bp,   SIGNAL (request_remove (int)),
-                         this, SLOT (handle_request_remove_breakpoint (int)));
+                connect (this, &file_editor_tab::remove_breakpoint_via_debugger_linenr,
+                         bp, &marker::handle_remove_via_original_linenr);
+                connect (this, &file_editor_tab::request_remove_breakpoint_via_editor_linenr,
+                         bp, &marker::handle_request_remove_via_editor_linenr);
+                connect (this, &file_editor_tab::remove_all_breakpoints_signal,
+                         bp, &marker::handle_remove);
+                connect (this, &file_editor_tab::find_translated_line_number,
+                         bp, &marker::handle_find_translation);
+                connect (this, &file_editor_tab::find_linenr_just_before,
+                         bp, &marker::handle_find_just_before);
+                connect (this, &file_editor_tab::report_marker_linenr,
+                         bp, &marker::handle_report_editor_linenr);
+                connect (bp, &marker::request_remove,
+                         this, &file_editor_tab::handle_request_remove_breakpoint);
               }
           }
         else
--- a/libgui/src/m-editor/file-editor-tab.h	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/m-editor/file-editor-tab.h	Fri Apr 16 23:06:32 2021 -0400
@@ -92,7 +92,7 @@
 
     void remove_breakpoint_via_debugger_linenr (int debugger_linenr);
     void request_remove_breakpoint_via_editor_linenr (int editor_linenr);
-    void remove_all_breakpoints (void);
+    void remove_all_breakpoints_signal (void);
     void find_translated_line_number (int original_linenr,
                                       int& translated_linenr, marker*&);
     void find_linenr_just_before (int linenr, int& original_linenr,
--- a/libgui/src/m-editor/file-editor.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/m-editor/file-editor.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -478,8 +478,8 @@
       {
         // Wait for all editor tabs to have saved their files if required
 
-        connect (fe_tab, SIGNAL (tab_ready_to_close (void)),
-                 this, SLOT (handle_tab_ready_to_close (void)),
+        connect (fe_tab, &file_editor_tab::tab_ready_to_close,
+                 this, &file_editor::handle_tab_ready_to_close,
                  Qt::UniqueConnection);
       }
 
@@ -499,7 +499,7 @@
             m_closing_canceled = true;
 
             for (auto fet : fe_tab_lst)
-              disconnect (fet, SIGNAL (tab_ready_to_close (void)), 0, 0 );
+              disconnect (fet, &file_editor_tab::tab_ready_to_close, 0, 0);
 
             return false;
           }
@@ -2319,22 +2319,21 @@
 
     // signals
     connect (this, SIGNAL (request_settings_dialog (const QString&)),
-             main_win (),
-             SLOT (process_settings_dialog_request (const QString&)));
+             main_win (), SLOT (process_settings_dialog_request (const QString&)));
 
     connect (this, SIGNAL (request_dbcont_signal (void)),
              main_win (), SLOT (debug_continue (void)));
 
-    connect (m_mru_file_menu, SIGNAL (triggered (QAction *)),
-             this, SLOT (request_mru_open_file (QAction *)));
+    connect (m_mru_file_menu, &QMenu::triggered,
+             this, &file_editor::request_mru_open_file);
 
     mru_menu_update ();
 
-    connect (m_tab_widget, SIGNAL (tabCloseRequested (int)),
-             this, SLOT (handle_tab_close_request (int)));
-
-    connect (m_tab_widget, SIGNAL (currentChanged (int)),
-             this, SLOT (active_tab_changed (int)));
+    connect (m_tab_widget, &file_editor_tab_widget::tabCloseRequested,
+             this, &file_editor::handle_tab_close_request);
+
+    connect (m_tab_widget, &file_editor_tab_widget::currentChanged,
+             this, &file_editor::active_tab_changed);
 
     resize (500, 400);
     setWindowIcon (QIcon (":/actions/icons/logo.png"));
@@ -2383,62 +2382,59 @@
     file_editor_tab *f = new file_editor_tab (m_octave_qobj, directory);
 
     // signals from the qscintilla edit area
-    connect (f->qsci_edit_area (), SIGNAL (status_update (bool, bool)),
-             this, SLOT (edit_status_update (bool, bool)));
+    connect (f->qsci_edit_area (), &octave_qscintilla::status_update,
+             this, &file_editor::edit_status_update);
 
     connect (f->qsci_edit_area (), SIGNAL (show_doc_signal (const QString&)),
              main_win (), SLOT (handle_show_doc (const QString&)));
 
-    connect (f->qsci_edit_area (), SIGNAL (create_context_menu_signal (QMenu *)),
-             this, SLOT (create_context_menu (QMenu *)));
-
-    connect (f->qsci_edit_area (),
-             SIGNAL (execute_command_in_terminal_signal (const QString&)),
+    connect (f->qsci_edit_area (), &octave_qscintilla::create_context_menu_signal,
+             this, &file_editor::create_context_menu);
+
+    connect (f->qsci_edit_area (), SIGNAL (execute_command_in_terminal_signal (const QString&)),
              main_win (), SLOT (execute_command_in_terminal (const QString&)));
 
     connect (f->qsci_edit_area (),
              SIGNAL (focus_console_after_command_signal (void)),
              main_win (), SLOT (focus_console_after_command (void)));
 
-    connect (f->qsci_edit_area (),
-             SIGNAL (SCN_AUTOCCOMPLETED (const char*, int, int, int)),
-             this, SLOT (reset_focus (void)));
-
-    connect (f->qsci_edit_area (), SIGNAL (SCN_AUTOCCANCELLED (void)),
-             this, SLOT (handle_autoc_cancelled (void)));
+    connect (f->qsci_edit_area (), &octave_qscintilla::SCN_AUTOCCOMPLETED,
+             this, &file_editor::reset_focus);
+
+    connect (f->qsci_edit_area (), &octave_qscintilla::SCN_AUTOCCANCELLED,
+             this, &file_editor::handle_autoc_cancelled);
 
     // signals from the qscintilla edit area
-    connect (this, SIGNAL (enter_debug_mode_signal (void)),
-             f->qsci_edit_area (), SLOT (handle_enter_debug_mode (void)));
-
-    connect (this, SIGNAL (exit_debug_mode_signal (void)),
-             f->qsci_edit_area (), SLOT (handle_exit_debug_mode (void)));
+    connect (this, &file_editor::enter_debug_mode_signal,
+             f->qsci_edit_area (), &octave_qscintilla::handle_enter_debug_mode);
+
+    connect (this, &file_editor::exit_debug_mode_signal,
+             f->qsci_edit_area (), &octave_qscintilla::handle_exit_debug_mode);
 
     // Signals from the file editor_tab
-    connect (f, SIGNAL (autoc_closed (void)),
-             this, SLOT (reset_focus (void)));
-
-    connect (f, SIGNAL (file_name_changed (const QString&, const QString&, bool)),
-             this, SLOT (handle_file_name_changed (const QString&,
-                                                   const QString&, bool)));
-
-    connect (f, SIGNAL (editor_state_changed (bool, bool)),
-             this, SLOT (handle_editor_state_changed (bool, bool)));
-
-    connect (f, SIGNAL (tab_remove_request ()),
-             this, SLOT (handle_tab_remove_request ()));
-
-    connect (f, SIGNAL (editor_check_conflict_save (const QString&, bool)),
-             this, SLOT (check_conflict_save (const QString&, bool)));
-
-    connect (f, SIGNAL (mru_add_file (const QString&, const QString&)),
-             this, SLOT (handle_mru_add_file (const QString&, const QString&)));
+    connect (f, &file_editor_tab::autoc_closed,
+             this, &file_editor::reset_focus);
+
+    connect (f, &file_editor_tab::file_name_changed,
+             this, &file_editor::handle_file_name_changed);
+
+    connect (f, &file_editor_tab::editor_state_changed,
+             this, &file_editor::handle_editor_state_changed);
+
+    connect (f, &file_editor_tab::tab_remove_request,
+             this, &file_editor::handle_tab_remove_request);
+
+    connect (f, &file_editor_tab::editor_check_conflict_save,
+             this, &file_editor::check_conflict_save);
+
+    connect (f, &file_editor_tab::mru_add_file,
+             this, &file_editor::handle_mru_add_file);
 
     connect (f, SIGNAL (run_file_signal (const QFileInfo&)),
              main_win (), SLOT (run_file_in_terminal (const QFileInfo&)));
 
-    connect (f, SIGNAL (request_open_file (const QString&, const QString&)),
-             this, SLOT (request_open_file (const QString&, const QString&)));
+    connect (f, &file_editor_tab::request_open_file,
+             this, [=] (const QString& fname, const QString& encoding) { request_open_file (fname, encoding); });
 
     connect (f, SIGNAL (edit_mfile_request (const QString&, const QString&,
                                             const QString&, int)),
@@ -2446,18 +2442,18 @@
                                                            const QString&,
                                                            const QString&, int)));
 
-    connect (f, SIGNAL (edit_area_changed (octave_qscintilla*)),
-             this, SIGNAL (edit_area_changed (octave_qscintilla*)));
-
-    connect (f, SIGNAL (set_focus_editor_signal (QWidget*)),
-             this, SLOT (set_focus (QWidget*)));
+    connect (f, &file_editor_tab::edit_area_changed,
+             this, &file_editor::edit_area_changed);
+
+    connect (f, &file_editor_tab::set_focus_editor_signal,
+             this, &file_editor::set_focus);
 
     // Signals from the file_editor or main-win non-trivial operations
-    connect (this, SIGNAL (fetab_settings_changed (const gui_settings *)),
-             f, SLOT (notice_settings (const gui_settings *)));
-
-    connect (this, SIGNAL (fetab_change_request (const QWidget*)),
-             f, SLOT (change_editor_state (const QWidget*)));
+    connect (this, &file_editor::fetab_settings_changed,
+             f, [=] (const gui_settings *settings) { f->notice_settings (settings); });
+
+    connect (this, &file_editor::fetab_change_request,
+             f, &file_editor_tab::change_editor_state);
 
     connect (this, SIGNAL (fetab_save_file (const QWidget*, const QString&,
                                             bool)),
@@ -2467,24 +2463,24 @@
              f, SLOT (update_lexer_settings (bool)));
 
     // Signals from the file_editor trivial operations
-    connect (this, SIGNAL (fetab_recover_from_exit (void)),
-             f, SLOT (recover_from_exit (void)));
-
-    connect (this, SIGNAL (fetab_set_directory (const QString&)),
-             f, SLOT (set_current_directory (const QString&)));
-
-    connect (this, SIGNAL (fetab_zoom_in (const QWidget*)),
-             f, SLOT (zoom_in (const QWidget*)));
-    connect (this, SIGNAL (fetab_zoom_out (const QWidget*)),
-             f, SLOT (zoom_out (const QWidget*)));
-    connect (this, SIGNAL (fetab_zoom_normal (const QWidget*)),
-             f, SLOT (zoom_normal (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_context_help (const QWidget*, bool)),
-             f, SLOT (context_help (const QWidget*, bool)));
-
-    connect (this, SIGNAL (fetab_context_edit (const QWidget*)),
-             f, SLOT (context_edit (const QWidget*)));
+    connect (this, &file_editor::fetab_recover_from_exit,
+             f, &file_editor_tab::recover_from_exit);
+
+    connect (this, &file_editor::fetab_set_directory,
+             f, &file_editor_tab::set_current_directory);
+
+    connect (this, &file_editor::fetab_zoom_in,
+             f, &file_editor_tab::zoom_in);
+    connect (this, &file_editor::fetab_zoom_out,
+             f, &file_editor_tab::zoom_out);
+    connect (this, &file_editor::fetab_zoom_normal,
+             f, &file_editor_tab::zoom_normal);
+
+    connect (this, &file_editor::fetab_context_help,
+             f, &file_editor_tab::context_help);
+
+    connect (this, &file_editor::fetab_context_edit,
+             f, &file_editor_tab::context_edit);
 
     connect (this, SIGNAL (fetab_save_file (const QWidget*)),
              f, SLOT (save_file (const QWidget*)));
@@ -2492,96 +2488,92 @@
     connect (this, SIGNAL (fetab_save_file_as (const QWidget*)),
              f, SLOT (save_file_as (const QWidget*)));
 
-    connect (this, SIGNAL (fetab_print_file (const QWidget*)),
-             f, SLOT (print_file (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_run_file (const QWidget*, bool)),
-             f, SLOT (run_file (const QWidget*, bool)));
-
-    connect (this, SIGNAL (fetab_context_run (const QWidget*)),
-             f, SLOT (context_run (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_toggle_bookmark (const QWidget*)),
-             f, SLOT (toggle_bookmark (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_next_bookmark (const QWidget*)),
-             f, SLOT (next_bookmark (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_previous_bookmark (const QWidget*)),
-             f, SLOT (previous_bookmark (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_remove_bookmark (const QWidget*)),
-             f, SLOT (remove_bookmark (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_toggle_breakpoint (const QWidget*)),
-             f, SLOT (toggle_breakpoint (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_next_breakpoint (const QWidget*)),
-             f, SLOT (next_breakpoint (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_previous_breakpoint (const QWidget*)),
-             f, SLOT (previous_breakpoint (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_remove_all_breakpoints (const QWidget*)),
-             f, SLOT (remove_all_breakpoints (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_scintilla_command (const QWidget *,
-                                                    unsigned int)),
-             f, SLOT (scintilla_command (const QWidget *, unsigned int)));
-
-    connect (this, SIGNAL (fetab_comment_selected_text (const QWidget*, bool)),
-             f, SLOT (comment_selected_text (const QWidget*, bool)));
-
-    connect (this, SIGNAL (fetab_uncomment_selected_text (const QWidget*)),
-             f, SLOT (uncomment_selected_text (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_indent_selected_text (const QWidget*)),
-             f, SLOT (indent_selected_text (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_unindent_selected_text (const QWidget*)),
-             f, SLOT (unindent_selected_text (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_smart_indent_line_or_selected_text (const QWidget*)),
-             f, SLOT (smart_indent_line_or_selected_text (const QWidget*)));
-
-    connect (this,
-             SIGNAL (fetab_convert_eol (const QWidget*, QsciScintilla::EolMode)),
-             f, SLOT (convert_eol (const QWidget*, QsciScintilla::EolMode)));
-
-    connect (this, SIGNAL (fetab_goto_line (const QWidget*, int)),
-             f, SLOT (goto_line (const QWidget*, int)));
-
-    connect (this, SIGNAL (fetab_move_match_brace (const QWidget*, bool)),
-             f, SLOT (move_match_brace (const QWidget*, bool)));
-
-    connect (this, SIGNAL (fetab_completion (const QWidget*)),
-             f, SLOT (show_auto_completion (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_set_focus (const QWidget*)),
-             f, SLOT (set_focus (const QWidget*)));
-
-    connect (this, SIGNAL (fetab_insert_debugger_pointer (const QWidget*, int)),
-             f, SLOT (insert_debugger_pointer (const QWidget*, int)));
-
-    connect (this, SIGNAL (fetab_delete_debugger_pointer (const QWidget*, int)),
-             f, SLOT (delete_debugger_pointer (const QWidget*, int)));
+    connect (this, &file_editor::fetab_print_file,
+             f, &file_editor_tab::print_file);
+
+    connect (this, &file_editor::fetab_run_file,
+             f, &file_editor_tab::run_file);
+
+    connect (this, &file_editor::fetab_context_run,
+             f, &file_editor_tab::context_run);
+
+    connect (this, &file_editor::fetab_toggle_bookmark,
+             f, &file_editor_tab::toggle_bookmark);
+
+    connect (this, &file_editor::fetab_next_bookmark,
+             f, &file_editor_tab::next_bookmark);
+
+    connect (this, &file_editor::fetab_previous_bookmark,
+             f, &file_editor_tab::previous_bookmark);
+
+    connect (this, &file_editor::fetab_remove_bookmark,
+             f, &file_editor_tab::remove_bookmark);
+
+    connect (this, &file_editor::fetab_toggle_breakpoint,
+             f, &file_editor_tab::toggle_breakpoint);
+
+    connect (this, &file_editor::fetab_next_breakpoint,
+             f, &file_editor_tab::next_breakpoint);
+
+    connect (this, &file_editor::fetab_previous_breakpoint,
+             f, &file_editor_tab::previous_breakpoint);
+
+    connect (this, &file_editor::fetab_remove_all_breakpoints,
+             f, &file_editor_tab::remove_all_breakpoints);
+
+    connect (this, &file_editor::fetab_scintilla_command,
+             f, &file_editor_tab::scintilla_command);
+
+    connect (this, &file_editor::fetab_comment_selected_text,
+             f, &file_editor_tab::comment_selected_text);
+
+    connect (this, &file_editor::fetab_uncomment_selected_text,
+             f, &file_editor_tab::uncomment_selected_text);
+
+    connect (this, &file_editor::fetab_indent_selected_text,
+             f, &file_editor_tab::indent_selected_text);
+
+    connect (this, &file_editor::fetab_unindent_selected_text,
+             f, &file_editor_tab::unindent_selected_text);
+
+    connect (this, &file_editor::fetab_smart_indent_line_or_selected_text,
+             f, &file_editor_tab::smart_indent_line_or_selected_text);
+
+    connect (this, &file_editor::fetab_convert_eol,
+             f, &file_editor_tab::convert_eol);
+
+    connect (this, &file_editor::fetab_goto_line,
+             f, &file_editor_tab::goto_line);
+
+    connect (this, &file_editor::fetab_move_match_brace,
+             f, &file_editor_tab::move_match_brace);
+
+    connect (this, &file_editor::fetab_completion,
+             f, &file_editor_tab::show_auto_completion);
+
+    connect (this, &file_editor::fetab_set_focus,
+             f, &file_editor_tab::set_focus);
+
+    connect (this, &file_editor::fetab_insert_debugger_pointer,
+             f, &file_editor_tab::insert_debugger_pointer);
+
+    connect (this, &file_editor::fetab_delete_debugger_pointer,
+             f, &file_editor_tab::delete_debugger_pointer);
 
     connect (f, SIGNAL (debug_quit_signal (void)),
              main_win (), SLOT (debug_quit (void)));
 
-    connect (this, SIGNAL (fetab_do_breakpoint_marker (bool, const QWidget*,
-                                                       int, const QString&)),
-             f, SLOT (do_breakpoint_marker (bool, const QWidget*, int,
-                                            const QString&)));
+    connect (this, &file_editor::fetab_do_breakpoint_marker,
+             f, &file_editor_tab::do_breakpoint_marker);
 
     // Any interpreter_event signal from a file_editor_tab_widget is
     // handled the same as for the parent main_window object.
 
-    connect (f, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
-
-    connect (f, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
+    connect (f, QOverload<const fcn_callback&>::of (&file_editor_tab::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&file_editor::interpreter_event));
+
+    connect (f, QOverload<const meth_callback&>::of (&file_editor_tab::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&file_editor::interpreter_event));
 
     return f;
   }
--- a/libgui/src/m-editor/find-dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/m-editor/find-dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -144,23 +144,23 @@
     _search_selection_check_box = new QCheckBox (tr ("Search se&lection"));
     _search_selection_check_box->setCheckable (true);
 
-    connect (_find_next_button,   SIGNAL (clicked ()),
-             this,                SLOT (find_next ()));
-    connect (_find_prev_button,   SIGNAL (clicked ()),
-             this,                SLOT (find_prev ()));
-    connect (_more_button,        SIGNAL (toggled (bool)),
-             _extension,          SLOT (setVisible (bool)));
-    connect (_replace_button,     SIGNAL (clicked ()),
-             this,                SLOT (replace ()));
-    connect (_replace_all_button, SIGNAL (clicked ()),
-             this,                SLOT (replace_all ()));
-    connect (_backward_check_box, SIGNAL (stateChanged (int)),
-             this,                SLOT (handle_backward_search_changed (int)));
-    connect (_button_box,         SIGNAL (rejected ()),
-             this,                SLOT (close ()));
+    connect (_find_next_button, &QPushButton::clicked,
+             this, &find_dialog::find_next);
+    connect (_find_prev_button, &QPushButton::clicked,
+             this, &find_dialog::find_prev);
+    connect (_more_button, &QPushButton::toggled,
+             _extension, &QWidget::setVisible);
+    connect (_replace_button, &QPushButton::clicked,
+             this, &find_dialog::replace);
+    connect (_replace_all_button, &QPushButton::clicked,
+             this, &find_dialog::replace_all);
+    connect (_backward_check_box, &QCheckBox::stateChanged,
+             this, &find_dialog::handle_backward_search_changed);
+    connect (_button_box, &QDialogButtonBox::rejected,
+             this, &find_dialog::close);
 
-    connect (_search_selection_check_box, SIGNAL (stateChanged (int)),
-             this,                        SLOT (handle_sel_search_changed (int)));
+    connect (_search_selection_check_box, &QCheckBox::stateChanged,
+             this, &find_dialog::handle_sel_search_changed);
 
     QVBoxLayout *extension_layout = new QVBoxLayout ();
     extension_layout->setMargin (0);
@@ -212,8 +212,8 @@
     _edit_area = edit_area;
     _search_selection_check_box->setEnabled (edit_area->hasSelectedText ());
 
-    connect (_edit_area, SIGNAL (copyAvailable (bool)),
-             this,       SLOT (handle_selection_changed (bool)),
+    connect (_edit_area, &octave_qscintilla::copyAvailable,
+             this, &find_dialog::handle_selection_changed,
              Qt::UniqueConnection);
   }
 
--- a/libgui/src/m-editor/octave-qscintilla.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/m-editor/octave-qscintilla.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -115,16 +115,14 @@
       m_selection_line (-1), m_selection_col (-1), m_indicator_id (1),
       m_tooltip_font (QToolTip::font ())
   {
-    connect (this, SIGNAL (textChanged (void)),
-             this, SLOT (text_changed (void)));
+    connect (this, &octave_qscintilla::textChanged,
+             this, &octave_qscintilla::text_changed);
 
-    connect (this, SIGNAL (cursorPositionChanged (int, int)),
-             this, SLOT (cursor_position_changed (int, int)));
+    connect (this, &octave_qscintilla::cursorPositionChanged,
+             this, &octave_qscintilla::cursor_position_changed);
 
-    connect (this, SIGNAL (ctx_menu_run_finished_signal (bool, int, QTemporaryFile*,
-                                                         QTemporaryFile*, bool, bool)),
-             this, SLOT (ctx_menu_run_finished (bool, int, QTemporaryFile*,
-                                                QTemporaryFile*, bool, bool)),
+    connect (this, &octave_qscintilla::ctx_menu_run_finished_signal,
+             this, &octave_qscintilla::ctx_menu_run_finished,
              Qt::QueuedConnection);
 
     // clear scintilla edit shortcuts that are handled by the editor
@@ -291,12 +289,12 @@
             if (! m_word_at_cursor.isEmpty ())
               {
                 context_menu->addAction (tr ("Help on") + ' ' + m_word_at_cursor,
-                                         this, SLOT (contextmenu_help (bool)));
+                                         this, &octave_qscintilla::contextmenu_help);
                 context_menu->addAction (tr ("Documentation on")
                                          + ' ' + m_word_at_cursor,
-                                         this, SLOT (contextmenu_doc (bool)));
+                                         this, &octave_qscintilla::contextmenu_doc);
                 context_menu->addAction (tr ("Edit") + ' ' + m_word_at_cursor,
-                                         this, SLOT (contextmenu_edit (bool)));
+                                         this, &octave_qscintilla::contextmenu_edit);
               }
           }
       }
@@ -311,7 +309,7 @@
 
         QAction *act
           = context_menu->addAction (tr ("dbstop if ..."), this,
-                                     SLOT (contextmenu_break_condition (bool)));
+                                     &octave_qscintilla::contextmenu_break_condition);
         act->setData (local_pos);
       }
 #endif
--- a/libgui/src/main-window.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/main-window.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -746,18 +746,18 @@
 
     reader->moveToThread (worker_thread);
 
-    connect (reader, SIGNAL (display_news_signal (const QString&)),
-             this, SLOT (display_community_news (const QString&)));
-
-    connect (worker_thread, SIGNAL (started (void)),
-             reader, SLOT (process (void)));
-
-    connect (reader, SIGNAL (finished (void)), worker_thread, SLOT (quit (void)));
-
-    connect (reader, SIGNAL (finished (void)), reader, SLOT (deleteLater (void)));
-
-    connect (worker_thread, SIGNAL (finished (void)),
-             worker_thread, SLOT (deleteLater (void)));
+    connect (reader, &news_reader::display_news_signal,
+             this, &main_window::display_community_news);
+
+    connect (worker_thread, &QThread::started,
+             reader, &news_reader::process);
+
+    connect (reader, &news_reader::finished, worker_thread, &QThread::quit);
+
+    connect (reader, &news_reader::finished, reader, &news_reader::deleteLater);
+
+    connect (worker_thread, &QThread::finished,
+             worker_thread, &QThread::deleteLater);
 
     worker_thread->start ();
   }
@@ -848,8 +848,8 @@
 
     m_settings_dlg = new settings_dialog (this, m_octave_qobj, desired_tab);
 
-    connect (m_settings_dlg, SIGNAL (apply_new_settings (void)),
-             this, SLOT (request_reload_settings (void)));
+    connect (m_settings_dlg, &settings_dialog::apply_new_settings,
+             this, &main_window::request_reload_settings);
 
     m_settings_dlg->setModal (false);
     m_settings_dlg->setAttribute (Qt::WA_DeleteOnClose);
@@ -1297,8 +1297,8 @@
     if (! settings->value (global_use_native_dialogs).toBool ())
       fileDialog->setOption(QFileDialog::DontUseNativeDialog);
 
-    connect (fileDialog, SIGNAL (filesSelected (const QStringList&)),
-             this, SLOT (request_open_files (const QStringList&)));
+    connect (fileDialog, &QFileDialog::filesSelected,
+             this, &main_window::request_open_files);
 
     fileDialog->setWindowModality (Qt::NonModal);
     fileDialog->setAttribute (Qt::WA_DeleteOnClose);
@@ -1758,22 +1758,21 @@
     // Any interpreter_event signal from a set_path_dialog object is
     // handled the same as for the main_window object.
 
-    connect (m_set_path_dlg, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
-
-    connect (m_set_path_dlg, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
-
-    connect (m_set_path_dlg,
-             SIGNAL (modify_path_signal (const octave_value_list&, bool, bool)),
-             this, SLOT (modify_path (const octave_value_list&, bool, bool)));
+    connect (m_set_path_dlg, QOverload<const fcn_callback&>::of (&set_path_dialog::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&main_window::interpreter_event));
+
+    connect (m_set_path_dlg, QOverload<const meth_callback&>::of (&set_path_dialog::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&main_window::interpreter_event));
+
+    connect (m_set_path_dlg, &set_path_dialog::modify_path_signal,
+             this, &main_window::modify_path);
 
     interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
 
     qt_interpreter_events *qt_link = interp_qobj->qt_link ();
 
-    connect (qt_link, SIGNAL (update_path_dialog_signal (void)),
-             m_set_path_dlg, SLOT (update_model (void)));
+    connect (qt_link, &qt_interpreter_events::update_path_dialog_signal,
+             m_set_path_dlg, &set_path_dialog::update_model);
 
     // Now that all the signal connections are in place for the dialog
     // we can set the initial value of the path in the model.
@@ -1788,15 +1787,14 @@
       {
         m_find_files_dlg = new find_files_dialog (this, m_octave_qobj);
 
-        connect (m_find_files_dlg, SIGNAL (finished (int)),
-                 this, SLOT (find_files_finished (int)));
-
-        connect (m_find_files_dlg, SIGNAL (dir_selected (const QString &)),
-                 m_file_browser_window,
-                 SLOT (set_current_directory (const QString&)));
-
-        connect (m_find_files_dlg, SIGNAL (file_selected (const QString &)),
-                 this, SIGNAL (open_file_signal (const QString &)));
+        connect (m_find_files_dlg, &find_files_dialog::finished,
+                 this, &main_window::find_files_finished);
+
+        connect (m_find_files_dlg, &find_files_dialog::dir_selected,
+                 m_file_browser_window, &files_dock_widget::set_current_directory);
+
+        connect (m_find_files_dlg, &find_files_dialog::file_selected,
+                 this, QOverload<const QString&>::of (&main_window::open_file_signal));
 
         m_find_files_dlg->setWindowModality (Qt::NonModal);
       }
@@ -2020,65 +2018,59 @@
 
     m_workspace_window->setModel (m_workspace_model);
 
-    connect (m_workspace_model, SIGNAL (model_changed (void)),
-             m_workspace_window, SLOT (handle_model_changed (void)));
+    connect (m_workspace_model, &workspace_model::model_changed,
+             m_workspace_window, &workspace_view::handle_model_changed);
 
     interpreter_qobject *interp_qobj = m_octave_qobj.interpreter_qobj ();
 
     qt_interpreter_events *qt_link = interp_qobj->qt_link ();
 
-    connect (qt_link,
-             SIGNAL (edit_variable_signal (const QString&,
-                                           const octave_value&)),
-             this,
-             SLOT (edit_variable (const QString&, const octave_value&)));
-
-    connect (qt_link, SIGNAL (refresh_variable_editor_signal (void)),
-             this, SLOT (refresh_variable_editor (void)));
-
-    connect (m_workspace_window,
-             SIGNAL (rename_variable_signal (const QString&, const QString&)),
-             this,
-             SLOT (handle_rename_variable_request (const QString&,
-                                                   const QString&)));
-
-    connect (m_variable_editor_window, SIGNAL (updated (void)),
-             this, SLOT (handle_variable_editor_update (void)));
+    connect (qt_link, &qt_interpreter_events::edit_variable_signal,
+             this, &main_window::edit_variable);
+
+    connect (qt_link, &qt_interpreter_events::refresh_variable_editor_signal,
+             this, &main_window::refresh_variable_editor);
+
+    connect (m_workspace_window, &workspace_view::rename_variable_signal,
+             this, &main_window::handle_rename_variable_request);
+
+    connect (m_variable_editor_window, &variable_editor::updated,
+             this, &main_window::handle_variable_editor_update);
 
     construct_menu_bar ();
 
     construct_tool_bar ();
 
     // Order is important.  Deleting gui_settings must be last.
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_command_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_history_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_file_browser_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_doc_browser_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_workspace_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_editor_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             m_variable_editor_window, SLOT (save_settings (void)));
-
-    connect (qApp, SIGNAL (aboutToQuit (void)),
-             this, SLOT (prepare_to_exit (void)));
-
-    connect (qApp, SIGNAL (focusChanged (QWidget*, QWidget*)),
-             this, SLOT (focus_changed (QWidget*, QWidget*)));
-
-    connect (this, SIGNAL (settings_changed (const gui_settings *)),
-             this, SLOT (notice_settings (const gui_settings *)));
+    connect (qApp, &QApplication::aboutToQuit,
+             m_command_window, &terminal_dock_widget::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_history_window, &history_dock_widget::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_file_browser_window, &files_dock_widget::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_doc_browser_window, &documentation_dock_widget::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_workspace_window, &workspace_view::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_editor_window, &file_editor_interface::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             m_variable_editor_window, &variable_editor::save_settings);
+
+    connect (qApp, &QApplication::aboutToQuit,
+             this, &main_window::prepare_to_exit);
+
+    connect (qApp, &QApplication::focusChanged,
+             this, &main_window::focus_changed);
+
+    connect (this, &main_window::settings_changed,
+             this, [=] (const gui_settings *settings) { notice_settings (settings); });
 
     connect (this, SIGNAL (editor_focus_changed (bool)),
              m_editor_window, SLOT (enable_menu_shortcuts (bool)));
@@ -2098,20 +2090,20 @@
              SIGNAL (request_settings_dialog (const QString&)),
              this, SLOT (process_settings_dialog_request (const QString&)));
 
-    connect (m_file_browser_window, SIGNAL (load_file_signal (const QString&)),
-             this, SLOT (handle_load_workspace_request (const QString&)));
-
-    connect (m_file_browser_window, SIGNAL (open_any_signal (const QString&)),
-             this, SLOT (handle_open_any_request (const QString&)));
-
-    connect (m_file_browser_window, SIGNAL (find_files_signal (const QString&)),
-             this, SLOT (find_files (const QString&)));
+    connect (m_file_browser_window, &files_dock_widget::load_file_signal,
+             this, &main_window::handle_load_workspace_request);
+
+    connect (m_file_browser_window, &files_dock_widget::open_any_signal,
+             this, &main_window::handle_open_any_request);
+
+    connect (m_file_browser_window, &files_dock_widget::find_files_signal,
+             this, &main_window::find_files);
 
     // Connections for signals from the interpreter thread where the slot
     // should be executed by the gui thread
 
-    connect (this, SIGNAL (warning_function_not_found_signal (const QString&)),
-             this, SLOT (warning_function_not_found (const QString&)));
+    connect (this, &main_window::warning_function_not_found_signal,
+             this, &main_window::warning_function_not_found);
 
     setWindowTitle ("Octave");
 
@@ -2161,15 +2153,14 @@
 #endif
 
     // Signals for removing/renaming files/dirs in the temrinal window
-    connect (qt_link,
-             SIGNAL (file_remove_signal (const QString&, const QString&)),
-             this, SLOT (file_remove_proxy (const QString&, const QString&)));
-
-    connect (this, SIGNAL (interpreter_event (const fcn_callback&)),
-             &m_octave_qobj, SLOT (interpreter_event (const fcn_callback&)));
-
-    connect (this, SIGNAL (interpreter_event (const meth_callback&)),
-             &m_octave_qobj, SLOT (interpreter_event (const meth_callback&)));
+    connect (qt_link, &qt_interpreter_events::file_remove_signal,
+             this, &main_window::file_remove_proxy);
+
+    connect (this, QOverload<const fcn_callback&>::of (&main_window::interpreter_event),
+             &m_octave_qobj, QOverload<const fcn_callback&>::of (&base_qobject::interpreter_event));
+
+    connect (this, QOverload<const meth_callback&>::of (&main_window::interpreter_event),
+             &m_octave_qobj, QOverload<const meth_callback&>::of (&base_qobject::interpreter_event));
 
     configure_shortcuts ();
   }
@@ -2180,108 +2171,85 @@
 
     qt_interpreter_events *qt_link = interp_qobj->qt_link ();
 
-    connect (qt_link, SIGNAL (settings_changed (const gui_settings *, bool)),
-             this, SLOT (notice_settings (const gui_settings *, bool)));
-
-    connect (qt_link, SIGNAL (apply_new_settings (void)),
-             this, SLOT (request_reload_settings (void)));
+    connect (qt_link, &qt_interpreter_events::settings_changed,
+             this, &main_window::notice_settings);
+
+    connect (qt_link, &qt_interpreter_events::apply_new_settings,
+             this, &main_window::request_reload_settings);
 
     if (m_octave_qobj.experimental_terminal_widget ())
       {
-        connect (qt_link, SIGNAL (interpreter_output_signal (const QString&)),
-                 m_command_window,
-                 SLOT (interpreter_output (const QString&)));
-
-        connect (qt_link, SIGNAL (update_prompt_signal (const QString&)),
-                 m_command_window, SLOT (update_prompt (const QString&)));
+        connect (qt_link, &qt_interpreter_events::interpreter_output_signal,
+                 m_command_window, &terminal_dock_widget::interpreter_output);
+
+        connect (qt_link, &qt_interpreter_events::update_prompt_signal,
+                 m_command_window, &terminal_dock_widget::update_prompt);
       }
 
-    connect (qt_link,
-             SIGNAL (set_workspace_signal (bool, bool, const symbol_info_list&)),
-             m_workspace_model,
-             SLOT (set_workspace (bool, bool, const symbol_info_list&)));
-
-    connect (qt_link, SIGNAL (clear_workspace_signal (void)),
-             m_workspace_model, SLOT (clear_workspace (void)));
-
-    connect (qt_link, SIGNAL (directory_changed_signal (QString)),
-             this, SLOT (update_octave_directory (QString)));
-
-    connect (qt_link, SIGNAL (directory_changed_signal (QString)),
-             m_file_browser_window, SLOT (update_octave_directory (QString)));
+    connect (qt_link, &qt_interpreter_events::set_workspace_signal,
+             m_workspace_model, &workspace_model::set_workspace);
+
+    connect (qt_link, &qt_interpreter_events::clear_workspace_signal,
+             m_workspace_model, &workspace_model::clear_workspace);
+
+    connect (qt_link, &qt_interpreter_events::directory_changed_signal,
+             this, &main_window::update_octave_directory);
+
+    connect (qt_link, &qt_interpreter_events::directory_changed_signal,
+             m_file_browser_window, &files_dock_widget::update_octave_directory);
 
     connect (qt_link, SIGNAL (directory_changed_signal (QString)),
              m_editor_window, SLOT (update_octave_directory (QString)));
 
-    connect (qt_link,
-             SIGNAL (execute_command_in_terminal_signal (QString)),
-             this, SLOT (execute_command_in_terminal (QString)));
-
-    connect (qt_link,
-             SIGNAL (set_history_signal (const QStringList&)),
-             m_history_window, SLOT (set_history (const QStringList&)));
-
-    connect (qt_link,
-             SIGNAL (append_history_signal (const QString&)),
-             m_history_window, SLOT (append_history (const QString&)));
-
-    connect (qt_link,
-             SIGNAL (clear_history_signal (void)),
-             m_history_window, SLOT (clear_history (void)));
-
-    connect (qt_link, SIGNAL (enter_debugger_signal (void)),
-             this, SLOT (handle_enter_debugger (void)));
-
-    connect (qt_link, SIGNAL (exit_debugger_signal (void)),
-             this, SLOT (handle_exit_debugger (void)));
-
-    connect (qt_link,
-             SIGNAL (show_preferences_signal (void)),
-             this, SLOT (process_settings_dialog_request (void)));
+    connect (qt_link, &qt_interpreter_events::execute_command_in_terminal_signal,
+             this, &main_window::execute_command_in_terminal);
+
+    connect (qt_link, &qt_interpreter_events::set_history_signal,
+             m_history_window, &history_dock_widget::set_history);
+
+    connect (qt_link, &qt_interpreter_events::append_history_signal,
+             m_history_window, &history_dock_widget::append_history);
+
+    connect (qt_link, &qt_interpreter_events::clear_history_signal,
+             m_history_window, &history_dock_widget::clear_history);
+
+    connect (qt_link, &qt_interpreter_events::enter_debugger_signal,
+             this, &main_window::handle_enter_debugger);
+
+    connect (qt_link, &qt_interpreter_events::exit_debugger_signal,
+             this, &main_window::handle_exit_debugger);
+
+    connect (qt_link, &qt_interpreter_events::show_preferences_signal,
+             this, [=] () { process_settings_dialog_request (); });
 
     connect (qt_link,
              SIGNAL (edit_file_signal (const QString&)),
              m_active_editor,
              SLOT (handle_edit_file_request (const QString&)));
 
-    connect (qt_link,
-             SIGNAL (insert_debugger_pointer_signal (const QString&, int)),
-             this,
-             SLOT (handle_insert_debugger_pointer_request (const QString&,
-                                                           int)));
-
-    connect (qt_link,
-             SIGNAL (delete_debugger_pointer_signal (const QString&, int)),
-             this,
-             SLOT (handle_delete_debugger_pointer_request (const QString&,
-                                                           int)));
-
-    connect (qt_link,
-             SIGNAL (update_breakpoint_marker_signal (bool, const QString&,
-                                                      int, const QString&)),
-             this,
-             SLOT (handle_update_breakpoint_marker_request (bool, const QString&,
-                                                            int, const QString&)));
-
-    connect (qt_link,
-             SIGNAL (show_doc_signal (const QString &)),
-             this, SLOT (handle_show_doc (const QString &)));
-
-    connect (qt_link,
-             SIGNAL (register_doc_signal (const QString &)),
-             this, SLOT (handle_register_doc (const QString &)));
-
-    connect (qt_link,
-             SIGNAL (unregister_doc_signal (const QString &)),
-             this, SLOT (handle_unregister_doc (const QString &)));
-
-    connect (qt_link, SIGNAL (gui_status_update_signal (const QString &,
-                                                        const QString &)),
-             this, SLOT (handle_gui_status_update (const QString &,
-                                                   const QString &)));
-
-    connect (qt_link, SIGNAL (update_gui_lexer_signal (bool)),
-             this, SIGNAL (update_gui_lexer_signal (bool)));
+    connect (qt_link, &qt_interpreter_events::insert_debugger_pointer_signal,
+             this, &main_window::handle_insert_debugger_pointer_request);
+
+    connect (qt_link, &qt_interpreter_events::delete_debugger_pointer_signal,
+             this, &main_window::handle_delete_debugger_pointer_request);
+
+    connect (qt_link, &qt_interpreter_events::update_breakpoint_marker_signal,
+             this, &main_window::handle_update_breakpoint_marker_request);
+
+    connect (qt_link, &qt_interpreter_events::show_doc_signal,
+             this, &main_window::handle_show_doc);
+
+    connect (qt_link, &qt_interpreter_events::register_doc_signal,
+             this, &main_window::handle_register_doc);
+
+    connect (qt_link, &qt_interpreter_events::unregister_doc_signal,
+             this, &main_window::handle_unregister_doc);
+
+    connect (qt_link, &qt_interpreter_events::gui_status_update_signal,
+             this, &main_window::handle_gui_status_update);
+
+    connect (qt_link, &qt_interpreter_events::update_gui_lexer_signal,
+             this, &main_window::update_gui_lexer_signal);
   }
 
   QAction* main_window::add_action (QMenu *menu, const QIcon& icon,
@@ -2433,21 +2401,22 @@
 
     m_copy_action
       = edit_menu->addAction (rmgr.icon ("edit-copy"), tr ("Copy"), this,
-                              SLOT (copyClipboard (void)));
+                              &main_window::copyClipboard);
     m_copy_action->setShortcutContext (Qt::ApplicationShortcut);
 
     m_paste_action
       = edit_menu->addAction (rmgr.icon ("edit-paste"), tr ("Paste"), this,
-                              SLOT (pasteClipboard (void)));
+                              &main_window::pasteClipboard);
     m_paste_action->setShortcutContext (Qt::ApplicationShortcut);
 
     m_select_all_action
-      = edit_menu->addAction (tr ("Select All"), this, SLOT (selectAll (void)));
+      = edit_menu->addAction (tr ("Select All"), this,
+                              &main_window::selectAll);
     m_select_all_action->setShortcutContext (Qt::ApplicationShortcut);
 
     m_clear_clipboard_action
       = edit_menu->addAction (tr ("Clear Clipboard"), this,
-                              SLOT (clear_clipboard (void)));
+                              &main_window::clear_clipboard);
 
     edit_menu->addSeparator ();
 
@@ -2474,20 +2443,20 @@
       = edit_menu->addAction (rmgr.icon ("preferences-system"),
                               tr ("Preferences..."));
 
-    connect (m_find_files_action, SIGNAL (triggered (void)),
-             this, SLOT (find_files (void)));
-
-    connect (m_clear_command_window_action, SIGNAL (triggered (void)),
-             this, SLOT (handle_clear_command_window_request (void)));
-
-    connect (m_clear_command_history_action, SIGNAL (triggered (void)),
-             this, SLOT (handle_clear_history_request (void)));
-
-    connect (m_clear_workspace_action, SIGNAL (triggered (void)),
-             this, SLOT (handle_clear_workspace_request (void)));
-
-    connect (m_clipboard, SIGNAL (dataChanged (void)),
-             this, SLOT (clipboard_has_changed (void)));
+    connect (m_find_files_action, &QAction::triggered,
+             this, [=] () { find_files (); });
+
+    connect (m_clear_command_window_action, &QAction::triggered,
+             this, &main_window::handle_clear_command_window_request);
+
+    connect (m_clear_command_history_action, &QAction::triggered,
+             this, &main_window::handle_clear_history_request);
+
+    connect (m_clear_workspace_action, &QAction::triggered,
+             this, &main_window::handle_clear_workspace_request);
+
+    connect (m_clipboard, &QClipboard::dataChanged,
+             this, &main_window::clipboard_has_changed);
     clipboard_has_changed ();
 #if defined (Q_OS_WIN32)
     // Always enable paste action (unreliable clipboard signals in windows)
@@ -2497,11 +2466,11 @@
     m_clear_clipboard_action->setEnabled (true);
 #endif
 
-    connect (m_preferences_action, SIGNAL (triggered (void)),
-             this, SLOT (process_settings_dialog_request (void)));
-
-    connect (m_set_path_action, SIGNAL (triggered (void)),
-             this, SLOT (handle_set_path_dialog_request (void)));
+    connect (m_preferences_action, &QAction::triggered,
+             this, [=] () { process_settings_dialog_request (); });
+
+    connect (m_set_path_action, &QAction::triggered,
+             this, &main_window::handle_set_path_dialog_request);
 
   }
 
@@ -2604,7 +2573,8 @@
         else
           {
             // action for focus of dock widget
-            connect (action, SIGNAL (triggered (void)), widget, SLOT (activate (void)));
+            connect (action, SIGNAL (triggered (void)),
+                     widget, SLOT (activate (void)));
           }
       }
     else
@@ -2763,20 +2733,21 @@
       = m_main_tool_bar->addAction (rmgr.icon ("folder"),
                                     tr ("Browse directories"));
 
-    connect (m_current_directory_combo_box, SIGNAL (activated (QString)),
-             this, SLOT (set_current_working_directory (QString)));
-
-    connect (m_current_directory_combo_box->lineEdit (), SIGNAL (returnPressed (void)),
-             this, SLOT (accept_directory_line_edit (void)));
-
-    connect (current_dir_search, SIGNAL (triggered (void)),
-             this, SLOT (browse_for_directory (void)));
-
-    connect (current_dir_up, SIGNAL (triggered (void)),
-             this, SLOT (change_directory_up (void)));
-
-    connect (m_undo_action, SIGNAL (triggered (void)),
-             this, SLOT (handle_undo_request (void)));
+    connect (m_current_directory_combo_box, SIGNAL (activated (const QString&)),
+             this, SLOT (set_current_working_directory (const QString&)));
+
+    connect (m_current_directory_combo_box->lineEdit (),
+             &QLineEdit::returnPressed,
+             this, &main_window::accept_directory_line_edit);
+
+    connect (current_dir_search, &QAction::triggered,
+             this, &main_window::browse_for_directory);
+
+    connect (current_dir_up, &QAction::triggered,
+             this, &main_window::change_directory_up);
+
+    connect (m_undo_action, &QAction::triggered,
+             this, &main_window::handle_undo_request);
   }
 
   void main_window::focus_console_after_command (void)
@@ -2942,7 +2913,7 @@
     do_reset_windows (false);   // Add all widgets
     // Re-add after giving time: This seems to be a reliable way to
     // reset the main window's layout
-    QTimer::singleShot (250, this, SLOT (do_reset_windows (void)));
+    QTimer::singleShot (250, this, [=] () { do_reset_windows (); });
   }
 
   // Create the default layout of the main window. Do not use
--- a/libgui/src/octave-dock-widget.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/octave-dock-widget.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -192,10 +192,10 @@
     m_parent = static_cast<QMainWindow *> (p);     // store main window
     m_predecessor_widget = nullptr;
 
-    connect (this, SIGNAL (topLevelChanged (bool)),
-             this, SLOT (toplevel_change (bool)));
-    connect (this, SIGNAL (visibilityChanged (bool)),
-             this, SLOT (handle_visibility (bool)));
+    connect (this, &octave_dock_widget::topLevelChanged,
+             this, &octave_dock_widget::toplevel_change);
+    connect (this, &octave_dock_widget::visibilityChanged,
+             this, &octave_dock_widget::handle_visibility);
 
     connect (p, SIGNAL (init_window_menu (void)),
              this, SLOT (init_window_menu_entry (void)));
@@ -211,26 +211,26 @@
     if (m_default_float_button != nullptr)
       {
         disconnect (m_default_float_button, 0, 0, 0);
-        connect (m_default_float_button, SIGNAL (clicked (bool)),
-                 this, SLOT (make_window (bool)));
+        connect (m_default_float_button, &QAbstractButton::clicked,
+                 this, &octave_dock_widget::make_window);
       }
-    connect (this, SIGNAL (queue_make_window (bool)),
-             this, SLOT (make_window (bool)), Qt::QueuedConnection);
-    connect (this, SIGNAL (queue_make_widget ()),
-             this, SLOT (make_widget ()), Qt::QueuedConnection);
+    connect (this, &octave_dock_widget::queue_make_window,
+             this, &octave_dock_widget::make_window, Qt::QueuedConnection);
+    connect (this, &octave_dock_widget::queue_make_widget,
+             this, [=] () { make_widget (); }, Qt::QueuedConnection);
 
     shortcut_manager& scmgr = m_octave_qobj.get_shortcut_manager ();
     scmgr.set_shortcut (m_dock_action, sc_dock_widget_dock);
     m_dock_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
     addAction (m_dock_action);
-    connect (m_dock_action, SIGNAL (triggered (bool)),
-             this, SLOT (make_window (bool)));
+    connect (m_dock_action, &QAction::triggered,
+             this, &octave_dock_widget::make_window);
 
     scmgr.set_shortcut (m_close_action, sc_dock_widget_close);
     m_close_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
     addAction (m_close_action);
-    connect (m_close_action, SIGNAL (triggered (bool)),
-             this, SLOT (change_visibility (bool)));
+    connect (m_close_action, &QAction::triggered,
+             this, &octave_dock_widget::change_visibility);
 
     // Any interpreter_event signal from an octave_dock_widget object is
     // handled the same as for the parent main_window object.
@@ -309,8 +309,8 @@
 
     // adjust the (un)dock action
     disconnect (m_dock_action, 0, this, 0);
-    connect (m_dock_action, SIGNAL (triggered (bool)),
-             this, SLOT (make_widget (bool)));
+    connect (m_dock_action, &QAction::triggered,
+             this, &octave_dock_widget::make_widget);
 
     // adjust the (un)dock icon
     if (titleBarWidget ())
@@ -322,8 +322,8 @@
     else
       {
         disconnect (m_default_float_button, 0, this, 0);
-        connect (m_default_float_button, SIGNAL (clicked (bool)),
-                 this, SLOT (make_widget (bool)));
+        connect (m_default_float_button, &QAbstractButton::clicked,
+                 this, &octave_dock_widget::make_widget);
       }
 
     raise ();
@@ -363,8 +363,8 @@
     setGeometry (m_recent_dock_geom);
 
     // adjust the (un)dock icon
-    connect (m_dock_action, SIGNAL (triggered (bool)),
-             this, SLOT (make_window (bool)));
+    connect (m_dock_action, &QAction::triggered,
+             this, &octave_dock_widget::make_window);
     if (titleBarWidget ())
       {
         m_dock_action->setIcon (QIcon (":/actions/icons/widget-undock"
@@ -374,8 +374,8 @@
     else
       {
         disconnect (m_default_float_button, 0, this, 0);
-        connect (m_default_float_button, SIGNAL (clicked (bool)),
-                 this, SLOT (make_window (bool)));
+        connect (m_default_float_button, &QAbstractButton::clicked,
+                 this, &octave_dock_widget::make_window);
       }
 
     raise ();
--- a/libgui/src/octave-qobject.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/octave-qobject.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -206,37 +206,36 @@
 
     if (! m_app_context.experimental_terminal_widget ())
       {
-        connect (m_interpreter_qobj, SIGNAL (execution_finished (int)),
-                 this, SLOT (handle_interpreter_execution_finished (int)));
+        connect (m_interpreter_qobj, &interpreter_qobject::execution_finished,
+                 this, &base_qobject::handle_interpreter_execution_finished);
 
-        connect (this, SIGNAL (request_interpreter_shutdown (int)),
-                 m_interpreter_qobj, SLOT (shutdown (int)));
+        connect (this, &base_qobject::request_interpreter_shutdown,
+                 m_interpreter_qobj, &interpreter_qobject::shutdown);
       }
 
-    connect (m_interpreter_qobj, SIGNAL (shutdown_finished (int)),
-             this, SLOT (handle_interpreter_shutdown_finished (int)));
+    connect (m_interpreter_qobj, &interpreter_qobject::shutdown_finished,
+             this, &base_qobject::handle_interpreter_shutdown_finished);
 
-    connect (m_main_thread, SIGNAL (finished (void)),
-             m_main_thread, SLOT (deleteLater (void)));
+    connect (m_main_thread, &QThread::finished,
+             m_main_thread, &QThread::deleteLater);
 
     // Handle any interpreter_event signal from the octave_qapplication
     // object here.
 
-    connect (m_qapplication, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SLOT (interpreter_event (const fcn_callback&)));
+    connect (m_qapplication, QOverload<const fcn_callback&>::of (&octave_qapplication::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&base_qobject::interpreter_event));
 
-    connect (m_qapplication, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SLOT (interpreter_event (const meth_callback&)));
+    connect (m_qapplication, QOverload<const meth_callback&>::of (&octave_qapplication::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&base_qobject::interpreter_event));
 
     if (m_app_context.experimental_terminal_widget ())
       {
-        connect (qt_link (), SIGNAL (start_gui_signal (bool)),
-                 this, SLOT (start_gui (bool)));
+        connect (qt_link (), &qt_interpreter_events::start_gui_signal,
+                 this, &base_qobject::start_gui);
       }
 
-    connect (qt_link (),
-             SIGNAL (copy_image_to_clipboard_signal (const QString&, bool)),
-             this, SLOT (copy_image_to_clipboard (const QString&, bool)));
+    connect (qt_link (), &qt_interpreter_events::copy_image_to_clipboard_signal,
+             this, &base_qobject::copy_image_to_clipboard);
 
     if (m_app_context.experimental_terminal_widget ())
       {
@@ -257,12 +256,11 @@
             if (m_interpreter_ready)
               m_main_window->handle_octave_ready ();
             else
-              connect (m_interpreter_qobj, SIGNAL (ready ()),
-                       m_main_window, SLOT (handle_octave_ready ()));
+              connect (m_interpreter_qobj, &interpreter_qobject::ready,
+                       m_main_window, &main_window::handle_octave_ready);
 
-            connect (qt_link (),
-                     SIGNAL (focus_window_signal (const QString&)),
-                     m_main_window, SLOT (focus_window (const QString&)));
+            connect (qt_link (), &qt_interpreter_events::focus_window_signal,
+                     m_main_window, &main_window::focus_window);
 
             m_app_context.gui_running (true);
           }
@@ -323,7 +321,7 @@
     // the interpreter until after the main window and QApplication are
     // running to prevent race conditions.
 
-    QTimer::singleShot (0, m_interpreter_qobj, SLOT (execute (void)));
+    QTimer::singleShot (0, m_interpreter_qobj, &interpreter_qobject::execute);
 
     m_interpreter_qobj->moveToThread (m_main_thread);
 
@@ -379,21 +377,20 @@
 
         m_main_window = new main_window (*this);
 
-        connect (qt_link (),
-                 SIGNAL (focus_window_signal (const QString&)),
-                 m_main_window, SLOT (focus_window (const QString&)));
+        connect (qt_link (), &qt_interpreter_events::focus_window_signal,
+                 m_main_window, &main_window::focus_window);
 
-        connect (qt_link (), SIGNAL (close_gui_signal ()),
-                 this, SLOT (close_gui ()));
+        connect (qt_link (), &qt_interpreter_events::close_gui_signal,
+                 this, &base_qobject::close_gui);
 
-        connect (m_main_window, SIGNAL (close_gui_signal ()),
-                 this, SLOT (close_gui ()));
+        connect (m_main_window, &main_window::close_gui_signal,
+                 this, &base_qobject::close_gui);
 
         if (m_interpreter_ready)
           m_main_window->handle_octave_ready ();
         else
-          connect (m_interpreter_qobj, SIGNAL (ready ()),
-                   m_main_window, SLOT (handle_octave_ready ()));
+          connect (m_interpreter_qobj, &interpreter_qobject::ready,
+                   m_main_window, &main_window::handle_octave_ready);
 
         if (m_gui_app)
           m_qapplication->setQuitOnLastWindowClosed (true);
--- a/libgui/src/qt-interpreter-events.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/qt-interpreter-events.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -121,16 +121,14 @@
     qRegisterMetaType<fcn_callback> ("fcn_callback");
     qRegisterMetaType<meth_callback> ("meth_callback");
 
-    connect (this, SIGNAL (confirm_shutdown_signal (void)),
-             this, SLOT (confirm_shutdown_octave (void)));
+    connect (this, &qt_interpreter_events::confirm_shutdown_signal,
+             this, &qt_interpreter_events::confirm_shutdown_octave);
 
-    connect (this, SIGNAL (get_named_icon_signal (const QString&)),
-             this, SLOT (get_named_icon_slot (const QString&)));
+    connect (this, &qt_interpreter_events::get_named_icon_signal,
+             this, &qt_interpreter_events::get_named_icon_slot);
 
-    connect (this,
-             SIGNAL (gui_preference_signal (const QString&, const QString&)),
-             this,
-             SLOT (gui_preference_slot (const QString&, const QString&)));
+    connect (this, &qt_interpreter_events::gui_preference_signal,
+             this, &qt_interpreter_events::gui_preference_slot);
   }
 
   void qt_interpreter_events::start_gui (bool gui_app)
--- a/libgui/src/set-path-dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/set-path-dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -72,9 +72,9 @@
     QMenu *add_dir_menu = new QMenu ();
     m_add_folder_button->setMenu (add_dir_menu);
     add_dir_menu->addAction (tr ("Single Folder"),
-                             this, SLOT (add_dir (void)));
+                             this, &set_path_dialog::add_dir);
     add_dir_menu->addAction (tr ("Folder with Subfolders"),
-                             this, SLOT (add_dir_subdirs (void)));
+                             this, &set_path_dialog::add_dir_subdirs);
 
     m_move_to_top_button = new QPushButton (tr ("Move to Top"));
     m_move_to_bottom_button = new QPushButton (tr ("Move to Bottom"));
@@ -90,41 +90,41 @@
     QMenu *revert_menu = new QMenu ();
     m_revert_button->setMenu (revert_menu);
     revert_menu->addAction (tr ("Revert Last Change"),
-                            model, SLOT (revert_last (void)));
+                            model, &set_path_model::revert_last);
     revert_menu->addAction (tr ("Revert All Changes"),
-                            model, SLOT (revert (void)));
+                            model, &set_path_model::revert);
 
     m_save_button->setFocus ();
 
-    connect (m_remove_button, SIGNAL (clicked (void)),
-             this, SLOT (rm_dir (void)));
+    connect (m_remove_button, &QPushButton::clicked,
+             this, &set_path_dialog::rm_dir);
 
-    connect (m_move_to_top_button, SIGNAL (clicked (void)),
-             this, SLOT (move_dir_top (void)));
+    connect (m_move_to_top_button, &QPushButton::clicked,
+             this, &set_path_dialog::move_dir_top);
 
-    connect (m_move_to_bottom_button, SIGNAL (clicked (void)),
-             this, SLOT (move_dir_bottom (void)));
+    connect (m_move_to_bottom_button, &QPushButton::clicked,
+             this, &set_path_dialog::move_dir_bottom);
 
-    connect (m_move_up_button, SIGNAL (clicked (void)),
-             this, SLOT (move_dir_up (void)));
+    connect (m_move_up_button, &QPushButton::clicked,
+             this, &set_path_dialog::move_dir_up);
 
-    connect (m_move_down_button, SIGNAL (clicked (void)),
-             this, SLOT (move_dir_down (void)));
+    connect (m_move_down_button, &QPushButton::clicked,
+             this, &set_path_dialog::move_dir_down);
 
-    connect (m_reload_button, SIGNAL (clicked (void)),
-             model, SLOT (path_to_model (void)));
+    connect (m_reload_button, &QPushButton::clicked,
+             model, &set_path_model::path_to_model);
 
-    connect (m_save_button, SIGNAL (clicked (void)),
-             model, SLOT (save (void)));
+    connect (m_save_button, &QPushButton::clicked,
+             model, &set_path_model::save);
 
     // Any interpreter_event signal from a set_path_model object is
     // handled the same as for the parent set_path_dialog object.
 
-    connect (model, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
+    connect (model, QOverload<const fcn_callback&>::of (&set_path_model::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&set_path_dialog::interpreter_event));
 
-    connect (model, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
+    connect (model, QOverload<const meth_callback&>::of (&set_path_model::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&set_path_dialog::interpreter_event));
 
     m_path_list = new QListView (this);
     m_path_list->setWordWrap (false);
@@ -141,7 +141,8 @@
 
     // add dialog close button
     m_close_button = button_box->addButton (QDialogButtonBox::Close);
-    connect (button_box, SIGNAL (rejected (void)), this, SLOT (close (void)));
+    connect (button_box, &QDialogButtonBox::rejected,
+             this, &set_path_dialog::close);
 
     button_box->addButton (m_revert_button, QDialogButtonBox::ActionRole);
 
--- a/libgui/src/set-path-model.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/set-path-model.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -47,8 +47,8 @@
   set_path_model::set_path_model (QObject *p)
     : QAbstractListModel (p)
   {
-    connect (this, SIGNAL (update_data_signal (const QStringList&)),
-             this, SLOT (update_data (const QStringList&)));
+    connect (this, &set_path_model::update_data_signal,
+             this, &set_path_model::update_data);
 
     m_revertible = false;
   }
--- a/libgui/src/settings-dialog.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/settings-dialog.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -156,32 +156,32 @@
     m_widget_title_bg_color->setEnabled (false);
     layout_widget_bgtitle->addWidget (m_widget_title_bg_color, 0);
 
-    connect (cb_widget_custom_style, SIGNAL (toggled (bool)),
-             m_widget_title_bg_color, SLOT (setEnabled (bool)));
+    connect (cb_widget_custom_style, &QCheckBox::toggled,
+             m_widget_title_bg_color, &color_picker::setEnabled);
 
     QColor bg_color_active = settings->value (dw_title_bg_color_active).value<QColor> ();
     m_widget_title_bg_color_active = new color_picker (bg_color_active);
     m_widget_title_bg_color_active->setEnabled (false);
     layout_widget_bgtitle_active->addWidget (m_widget_title_bg_color_active, 0);
 
-    connect (cb_widget_custom_style, SIGNAL (toggled (bool)),
-             m_widget_title_bg_color_active, SLOT (setEnabled (bool)));
+    connect (cb_widget_custom_style, &QCheckBox::toggled,
+             m_widget_title_bg_color_active, &color_picker::setEnabled);
 
     QColor fg_color = settings->value (dw_title_fg_color).value<QColor> ();
     m_widget_title_fg_color = new color_picker (fg_color);
     m_widget_title_fg_color->setEnabled (false);
     layout_widget_fgtitle->addWidget (m_widget_title_fg_color, 0);
 
-    connect (cb_widget_custom_style, SIGNAL (toggled (bool)),
-             m_widget_title_fg_color, SLOT (setEnabled (bool)));
+    connect (cb_widget_custom_style, &QCheckBox::toggled,
+             m_widget_title_fg_color, &color_picker::setEnabled);
 
     QColor fg_color_active = settings->value (dw_title_fg_color_active).value<QColor> ();
     m_widget_title_fg_color_active = new color_picker (fg_color_active);
     m_widget_title_fg_color_active->setEnabled (false);
     layout_widget_fgtitle_active->addWidget (m_widget_title_fg_color_active, 0);
 
-    connect (cb_widget_custom_style, SIGNAL (toggled (bool)),
-             m_widget_title_fg_color_active, SLOT (setEnabled (bool)));
+    connect (cb_widget_custom_style, &QCheckBox::toggled,
+             m_widget_title_fg_color_active, &color_picker::setEnabled);
 
     sb_3d_title->setValue (settings->value (dw_title_3d.key,
                                             dw_title_3d.def).toInt ());
@@ -227,8 +227,8 @@
     le_octave_dir->setText (settings->value (global_ov_startup_dir.key,
                                              global_ov_startup_dir.def).toString ());
 
-    connect (pb_octave_dir, SIGNAL (pressed (void)),
-             this, SLOT (get_octave_dir (void)));
+    connect (pb_octave_dir, &QPushButton::pressed,
+             this, &settings_dialog::get_octave_dir);
 
     //
     // editor
@@ -300,10 +300,10 @@
         m_rb_comment_strings[i] = new QRadioButton ();
         m_rb_uncomment_strings[i] = new QCheckBox ();
 
-        connect (m_rb_comment_strings[i], SIGNAL (clicked (bool)),
-                 m_rb_uncomment_strings[i], SLOT (setChecked (bool)));
-        connect (m_rb_comment_strings[i], SIGNAL (toggled (bool)),
-                 m_rb_uncomment_strings[i], SLOT (setDisabled (bool)));
+        connect (m_rb_comment_strings[i], &QRadioButton::clicked,
+                 m_rb_uncomment_strings[i], &QCheckBox::setChecked);
+        connect (m_rb_comment_strings[i], &QRadioButton::toggled,
+                 m_rb_uncomment_strings[i], &QCheckBox::setDisabled);
 
         m_rb_comment_strings[i]->setText (ed_comment_strings.at(i));
         m_rb_comment_strings[i]->setChecked (i == selected_comment_string);
@@ -363,15 +363,15 @@
     read_terminal_colors (settings);
 
     // file browser
-    connect (sync_octave_directory, SIGNAL (toggled (bool)),
-             this, SLOT (set_disabled_pref_file_browser_dir (bool)));
+    connect (sync_octave_directory, &QCheckBox::toggled,
+             this, &settings_dialog::set_disabled_pref_file_browser_dir);
 
     sync_octave_directory->setChecked (settings->value (fb_sync_octdir).toBool ());
     cb_restore_file_browser_dir->setChecked (settings->value (fb_restore_last_dir).toBool ());
     le_file_browser_dir->setText (settings->value (fb_startup_dir.key).toString ());
 
-    connect (pb_file_browser_dir, SIGNAL (pressed (void)),
-             this, SLOT (get_file_browser_dir (void)));
+    connect (pb_file_browser_dir, &QPushButton::pressed,
+             this, &settings_dialog::get_file_browser_dir);
 
     le_file_browser_extensions->setText (settings->value (fb_txt_file_ext).toString ());
 
@@ -397,10 +397,10 @@
     proxy_username->setText (settings->value (global_proxy_user.key, global_proxy_user.def).toString ());
     proxy_password->setText (settings->value (global_proxy_pass.key, global_proxy_pass.def).toString ());
     // Connect relevant signals for dis-/enabling some elements
-    connect (proxy_type, SIGNAL (currentIndexChanged (int)),
-             this, SLOT (proxy_items_update (void)));
-    connect (use_proxy_server, SIGNAL (toggled (bool)),
-             this, SLOT (proxy_items_update (void)));
+    connect (proxy_type, QOverload<int>::of (&QComboBox::currentIndexChanged),
+             this, &settings_dialog::proxy_items_update);
+    connect (use_proxy_server, &QCheckBox::toggled,
+             this, &settings_dialog::proxy_items_update);
     // Check whehter line edits have to be enabled
     proxy_items_update ();
 
@@ -414,10 +414,10 @@
     varedit_font->setCurrentFont (QFont (settings->value (ve_font_name.key,
                                                           settings->value (cs_font.key, default_font)).toString ()));
     varedit_fontSize->setValue (settings->value (ve_font_size).toInt ());
-    connect (varedit_useTerminalFont, SIGNAL (toggled (bool)),
-             varedit_font, SLOT (setDisabled (bool)));
-    connect (varedit_useTerminalFont, SIGNAL (toggled (bool)),
-             varedit_fontSize, SLOT (setDisabled (bool)));
+    connect (varedit_useTerminalFont, &QCheckBox::toggled,
+             varedit_font, &QFontComboBox::setDisabled);
+    connect (varedit_useTerminalFont, &QCheckBox::toggled,
+             varedit_fontSize, &QSpinBox::setDisabled);
     varedit_useTerminalFont->setChecked (settings->value (ve_use_terminal_font).toBool ());
     varedit_font->setDisabled (varedit_useTerminalFont->isChecked ());
     varedit_fontSize->setDisabled (varedit_useTerminalFont->isChecked ());
@@ -442,14 +442,14 @@
     scmgr.fill_treewidget (shortcuts_treewidget);
 
     // connect the buttons for import/export of the shortcut sets
-    connect (btn_import_shortcut_set, SIGNAL (clicked (void)),
-             this, SLOT (import_shortcut_set (void)));
+    connect (btn_import_shortcut_set, &QPushButton::clicked,
+             this, &settings_dialog::import_shortcut_set);
 
-    connect (btn_export_shortcut_set, SIGNAL (clicked (void)),
-             this, SLOT (export_shortcut_set (void)));
+    connect (btn_export_shortcut_set, &QPushButton::clicked,
+             this, &settings_dialog::export_shortcut_set);
 
-    connect (btn_default_shortcut_set, SIGNAL (clicked (void)),
-             this, SLOT (default_shortcut_set (void)));
+    connect (btn_default_shortcut_set, &QPushButton::clicked,
+             this, &settings_dialog::default_shortcut_set);
 
 #if defined (HAVE_QSCINTILLA)
 
@@ -471,8 +471,8 @@
 
 
     // update colors depending on second theme selection
-    connect (cb_color_mode, SIGNAL (stateChanged (int)),
-             this, SLOT (update_editor_lexers (int)));
+    connect (cb_color_mode, &QCheckBox::stateChanged,
+             this, &settings_dialog::update_editor_lexers);
     connect (pb_reload_default_colors, &QPushButton::clicked,
              [=] () { update_editor_lexers (settings_reload_default_colors_flag); });
 
@@ -485,8 +485,8 @@
     show_tab (desired_tab);
 
     // connect button box signal
-    connect (button_box, SIGNAL (clicked (QAbstractButton *)),
-             this, SLOT (button_clicked (QAbstractButton *)));
+    connect (button_box, &QDialogButtonBox::clicked,
+             this, &settings_dialog::button_clicked);
 
     // restore last geometry
     if (settings->contains (sd_geometry.key))
@@ -1228,8 +1228,8 @@
 
     m_ws_hide_tool_tips = new QCheckBox (tr ("Hide tools tips"));
     style_grid->addWidget (m_ws_hide_tool_tips, row++, column, 1, 4);
-    connect (m_ws_enable_colors, SIGNAL (toggled (bool)),
-             m_ws_hide_tool_tips, SLOT(setEnabled (bool)));
+    connect (m_ws_enable_colors, &QCheckBox::toggled,
+             m_ws_hide_tool_tips, &QCheckBox::setEnabled);
     m_ws_hide_tool_tips->setChecked
       (settings->value (ws_hide_tool_tips).toBool ());
 
@@ -1237,14 +1237,14 @@
     cb_color_mode->setToolTip (settings_color_modes_tooltip);
     cb_color_mode->setChecked (mode == 1);
     cb_color_mode->setObjectName (ws_color_mode.key);
-    connect (m_ws_enable_colors, SIGNAL (toggled (bool)),
-             cb_color_mode, SLOT (setEnabled (bool)));
+    connect (m_ws_enable_colors, &QCheckBox::toggled,
+             cb_color_mode, &QCheckBox::setEnabled);
     style_grid->addWidget (cb_color_mode, row, column);
 
     QPushButton *pb_reload_default_colors = new QPushButton (settings_reload_colors);
     pb_reload_default_colors->setToolTip (settings_reload_colors_tooltip);
-    connect (m_ws_enable_colors, SIGNAL (toggled (bool)),
-             pb_reload_default_colors, SLOT (setEnabled (bool)));
+    connect (m_ws_enable_colors, &QCheckBox::toggled,
+             pb_reload_default_colors, &QPushButton::setEnabled);
     style_grid->addWidget (pb_reload_default_colors, row+1, column++);
 
     bool colors_enabled = settings->value (ws_enable_colors).toBool ();
@@ -1255,16 +1255,16 @@
           + tr (ws_color_names.at (i).toStdString ().data ()));
         description[i]->setAlignment (Qt::AlignRight);
         description[i]->setEnabled (colors_enabled);
-        connect (m_ws_enable_colors, SIGNAL (toggled (bool)),
-                 description[i], SLOT(setEnabled (bool)));
+        connect (m_ws_enable_colors, &QCheckBox::toggled,
+                 description[i], &QLabel::setEnabled);
 
         QColor setting_color = settings->color_value (ws_colors[i], mode);
         color[i] = new color_picker (setting_color);
         color[i]->setObjectName (ws_colors[i].key);
         color[i]->setMinimumSize (30, 10);
         color[i]->setEnabled (colors_enabled);
-        connect (m_ws_enable_colors, SIGNAL (toggled (bool)),
-                 color[i], SLOT(setEnabled (bool)));
+        connect (m_ws_enable_colors, &QCheckBox::toggled,
+                 color[i], &color_picker::setEnabled);
 
         style_grid->addWidget (description[i], row, 3*column);
         style_grid->addWidget (color[i], row, 3*column+1);
@@ -1287,8 +1287,8 @@
 
     // update colors depending on second theme selection or reloading
     // the dfault values
-    connect (cb_color_mode, SIGNAL (stateChanged (int)),
-             this, SLOT (update_workspace_colors (int)));
+    connect (cb_color_mode, &QCheckBox::stateChanged,
+             this, &settings_dialog::update_workspace_colors);
     connect (pb_reload_default_colors, &QPushButton::clicked,
              [=] () { update_workspace_colors (settings_reload_default_colors_flag); });
   }
@@ -1396,8 +1396,8 @@
     terminal_colors_box->setLayout (style_grid);
 
     // update colors depending on second theme selection
-    connect (cb_color_mode, SIGNAL (stateChanged (int)),
-             this, SLOT (update_terminal_colors (int)));
+    connect (cb_color_mode, &QCheckBox::stateChanged,
+             this, &settings_dialog::update_terminal_colors);
     connect (pb_reload_default_colors, &QPushButton::clicked,
              [=] () { update_terminal_colors (settings_reload_default_colors_flag); });
   }
@@ -1503,8 +1503,8 @@
     varedit_colors_box->setLayout (style_grid);
 
     // update colors depending on second theme selection
-    connect (cb_color_mode, SIGNAL (stateChanged (int)),
-             this, SLOT (update_varedit_colors (int)));
+    connect (cb_color_mode, &QCheckBox::stateChanged,
+             this, &settings_dialog::update_varedit_colors);
     connect (pb_reload_default_colors, &QPushButton::clicked,
              [=] () { update_varedit_colors (settings_reload_default_colors_flag); });
   }
--- a/libgui/src/shortcut-manager.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/shortcut-manager.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -456,8 +456,8 @@
 
     m_level_hash[sc_doc] = doc_browser;
 
-    connect (tree_view, SIGNAL (itemDoubleClicked (QTreeWidgetItem*, int)),
-             this, SLOT (handle_double_clicked (QTreeWidgetItem*, int)));
+    connect (tree_view, &QTreeWidget::itemDoubleClicked,
+             this, &shortcut_manager::handle_double_clicked);
 
     for (int i = 0; i < m_sc.count (); i++)
       {
@@ -682,8 +682,7 @@
         shift->setStyleSheet
           ("QCheckBox::indicator { subcontrol-position: left top; }");
 
-        connect (direct, SIGNAL (clicked (bool)),
-                 shift, SLOT (setEnabled (bool)));
+        connect (direct, &QCheckBox::clicked, shift, &QCheckBox::setEnabled);
 
         direct->setCheckState (Qt::Checked);
 
@@ -708,8 +707,8 @@
 
         QPushButton *set_default = new QPushButton (tr ("Set to default"));
         grid->addWidget (set_default, 0, 2);
-        connect (set_default, SIGNAL (clicked ()),
-                 this, SLOT (shortcut_dialog_set_default ()));
+        connect (set_default, &QPushButton::clicked,
+                 this, &shortcut_manager::shortcut_dialog_set_default);
 
         box->addLayout (grid);
 
@@ -720,18 +719,20 @@
         QList<QAbstractButton *> buttons = button_box->buttons ();
         for (int i = 0; i < buttons.count (); i++)
           buttons.at (i)->setShortcut (QKeySequence ());
-        connect (button_box, SIGNAL (accepted ()), m_dialog, SLOT (accept ()));
-        connect (button_box, SIGNAL (rejected ()), m_dialog, SLOT (reject ()));
+        connect (button_box, &QDialogButtonBox::accepted,
+                 m_dialog, &QDialog::accept);
+        connect (button_box, &QDialogButtonBox::rejected,
+                 m_dialog, &QDialog::reject);
         box->addWidget (button_box);
 
         m_dialog->setLayout (box);
 
-        connect (direct, SIGNAL (stateChanged (int)),
-                 m_edit_actual, SLOT (handle_direct_shortcut (int)));
-        connect (shift, SIGNAL (stateChanged (int)),
-                 m_edit_actual, SLOT (handle_shift_modifier (int)));
-        connect (m_dialog, SIGNAL (finished (int)),
-                 this, SLOT (shortcut_dialog_finished (int)));
+        connect (direct, &QCheckBox::stateChanged,
+                 m_edit_actual, &enter_shortcut::handle_direct_shortcut);
+        connect (shift, &QCheckBox::stateChanged,
+                 m_edit_actual, &enter_shortcut::handle_shift_modifier);
+        connect (m_dialog, &QDialog::finished,
+                 this, &shortcut_manager::shortcut_dialog_finished);
 
       }
 
--- a/libgui/src/tab-bar.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/tab-bar.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -225,8 +225,9 @@
             // Fill context menu with actions for selecting current tabs
             m_ctx_actions = m_context_menu->actions (); // Copy of basic actions
             QMenu ctx_menu;                             // The menu actually used
-            connect (&ctx_menu, SIGNAL (triggered (QAction*)),
-                     this, SLOT (ctx_menu_activated (QAction*)));
+            connect (&ctx_menu, &QMenu::triggered,
+                     this, &tab_bar::ctx_menu_activated);
+
             for (int i = count () - 1; i >= 0; i--)
               {
                 // Prepend an action for each tab
--- a/libgui/src/variable-editor-model.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/variable-editor-model.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -954,14 +954,14 @@
   {
     update_description ();
 
-    connect (this, SIGNAL (user_error_signal (const QString&, const QString&)),
-             this, SLOT (user_error (const QString&, const QString&)));
+    connect (this, &variable_editor_model::user_error_signal,
+             this, &variable_editor_model::user_error);
 
-    connect (this, SIGNAL (update_data_signal (const octave_value&)),
-             this, SLOT (update_data (const octave_value&)));
+    connect (this, &variable_editor_model::update_data_signal,
+             this, &variable_editor_model::update_data);
 
-    connect (this, SIGNAL (data_error_signal (const QString&)),
-             this, SLOT (data_error (const QString&)));
+    connect (this, &variable_editor_model::data_error_signal,
+             this, &variable_editor_model::data_error);
 
     if (is_editable ())
       {
--- a/libgui/src/variable-editor.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/variable-editor.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -94,12 +94,12 @@
     setFocusPolicy (Qt::StrongFocus);
     setAttribute (Qt::WA_DeleteOnClose);
 
-    connect (m_dock_action, SIGNAL (triggered (bool)),
-             this, SLOT (change_floating (bool)));
-    connect (m_close_action, SIGNAL (triggered (bool)),
-             this, SLOT (change_existence (bool)));
-    connect (this, SIGNAL (topLevelChanged(bool)),
-             this, SLOT (toplevel_change (bool)));
+    connect (m_dock_action, &QAction::triggered,
+             this, &variable_dock_widget::change_floating);
+    connect (m_close_action, &QAction::triggered,
+             this, &variable_dock_widget::change_existence);
+    connect (this, &variable_dock_widget::topLevelChanged,
+             this, &variable_dock_widget::toplevel_change);
     connect (p, SIGNAL (visibilityChanged (bool)),
              this, SLOT (setVisible (bool)));
 
@@ -124,8 +124,8 @@
     QString css_button = QString ("QToolButton {background: transparent; border: 0px;}");
     fullscreen_button->setStyleSheet (css_button);
 
-    connect (m_fullscreen_action, SIGNAL (triggered ()),
-             this, SLOT (change_fullscreen ()));
+    connect (m_fullscreen_action, &QAction::triggered,
+             this, &variable_dock_widget::change_fullscreen);
 
     int index = -1;
     QToolButton *first = m_title_widget->findChild<QToolButton *> ();
@@ -466,8 +466,8 @@
             = Fsave_default_options (interp, octave_value_list (), 1);
           QString save_opts = QString::fromStdString (argout(0).string_value ());
 
-          connect (this, SIGNAL (do_save_signal (const QString&, const QString&)),
-                   this, SLOT (do_save (const QString&, const QString&)));
+          connect (this, &variable_editor_stack::do_save_signal,
+                   this, &variable_editor_stack::do_save);
 
           emit (do_save_signal (format_string, save_opts));
 
@@ -644,29 +644,29 @@
 
     menu->addAction (rmgr.icon ("edit-cut"),
                      tr ("Cut") + qualifier_string,
-                     this, SLOT (cutClipboard ()));
+                     this, &variable_editor_view::cutClipboard);
 
     menu->addAction (rmgr.icon ("edit-copy"),
                      tr ("Copy") + qualifier_string,
-                     this, SLOT (copyClipboard ()));
+                     this, &variable_editor_view::copyClipboard);
 
     menu->addAction (rmgr.icon ("edit-paste"),
                      tr ("Paste"),
-                     this, SLOT (pasteClipboard ()));
+                     this, &variable_editor_view::pasteClipboard);
 
     menu->addSeparator ();
 
     menu->addAction (rmgr.icon ("edit-delete"),
                      tr ("Clear") + qualifier_string,
-                     this, SLOT (clearContent ()));
+                     this, &variable_editor_view::clearContent);
 
     menu->addAction (rmgr.icon ("edit-delete"),
                      tr ("Delete") + qualifier_string,
-                     this, SLOT (delete_selected ()));
+                     this, &variable_editor_view::delete_selected);
 
     menu->addAction (rmgr.icon ("document-new"),
                      tr ("Variable from Selection"),
-                     this, SLOT (createVariable ()));
+                     this, &variable_editor_view::createVariable);
   }
 
   void
@@ -683,7 +683,8 @@
         // FIXME: addAction for sort?
         // FIXME: Add icon for transpose.
 
-        menu->addAction (tr ("Transpose"), this, SLOT (transposeContent ()));
+        menu->addAction (tr ("Transpose"),
+                         this, &variable_editor_view::transposeContent);
 
         QItemSelectionModel *sel = selectionModel ();
 
@@ -1226,18 +1227,18 @@
     page->setObjectName (name);
     m_main->addDockWidget (Qt::LeftDockWidgetArea, page);
 
-    connect (QApplication::instance(), SIGNAL (focusChanged (QWidget *, QWidget *)),
-             page, SLOT (handle_focus_change (QWidget *, QWidget *)));
-    connect (page, SIGNAL (destroyed (QObject *)),
-             this, SLOT (variable_destroyed (QObject *)));
-    connect (page, SIGNAL (variable_focused_signal (const QString&)),
-             this, SLOT (variable_focused (const QString&)));
+    connect (qApp, &QApplication::focusChanged,
+             page, &variable_dock_widget::handle_focus_change);
+    connect (page, &variable_dock_widget::destroyed,
+             this, &variable_editor::variable_destroyed);
+    connect (page, &variable_dock_widget::variable_focused_signal,
+             this, &variable_editor::variable_focused);
 // See  Octave bug #53807 and https://bugreports.qt.io/browse/QTBUG-44813
 #if (QT_VERSION >= 0x050302) && (QT_VERSION <= QTBUG_44813_FIX_VERSION)
     connect (page, SIGNAL (queue_unfloat_float ()),
              page, SLOT (unfloat_float ()), Qt::QueuedConnection);
     connect (page, SIGNAL (queue_float ()),
-             page, SLOT (refloat ()), Qt::QueuedConnection);
+             page, SIGNAL (refloat ()), Qt::QueuedConnection);
 #endif
 
     variable_editor_stack *stack
@@ -1249,18 +1250,18 @@
 
     // Any interpreter_event signal from a variable_editor_stack object is
     // handled the same as for the parent variable_editor object.
-    connect (stack, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
+    connect (stack, QOverload<const fcn_callback&>::of (&variable_editor_stack::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&variable_editor::interpreter_event));
 
-    connect (stack, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
+    connect (stack, QOverload<const meth_callback&>::of (&variable_editor_stack::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&variable_editor::interpreter_event));
 
-    connect (stack, SIGNAL (edit_variable_signal (const QString&, const octave_value&)),
-             this, SLOT (edit_variable (const QString&, const octave_value&)));
-    connect (this, SIGNAL (level_up_signal ()),
-             stack, SLOT (levelUp ()));
-    connect (this, SIGNAL (save_signal ()),
-             stack, SLOT (save ()));
+    connect (stack, &variable_editor_stack::edit_variable_signal,
+             this, &variable_editor::edit_variable);
+    connect (this, &variable_editor::level_up_signal,
+             stack, &variable_editor_stack::levelUp);
+    connect (this, &variable_editor::save_signal,
+             stack, [=] () { stack->save (); });
 
     variable_editor_view *edit_view = stack->edit_view ();
 
@@ -1276,53 +1277,53 @@
     connect (m_save_mapper, SIGNAL (mapped (const QString&)),
              stack, SLOT (save (const QString&)));
 
-    connect (edit_view, SIGNAL (command_signal (const QString&)),
-             this, SIGNAL (command_signal (const QString&)));
-    connect (this, SIGNAL (delete_selected_signal ()),
-             edit_view, SLOT (delete_selected ()));
-    connect (this, SIGNAL (clear_content_signal ()),
-             edit_view, SLOT (clearContent ()));
-    connect (this, SIGNAL (copy_clipboard_signal ()),
-             edit_view, SLOT (copyClipboard ()));
-    connect (this, SIGNAL (paste_clipboard_signal ()),
-             edit_view, SLOT (pasteClipboard ()));
+    connect (edit_view, &variable_editor_view::command_signal,
+             this, &variable_editor::command_signal);
+    connect (this, &variable_editor::delete_selected_signal,
+             edit_view, &variable_editor_view::delete_selected);
+    connect (this, &variable_editor::clear_content_signal,
+             edit_view, &variable_editor_view::clearContent);
+    connect (this, &variable_editor::copy_clipboard_signal,
+             edit_view, &variable_editor_view::copyClipboard);
+    connect (this, &variable_editor::paste_clipboard_signal,
+             edit_view, &variable_editor_view::pasteClipboard);
     connect (edit_view->horizontalHeader (),
-             SIGNAL (customContextMenuRequested (const QPoint&)),
-             edit_view, SLOT (createColumnMenu (const QPoint&)));
+             &QHeaderView::customContextMenuRequested,
+             edit_view, &variable_editor_view::createColumnMenu);
     connect (edit_view->verticalHeader (),
-             SIGNAL (customContextMenuRequested (const QPoint&)),
-             edit_view, SLOT (createRowMenu (const QPoint&)));
-    connect (edit_view, SIGNAL (customContextMenuRequested (const QPoint&)),
-             edit_view, SLOT (createContextMenu (const QPoint&)));
-    connect (edit_view->horizontalScrollBar (), SIGNAL (actionTriggered (int)),
-             edit_view, SLOT (handle_horizontal_scroll_action (int)));
-    connect (edit_view->verticalScrollBar (), SIGNAL (actionTriggered (int)),
-             edit_view, SLOT (handle_vertical_scroll_action (int)));
+             &QHeaderView::customContextMenuRequested,
+             edit_view, &variable_editor_view::createRowMenu);
+    connect (edit_view, &variable_editor_view::customContextMenuRequested,
+             edit_view, &variable_editor_view::createContextMenu);
+    connect (edit_view->horizontalScrollBar (), &QScrollBar::actionTriggered,
+             edit_view, &variable_editor_view::handle_horizontal_scroll_action);
+    connect (edit_view->verticalScrollBar (), &QScrollBar::actionTriggered,
+             edit_view, &variable_editor_view::handle_vertical_scroll_action);
 
     variable_editor_model *model =
       new variable_editor_model (name, val, stack);
 
-    connect (model, SIGNAL (edit_variable_signal (const QString&, const octave_value&)),
-             this, SLOT (edit_variable (const QString&, const octave_value&)));
-    connect (model, SIGNAL (dataChanged (const QModelIndex&, const QModelIndex&)),
-             this, SLOT (callUpdate (const QModelIndex&, const QModelIndex&)));
-    connect (this, SIGNAL (refresh_signal ()),
-             model, SLOT (update_data_cache ()));
-    connect (model, SIGNAL (set_editable_signal (bool)),
-             stack, SLOT (set_editable (bool)));
+    connect (model, &variable_editor_model::edit_variable_signal,
+             this, &variable_editor::edit_variable);
+    connect (model, &variable_editor_model::dataChanged,
+             this, &variable_editor::callUpdate);
+    connect (this, &variable_editor::refresh_signal,
+             model, &variable_editor_model::update_data_cache);
+    connect (model, &variable_editor_model::set_editable_signal,
+             stack, &variable_editor_stack::set_editable);
 
     edit_view->setModel (model);
-    connect (edit_view, SIGNAL (doubleClicked (const QModelIndex&)),
-             model, SLOT (double_click (const QModelIndex&)));
+    connect (edit_view, &variable_editor_view::doubleClicked,
+             model, &variable_editor_model::double_click);
 
     // Any interpreter_event signal from a variable_editor_model object is
     // handled the same as for the parent variable_editor object.
 
-    connect (model, SIGNAL (interpreter_event (const fcn_callback&)),
-             this, SIGNAL (interpreter_event (const fcn_callback&)));
+    connect (model, QOverload<const fcn_callback&>::of (&variable_editor_model::interpreter_event),
+             this, QOverload<const fcn_callback&>::of (&variable_editor::interpreter_event));
 
-    connect (model, SIGNAL (interpreter_event (const meth_callback&)),
-             this, SIGNAL (interpreter_event (const meth_callback&)));
+    connect (model, QOverload<const meth_callback&>::of (&variable_editor_model::interpreter_event),
+             this, QOverload<const meth_callback&>::of (&variable_editor::interpreter_event));
 
     // Must supply a title for a QLabel to be created.  Calling set_title()
     // more than once will add more QLabels.  Could change octave_dock_widget
@@ -1332,6 +1333,9 @@
     if (page->titleBarWidget () != nullptr)
       {
         QLabel *existing_ql = page->titleBarWidget ()->findChild<QLabel *> ();
+
+        // FIXME: What was the intent here?  update_label_signal does
+        // not seem to exist now.
         connect (model, SIGNAL (update_label_signal (const QString&)),
                  existing_ql, SLOT (setText (const QString&)));
         existing_ql->setMargin (2);
@@ -1711,10 +1715,10 @@
                                                     );
     for (int i = 0; i < hbuttonlist.size (); i++)
       {
-        connect (hbuttonlist.at (i), SIGNAL (hovered_signal ()),
-                 this, SLOT (record_hovered_focus_variable ()));
-        connect (hbuttonlist.at (i), SIGNAL (popup_shown_signal ()),
-                 this, SLOT (restore_hovered_focus_variable ()));
+        connect (hbuttonlist.at (i), &HoverToolButton::hovered_signal,
+                 this, &variable_editor::record_hovered_focus_variable);
+        connect (hbuttonlist.at (i), &HoverToolButton::popup_shown_signal,
+                 this, &variable_editor::restore_hovered_focus_variable);
       }
 
     QList<ReturnFocusToolButton *> rfbuttonlist
@@ -1723,8 +1727,8 @@
                                                           );
     for (int i = 0; i < rfbuttonlist.size (); i++)
       {
-        connect (rfbuttonlist.at (i), SIGNAL (about_to_activate ()),
-                 this, SLOT (restore_hovered_focus_variable ()));
+        connect (rfbuttonlist.at (i), &ReturnFocusToolButton::about_to_activate,
+                 this, &variable_editor::restore_hovered_focus_variable);
       }
 
     // Same for QMenu
@@ -1732,8 +1736,8 @@
       = m_tool_bar->findChildren<ReturnFocusMenu *> ();
     for (int i = 0; i < menulist.size (); i++)
       {
-        connect (menulist.at (i), SIGNAL (about_to_activate ()),
-                 this, SLOT (restore_hovered_focus_variable ()));
+        connect (menulist.at (i), &ReturnFocusMenu::about_to_activate,
+                 this, &variable_editor::restore_hovered_focus_variable);
       }
 
     m_tool_bar->setAttribute(Qt::WA_ShowWithoutActivating);
@@ -1743,4 +1747,5 @@
 
     m_tool_bar->setEnabled (false);
   }
+
 }
--- a/libgui/src/welcome-wizard.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/welcome-wizard.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -213,8 +213,8 @@
     m_next->setDefault (true);
     m_next->setFocus ();
 
-    connect (m_next, SIGNAL (clicked ()), wizard, SLOT (next_page ()));
-    connect (m_cancel, SIGNAL (clicked ()), wizard, SLOT (reject ()));
+    connect (m_next, &QPushButton::clicked, wizard, &welcome_wizard::next_page);
+    connect (m_cancel, &QPushButton::clicked, wizard, &welcome_wizard::reject);
   }
 
   setup_community_news::setup_community_news (base_qobject&,
@@ -303,12 +303,12 @@
     m_next->setDefault (true);
     m_next->setFocus ();
 
-    connect (m_checkbox, SIGNAL (stateChanged (int)),
-             wizard, SLOT (handle_web_connect_option (int)));
+    connect (m_checkbox, &QCheckBox::stateChanged,
+             wizard, &welcome_wizard::handle_web_connect_option);
 
-    connect (m_previous, SIGNAL (clicked ()), wizard, SLOT (previous_page ()));
-    connect (m_next, SIGNAL (clicked ()), wizard, SLOT (next_page ()));
-    connect (m_cancel, SIGNAL (clicked ()), wizard, SLOT (reject ()));
+    connect (m_previous, &QPushButton::clicked, wizard, &welcome_wizard::previous_page);
+    connect (m_next, &QPushButton::clicked, wizard, &welcome_wizard::next_page);
+    connect (m_cancel, &QPushButton::clicked, wizard, &welcome_wizard::reject);
   }
 
   final_page::final_page (base_qobject&, welcome_wizard *wizard)
@@ -381,8 +381,9 @@
     m_finish->setDefault (true);
     m_finish->setFocus ();
 
-    connect (m_previous, SIGNAL (clicked ()), wizard, SLOT (previous_page ()));
-    connect (m_finish, SIGNAL (clicked ()), wizard, SLOT (accept ()));
-    connect (m_cancel, SIGNAL (clicked ()), wizard, SLOT (reject ()));
+    connect (m_previous, &QPushButton::clicked,
+             wizard, &welcome_wizard::previous_page);
+    connect (m_finish, &QPushButton::clicked, wizard, &welcome_wizard::accept);
+    connect (m_cancel, &QPushButton::clicked, wizard, &welcome_wizard::reject);
   }
 }
--- a/libgui/src/welcome-wizard.h	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/welcome-wizard.h	Fri Apr 16 23:06:32 2021 -0400
@@ -59,7 +59,7 @@
     int m_max_height;
     int m_max_width;
 
-  private slots:
+  public slots:
 
     void handle_web_connect_option (int state);
 
--- a/libgui/src/workspace-view.cc	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/workspace-view.cc	Fri Apr 16 23:06:32 2021 -0400
@@ -132,8 +132,8 @@
 
         m_view->horizontalHeader ()->setContextMenuPolicy (Qt::CustomContextMenu);
         connect (m_view->horizontalHeader (),
-                 SIGNAL (customContextMenuRequested (const QPoint &)),
-                 this, SLOT (header_contextmenu_requested (const QPoint &)));
+                 &QTableView::customContextMenuRequested,
+                 this, &workspace_view::header_contextmenu_requested);
 
         // Init state of the filter
         m_filter->addItems (settings->value (ws_mru_list.key).toStringList ());
@@ -146,18 +146,18 @@
 
     // Connect signals and slots.
 
-    connect (m_filter, SIGNAL (editTextChanged (const QString&)),
-             this, SLOT (filter_update (const QString&)));
-    connect (m_filter_checkbox, SIGNAL (toggled (bool)),
-             this, SLOT (filter_activate (bool)));
-    connect (m_filter->lineEdit (), SIGNAL (editingFinished ()),
-             this, SLOT (update_filter_history ()));
+    connect (m_filter, &QComboBox::editTextChanged,
+             this, &workspace_view::filter_update);
+    connect (m_filter_checkbox, &QCheckBox::toggled,
+             this, &workspace_view::filter_activate);
+    connect (m_filter->lineEdit (), &QLineEdit::editingFinished,
+             this, &workspace_view::update_filter_history);
 
-    connect (m_view, SIGNAL (customContextMenuRequested (const QPoint&)),
-             this, SLOT (contextmenu_requested (const QPoint&)));
+    connect (m_view, &QTableView::customContextMenuRequested,
+             this, &workspace_view::contextmenu_requested);
 
-    connect (m_view, SIGNAL (activated (QModelIndex)),
-             this, SLOT (handle_contextmenu_edit (void)));
+    connect (m_view, &QTableView::activated,
+             this, &workspace_view::handle_contextmenu_edit);
 
     connect (this, SIGNAL (command_requested (const QString&)),
              p, SLOT (execute_command_in_terminal (const QString&)));
@@ -313,6 +313,20 @@
         action->setChecked (settings->value (ws_columns_shown_keys.at (i),true).toBool ());
       }
 
+    // FIXME: We could use
+    //
+    //   connect (&m_sig_mapper, QOverload<int>::of (&QSignalMapper::mapped),
+    //            this, &workspace_view::toggle_header);
+    //
+    // but referring to QSignalMapper::mapped will generate deprecated
+    // function warnings from GCC.  We could also use
+    //
+    //   connect (&m_sig_mapper, &QSignalMapper::mappedInt,
+    //            this, &workspace_view::toggle_header);
+    //
+    // but the function mappedInt was not introduced until Qt 5.15 so
+    // we'll need a feature test.
+
     connect (&sig_mapper, SIGNAL (mapped (int)),
              this, SLOT (toggle_header (int)));
 
@@ -349,16 +363,17 @@
         QString var_name = get_var_name (index);
 
         menu.addAction (tr ("Open in Variable Editor"), this,
-                        SLOT (handle_contextmenu_edit ()));
+                        &workspace_view::handle_contextmenu_edit);
 
         menu.addAction (tr ("Copy name"), this,
-                        SLOT (handle_contextmenu_copy ()));
+                        &workspace_view::handle_contextmenu_copy);
 
         menu.addAction (tr ("Copy value"), this,
-                        SLOT (handle_contextmenu_copy_value ()));
+                        &workspace_view::handle_contextmenu_copy_value);
 
-        QAction *rename = menu.addAction (tr ("Rename"), this,
-                                          SLOT (handle_contextmenu_rename ()));
+        QAction *rename
+          = menu.addAction (tr ("Rename"), this,
+                            &workspace_view::handle_contextmenu_rename);
 
         // Use m_model here instead of using "m_view->model ()" because
         // that points to the proxy model.
@@ -369,18 +384,18 @@
           }
 
         menu.addAction ("Clear " + var_name, this,
-                        SLOT (handle_contextmenu_clear ()));
+                        &workspace_view::handle_contextmenu_clear);
 
         menu.addSeparator ();
 
         menu.addAction ("disp (" + var_name + ')', this,
-                        SLOT (handle_contextmenu_disp ()));
+                        &workspace_view::handle_contextmenu_disp);
 
         menu.addAction ("plot (" + var_name + ')', this,
-                        SLOT (handle_contextmenu_plot ()));
+                        &workspace_view::handle_contextmenu_plot);
 
         menu.addAction ("stem (" + var_name + ')', this,
-                        SLOT (handle_contextmenu_stem ()));
+                        &workspace_view::handle_contextmenu_stem);
 
         menu.addSeparator ();
 
@@ -388,10 +403,10 @@
 
     if (m_filter_shown)
       menu.addAction (tr ("Hide filter"), this,
-                      SLOT (handle_contextmenu_filter ()));
+                      &workspace_view::handle_contextmenu_filter);
     else
       menu.addAction (tr ("Show filter"), this,
-                      SLOT (handle_contextmenu_filter ()));
+                      &workspace_view::handle_contextmenu_filter);
 
     menu.exec (m_view->mapToGlobal (qpos));
   }
--- a/libgui/src/workspace-view.h	Thu Apr 15 11:08:57 2021 -0400
+++ b/libgui/src/workspace-view.h	Fri Apr 16 23:06:32 2021 -0400
@@ -97,6 +97,8 @@
     void handle_contextmenu_stem (void);
     void handle_contextmenu_filter (void);
 
+  public slots:
+
     void handle_model_changed (void);
 
     void copyClipboard (void);