[rkward/frameworks] rkward: Convert most signal/slot connections to new syntax

Thomas Friedrichsmeier thomas.friedrichsmeier at ruhr-uni-bochum.de
Wed Nov 25 16:44:36 UTC 2015


Git commit db202ef8b26bc3503223ccace6e033da5252204c by Thomas Friedrichsmeier.
Committed on 25/11/2015 at 16:44.
Pushed by tfry into branch 'frameworks'.

Convert most signal/slot connections to new syntax

M  +1    -1    rkward/agents/rkquitagent.cpp
M  +1    -1    rkward/agents/showedittextfileagent.cpp
M  +1    -1    rkward/core/robjectlist.cpp
M  +2    -2    rkward/dataeditor/rkeditordataframe.cpp
M  +3    -3    rkward/dataeditor/twintable.cpp
M  +2    -2    rkward/dataeditor/twintablemember.cpp
M  +1    -1    rkward/dialogs/rkimportdialog.cpp
M  +21   -21   rkward/dialogs/rkloadlibsdialog.cpp
M  +1    -1    rkward/dialogs/rkrecoverdialog.cpp
M  +1    -1    rkward/dialogs/rkselectlistdialog.cpp
M  +3    -3    rkward/dialogs/startupdialog.cpp
M  +1    -1    rkward/misc/celleditor.cpp
M  +2    -2    rkward/misc/editformatdialog.cpp
M  +2    -2    rkward/misc/editlabelsdialog.cpp
M  +1    -1    rkward/misc/getfilenamewidget.cpp
M  +11   -11   rkward/misc/multistringselector.cpp
M  +6    -6    rkward/misc/rkaccordiontable.cpp
M  +2    -2    rkward/misc/rkdynamicsearchline.cpp
M  +6    -6    rkward/misc/rkfindbar.cpp
M  +11   -11   rkward/misc/rkobjectlistview.cpp
M  +2    -2    rkward/misc/rkprogresscontrol.cpp
M  +4    -4    rkward/misc/rksaveobjectchooser.cpp
M  +4    -4    rkward/misc/rkspecialactions.cpp
M  +1    -1    rkward/misc/rkspinbox.cpp
M  +1    -0    rkward/misc/rktableview.cpp
M  +1    -1    rkward/misc/rkxmlguisyncer.cpp
M  +3    -3    rkward/plugin/rkabstractoptionselector.cpp
M  +3    -3    rkward/plugin/rkcheckbox.cpp
M  +1    -1    rkward/plugin/rkcheckbox.h
M  +3    -3    rkward/plugin/rkcomponent.cpp
M  +4    -4    rkward/plugin/rkcomponentproperties.cpp
M  +1    -1    rkward/plugin/rkdropdown.cpp
M  +5    -5    rkward/plugin/rkformula.cpp
M  +10   -13   rkward/plugin/rkinput.cpp
M  +1    -2    rkward/plugin/rkinput.h
M  +4    -4    rkward/plugin/rkmatrixinput.cpp
M  +9    -21   rkward/plugin/rkoptionset.cpp
M  +2    -3    rkward/plugin/rkoptionset.h
M  +5    -11   rkward/plugin/rkpluginbrowser.cpp
M  +1    -2    rkward/plugin/rkpluginbrowser.h
M  +2    -2    rkward/plugin/rkpluginframe.cpp
M  +6    -6    rkward/plugin/rkpluginsaveobject.cpp
M  +5    -5    rkward/plugin/rkpluginspinbox.cpp
M  +1    -1    rkward/plugin/rkpluginspinbox.h
M  +5    -5    rkward/plugin/rkpreviewbox.cpp
M  +1    -1    rkward/plugin/rkpreviewbox.h
M  +1    -1    rkward/plugin/rkradio.cpp
M  +4    -4    rkward/plugin/rkstandardcomponent.cpp
M  +11   -11   rkward/plugin/rkstandardcomponentgui.cpp
M  +1    -1    rkward/plugin/rktext.cpp
M  +3    -3    rkward/plugin/rkvalueselector.cpp
M  +4    -4    rkward/plugin/rkvarselector.cpp
M  +4    -4    rkward/plugin/rkvarslot.cpp
M  +1    -1    rkward/qwinhost/qwinhost.cpp
M  +2    -2    rkward/rbackend/rkfrontendtransmitter.cpp
M  +2    -2    rkward/rbackend/rktransmitter.cpp
M  +3    -3    rkward/rbackend/rkwarddevice/rkgraphicsdevice.cpp
M  +5    -5    rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp
M  +3    -3    rkward/scriptbackends/qtscriptbackend.cpp
M  +3    -3    rkward/settings/rksettings.cpp
M  +9    -9    rkward/settings/rksettingsmodulecommandeditor.cpp
M  +6    -6    rkward/settings/rksettingsmoduleconsole.cpp
M  +3    -3    rkward/settings/rksettingsmoduledebug.cpp
M  +9    -9    rkward/settings/rksettingsmodulegeneral.cpp
M  +9    -9    rkward/settings/rksettingsmodulegraphics.cpp
M  +2    -2    rkward/settings/rksettingsmoduleobjectbrowser.cpp
M  +12   -12   rkward/settings/rksettingsmoduleoutput.cpp
M  +4    -4    rkward/settings/rksettingsmoduleplugins.cpp
M  +22   -22   rkward/settings/rksettingsmoduler.cpp
M  +5    -5    rkward/settings/rksettingsmodulewatch.cpp
M  +3    -3    rkward/windows/rcontrolwindow.cpp
M  +1    -1    rkward/windows/rkcallstackviewer.cpp
M  +10   -10   rkward/windows/rkcommandeditorwindow.cpp
M  +7    -7    rkward/windows/rkdebugconsole.cpp
M  +1    -1    rkward/windows/rkdebugconsole.h
M  +6    -6    rkward/windows/rkfilebrowser.cpp
M  +1    -1    rkward/windows/rkfilebrowser.h
M  +2    -2    rkward/windows/rkhelpsearchwindow.cpp
M  +18   -18   rkward/windows/rkhtmlwindow.cpp
M  +3    -3    rkward/windows/rktoolwindowbar.cpp
M  +11   -11   rkward/windows/rkwindowcatcher.cpp
M  +1    -1    rkward/windows/rkworkplace.cpp
M  +3    -3    rkward/windows/rkworkplaceview.cpp
M  +3    -3    rkward/windows/robjectbrowser.cpp

http://commits.kde.org/rkward/db202ef8b26bc3503223ccace6e033da5252204c

diff --git a/rkward/agents/rkquitagent.cpp b/rkward/agents/rkquitagent.cpp
index b2a9404..259069d 100644
--- a/rkward/agents/rkquitagent.cpp
+++ b/rkward/agents/rkquitagent.cpp
@@ -40,7 +40,7 @@ RKQuitAgent::RKQuitAgent (QObject *parent) : QObject (parent) {
 	RKWardMainWindow::getMain ()->hide ();
 	cancel_dialog = new RKProgressControl (this, i18n ("Waiting for remaining R commands to finish. To quit immediately, press Cancel (WARNING: This may result in loss of data)"), i18n ("Waiting for R to finish"), RKProgressControl::AllowCancel | RKProgressControl::ShowAtOnce);
 	cancel_dialog->addRCommand (command, true);
-	connect (cancel_dialog, SIGNAL (cancelled()), this, SLOT (doQuitNow()));
+	connect (cancel_dialog, &RKProgressControl::cancelled, this, &RKQuitAgent::doQuitNow);
 
 	if (RKGlobals::rInterface ()->backendIsDead ()) {	// nothing to loose
 		QTimer::singleShot (0, this, SLOT (doQuitNow()));
diff --git a/rkward/agents/showedittextfileagent.cpp b/rkward/agents/showedittextfileagent.cpp
index a90bb3e..eddce1e 100644
--- a/rkward/agents/showedittextfileagent.cpp
+++ b/rkward/agents/showedittextfileagent.cpp
@@ -57,7 +57,7 @@ ShowEditTextFileAgent::ShowEditTextFileAgent (RBackendRequest *request, const QS
 
 	dialog->setButtonText (KDialog::Ok, i18n ("Done"));
 
-	connect (dialog, SIGNAL (finished()), this, SLOT (deleteLater()));
+	connect (dialog, &KDialog::finished, this, &ShowEditTextFileAgent::deleteLater);
 
 	// do it
 	dialog->show ();
diff --git a/rkward/core/robjectlist.cpp b/rkward/core/robjectlist.cpp
index 98d9e57..84d23f2 100644
--- a/rkward/core/robjectlist.cpp
+++ b/rkward/core/robjectlist.cpp
@@ -46,7 +46,7 @@ RObjectList::RObjectList () : RContainerObject (0, QString ()) {
 
 	update_timer = new QTimer (this);
 	update_timer->setSingleShot (true);
-	connect (update_timer, SIGNAL (timeout()), this, SLOT (timeout()));
+	connect (update_timer, &QTimer::timeout, this, &RObjectList::timeout);
 	
 	//update_timer->start (AUTO_UPDATE_INTERVAL, true);
 	
diff --git a/rkward/dataeditor/rkeditordataframe.cpp b/rkward/dataeditor/rkeditordataframe.cpp
index 955b5c8..9c0ce41 100644
--- a/rkward/dataeditor/rkeditordataframe.cpp
+++ b/rkward/dataeditor/rkeditordataframe.cpp
@@ -49,7 +49,7 @@ RKEditorDataFrame::RKEditorDataFrame (RContainerObject* object, QWidget *parent)
 
 	RKVarEditDataFrameModel* model = new RKVarEditDataFrameModel (object, this);
 	initTable (model, object);
-	connect (model, SIGNAL (modelObjectDestroyed()), this, SLOT (detachModel()));
+	connect (model, &RKVarEditDataFrameModel::modelObjectDestroyed, this, &RKEditorDataFrame::detachModel);
 
 	waitForLoad ();
 }
@@ -69,7 +69,7 @@ RKEditorDataFrame::RKEditorDataFrame (const QString& new_object_name, QWidget* p
 	setGlobalContextProperty ("current_object", object->getFullName());
 
 	initTable (model, object);
-	connect (model, SIGNAL (modelObjectDestroyed()), this, SLOT (deleteLater()));
+	connect (model, &RKVarEditDataFrameModel::modelObjectDestroyed, this, &RKEditorDataFrame::deleteLater);
 
 	RKGlobals::rInterface ()->closeChain (open_chain);
 }
diff --git a/rkward/dataeditor/twintable.cpp b/rkward/dataeditor/twintable.cpp
index 7eec9e5..495f4de 100644
--- a/rkward/dataeditor/twintable.cpp
+++ b/rkward/dataeditor/twintable.cpp
@@ -77,8 +77,8 @@ TwinTable::TwinTable (QWidget *parent) : RKEditor (parent), RObjectListener (ROb
 	meta_header_anchor_section = -1;
 
 	// catch header context menu requests
-	connect (dataview, SIGNAL (contextMenuRequest(int,int,QPoint)), this, SLOT (contextMenu(int,int,QPoint)));
-	connect (metaview, SIGNAL (contextMenuRequest(int,int,QPoint)), this, SLOT (contextMenu(int,int,QPoint)));
+	connect (dataview, &TwinTableMember::contextMenuRequest, this, &TwinTable::contextMenu);
+	connect (metaview, &TwinTableMember::contextMenuRequest, this, &TwinTable::contextMenu);
 	context_menu_table = 0;
 	context_menu_row = context_menu_column = -2;
 
@@ -150,7 +150,7 @@ void TwinTable::initActions () {
 	action_tb_unlock_editing->setActionGroup (lockactions);
 	action_tb_unlock_editing->setStatusTip (i18n ("Enable editing"));
 	actionCollection ()->addAction ("unlock_editing", action_tb_unlock_editing);
-	connect (action_tb_unlock_editing, SIGNAL (toggled(bool)), this, SLOT (enableEditing(bool)));
+	connect (action_tb_unlock_editing, &QAction::toggled, this, &TwinTable::enableEditing);
 	// NOTE: No need to connect lock_editing, too, as they are radio-exclusive
 
 	// add all edit-actions to a group, so they can be enabled/disabled easily
diff --git a/rkward/dataeditor/twintablemember.cpp b/rkward/dataeditor/twintablemember.cpp
index 9bdd7f9..b03955f 100644
--- a/rkward/dataeditor/twintablemember.cpp
+++ b/rkward/dataeditor/twintablemember.cpp
@@ -40,10 +40,10 @@ TwinTableMember::TwinTableMember (QWidget *parent) : RKTableView (parent){
 	horizontalHeader ()->setContextMenuPolicy (Qt::CustomContextMenu);
 	connect (horizontalHeader (), SIGNAL (customContextMenuRequested(QPoint)), this, SLOT (handleContextMenuRequest(QPoint)));
 	setContextMenuPolicy (Qt::CustomContextMenu);
-	connect (this, SIGNAL (customContextMenuRequested(QPoint)), this, SLOT (handleContextMenuRequest(QPoint)));
+	connect (this, &TwinTableMember::customContextMenuRequested, this, &TwinTableMember::handleContextMenuRequest);
 
 	updating_twin = false;
-	connect (this, SIGNAL (blankSelectionRequest()), this, SLOT (blankSelected()));
+	connect (this, &TwinTableMember::blankSelectionRequest, this, &TwinTableMember::blankSelected);
 }
 
 TwinTableMember::~TwinTableMember(){
diff --git a/rkward/dialogs/rkimportdialog.cpp b/rkward/dialogs/rkimportdialog.cpp
index 6cfd727..3ed0eee 100644
--- a/rkward/dialogs/rkimportdialog.cpp
+++ b/rkward/dialogs/rkimportdialog.cpp
@@ -77,7 +77,7 @@ RKImportDialog::RKImportDialog (const QString &context_id, QWidget *parent) : KF
 	// initialize
 	setMode (KFile::File | KFile::ExistingOnly | KFile::LocalOnly);
 	setFilter (formats);
-	connect (this, SIGNAL (filterChanged(QString)), this, SLOT (filterWasChanged(QString)));
+	connect (this, &RKImportDialog::filterChanged, this, &RKImportDialog::filterWasChanged);
 	filterWasChanged (QString ());
 	show ();
 }
diff --git a/rkward/dialogs/rkloadlibsdialog.cpp b/rkward/dialogs/rkloadlibsdialog.cpp
index ae64764..1fe2c9b 100644
--- a/rkward/dialogs/rkloadlibsdialog.cpp
+++ b/rkward/dialogs/rkloadlibsdialog.cpp
@@ -66,14 +66,14 @@ RKLoadLibsDialog::RKLoadLibsDialog (QWidget *parent, RCommandChain *chain, bool
 
 	LoadUnloadWidget *luwidget = new LoadUnloadWidget (this);
 	addChild (luwidget, i18n ("Load / Unload R packages"));
-	connect (this, SIGNAL (installedPackagesChanged()), luwidget, SLOT (updateInstalledPackages()));
+	connect (this, &RKLoadLibsDialog::installedPackagesChanged, luwidget, &LoadUnloadWidget::updateInstalledPackages);
 
 	install_packages_widget = new InstallPackagesWidget (this);
 	install_packages_pageitem = addChild (install_packages_widget, i18n ("Install / Update / Remove R packages"));
 
 	configure_pluginmaps_pageitem = addChild (new RKPluginMapSelectionWidget (this), i18n ("Manage RKWard Plugins"));
 
-	connect (this, SIGNAL (currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)), this, SLOT (slotPageChanged()));
+	connect (this, &RKLoadLibsDialog::currentPageChanged, this, &RKLoadLibsDialog::slotPageChanged);
 	QTimer::singleShot (0, this, SLOT (slotPageChanged()));
 	num_child_widgets = 4;
 	was_accepted = false;
@@ -345,14 +345,14 @@ void RKLoadLibsDialog::runInstallationCommand (const QString& command, bool as_r
 	installation_process = new QProcess ();
 	installation_process->setProcessChannelMode (QProcess::SeparateChannels);
 
-	connect (installation_process, SIGNAL (finished(int,QProcess::ExitStatus)), this, SLOT (processExited(int,QProcess::ExitStatus)));
-	connect (installation_process, SIGNAL (readyReadStandardOutput()), this, SLOT (installationProcessOutput()));
-	connect (installation_process, SIGNAL (readyReadStandardError()), this, SLOT (installationProcessError()));
+	connect (installation_process, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &RKLoadLibsDialog::processExited);
+	connect (installation_process, &QProcess::readyReadStandardOutput, this, &RKLoadLibsDialog::installationProcessOutput);
+	connect (installation_process, &QProcess::readyReadStandardError, this, &RKLoadLibsDialog::installationProcessError);
 
 	RKProgressControl *installation_progress = new RKProgressControl (this, message, title, RKProgressControl::CancellableProgress);
-	connect (this, SIGNAL (installationComplete()), installation_progress, SLOT (done()));
-	connect (this, SIGNAL (installationOutput(QString)), installation_progress, SLOT (newOutput(QString)));
-	connect (this, SIGNAL (installationError(QString)), installation_progress, SLOT (newError(QString)));
+	connect (this, &RKLoadLibsDialog::installationComplete, installation_progress, &RKProgressControl::done);
+	connect (this, &RKLoadLibsDialog::installationOutput, installation_progress, static_cast<void (RKProgressControl::*)(const QString&)>(&RKProgressControl::newOutput));
+	connect (this, &RKLoadLibsDialog::installationError, installation_progress, &RKProgressControl::newError);
 
 	installation_process->start (call, params, QIODevice::ReadWrite | QIODevice::Unbuffered);
 
@@ -425,9 +425,9 @@ LoadUnloadWidget::LoadUnloadWidget (RKLoadLibsDialog *dialog) : QWidget (0) {
 	instvbox->addWidget (installed_view);
 
 	load_button = new QPushButton (RKStandardIcons::getIcon (RKStandardIcons::ActionAddRight), i18n ("Load"), this);
-	connect (load_button, SIGNAL (clicked()), this, SLOT (loadButtonClicked()));
+	connect (load_button, &QPushButton::clicked, this, &LoadUnloadWidget::loadButtonClicked);
 	detach_button = new QPushButton (RKStandardIcons::getIcon (RKStandardIcons::ActionRemoveLeft), i18n ("Unload"), this);
-	connect (detach_button, SIGNAL (clicked()), this, SLOT (detachButtonClicked()));
+	connect (detach_button, &QPushButton::clicked, this, &LoadUnloadWidget::detachButtonClicked);
 	buttonvbox->addStretch (1);
 	buttonvbox->addWidget (load_button);
 	buttonvbox->addWidget (detach_button);
@@ -440,8 +440,8 @@ LoadUnloadWidget::LoadUnloadWidget (RKLoadLibsDialog *dialog) : QWidget (0) {
 	loadedvbox->addWidget (label);
 	loadedvbox->addWidget (loaded_view);
 
-	connect (loaded_view, SIGNAL (itemSelectionChanged()), this, SLOT (updateButtons()));
-	connect (installed_view, SIGNAL (itemSelectionChanged()), this, SLOT (updateButtons()));
+	connect (loaded_view, &QTreeWidget::itemSelectionChanged, this, &LoadUnloadWidget::updateButtons);
+	connect (installed_view, &QTreeWidget::itemSelectionChanged, this, &LoadUnloadWidget::updateButtons);
 
 	updateInstalledPackages ();
 	updateButtons ();
@@ -577,7 +577,7 @@ void LoadUnloadWidget::doLoadUnload () {
 	RK_TRACE (DIALOGS);
 
 	RKProgressControl *control = new RKProgressControl (this, i18n ("There has been an error while trying to load / unload packages. See transcript below for details"), i18n ("Error while handling packages"), RKProgressControl::DetailedError);
-	connect (this, SIGNAL (loadUnloadDone()), control, SLOT (done()));
+	connect (this, &LoadUnloadWidget::loadUnloadDone, control, &RKProgressControl::done);
 
 	// load packages previously not loaded
 	for (int i = 0; i < loaded_view->topLevelItemCount (); ++i) {
@@ -675,7 +675,7 @@ InstallPackagesWidget::InstallPackagesWidget (RKLoadLibsDialog *dialog) : QWidge
 	for (int i = 0; i < model->rowCount (); ++i) {  // the root level captions
 		packages_view->setFirstColumnSpanned (i, QModelIndex (), true);
 	}
-	connect (packages_view, SIGNAL(clicked(QModelIndex)), this, SLOT(rowClicked(QModelIndex)));
+	connect (packages_view, &QTreeView::clicked, this, &InstallPackagesWidget::rowClicked);
 	packages_view->setRootIsDecorated (false);
 	packages_view->setIndentation (0);
 	packages_view->setEnabled (false);
@@ -685,7 +685,7 @@ InstallPackagesWidget::InstallPackagesWidget (RKLoadLibsDialog *dialog) : QWidge
 
 	QPushButton *configure_repos_button = new QPushButton (i18n ("Configure Repositories"), this);
 	RKCommonFunctions::setTips (i18n ("Many packages are available on CRAN (Comprehensive R Archive Network), and other repositories.<br>Click this to add more sources."), configure_repos_button);
-	connect (configure_repos_button, SIGNAL (clicked()), this, SLOT(configureRepositories()));
+	connect (configure_repos_button, &QPushButton::clicked, this, &InstallPackagesWidget::configureRepositories);
 	vbox->addWidget (configure_repos_button);
 
 	QVBoxLayout *buttonvbox = new QVBoxLayout ();
@@ -697,14 +697,14 @@ InstallPackagesWidget::InstallPackagesWidget (RKLoadLibsDialog *dialog) : QWidge
 	filter_edit->setModelToFilter (model);
 	rkward_packages_only = new QCheckBox (i18n ("Show only packages providing RKWard dialogs"), this);
 	RKCommonFunctions::setTips (i18n ("<p>Some but not all R packages come with plugins for RKWard. That means they provide a graphical user-interface in addition to R functions. Check this box to show only such packages.</p><p></p>"), rkward_packages_only);
-	connect (rkward_packages_only, SIGNAL(stateChanged(int)), this, SLOT (filterChanged()));
+	connect (rkward_packages_only, &QCheckBox::stateChanged, this, &InstallPackagesWidget::filterChanged);
 	filterChanged ();
 
 	mark_all_updates_button = new QPushButton (i18n ("Select all updates"), this);
-	connect (mark_all_updates_button, SIGNAL (clicked()), this, SLOT (markAllUpdates()));
+	connect (mark_all_updates_button, &QPushButton::clicked, this, &InstallPackagesWidget::markAllUpdates);
 
 	install_params = new PackageInstallParamsWidget (this);
-	connect (parent, SIGNAL (libraryLocationsChanged(QStringList)), install_params, SLOT (liblocsChanged(QStringList)));
+	connect (parent, &RKLoadLibsDialog::libraryLocationsChanged, install_params, &PackageInstallParamsWidget::liblocsChanged);
 
 	buttonvbox->addWidget (label);
 	buttonvbox->addWidget (filter_edit);
@@ -1266,9 +1266,9 @@ void RKPluginMapSelectionWidget::activated () {
 		model = new RKSettingsModulePluginsModel (this);
 		model->init (RKSettingsModulePlugins::knownPluginmaps ());
 		selector->setModel (model, 1);
-		connect (selector, SIGNAL (insertNewStrings(int)), model, SLOT (insertNewStrings(int)));
-		connect (selector, SIGNAL (swapRows(int,int)), model, SLOT (swapRows(int,int)));
-		connect (selector, SIGNAL (listChanged()), this, SLOT (changed()));
+		connect (selector, &RKMultiStringSelectorV2::insertNewStrings, model, &RKSettingsModulePluginsModel::insertNewStrings);
+		connect (selector, &RKMultiStringSelectorV2::swapRows, model, &RKSettingsModulePluginsModel::swapRows);
+		connect (selector, &RKMultiStringSelectorV2::listChanged, this, &RKPluginMapSelectionWidget::changed);
 	}
 }
 
diff --git a/rkward/dialogs/rkrecoverdialog.cpp b/rkward/dialogs/rkrecoverdialog.cpp
index 432cbe0..6f5792f 100644
--- a/rkward/dialogs/rkrecoverdialog.cpp
+++ b/rkward/dialogs/rkrecoverdialog.cpp
@@ -47,7 +47,7 @@ RKRecoverDialog::RKRecoverDialog (const QStringList &recovery_files) {
 	setButtonToolTip (KDialog::User1, i18n ("Deletes the recovery file(s)"));
 	setButtonWhatsThis (KDialog::User1, buttonToolTip (KDialog::User1));
 	
-	connect (this, SIGNAL (user1Clicked()), this, SLOT (deleteButtonClicked()));
+	connect (this, &RKRecoverDialog::user1Clicked, this, &RKRecoverDialog::deleteButtonClicked);
 	QLabel *label = new QLabel (this);
 	QString text = QString ("<p><b>%1</b></p>").arg (caption);
 	text.append (i18n ("<p>It looks like RKWard has crashed, recently. We are sorry about that! However, not everything is lost, and with a bit of luck, your data has been saved in time.</p>"));
diff --git a/rkward/dialogs/rkselectlistdialog.cpp b/rkward/dialogs/rkselectlistdialog.cpp
index b118b02..d972b8c 100644
--- a/rkward/dialogs/rkselectlistdialog.cpp
+++ b/rkward/dialogs/rkselectlistdialog.cpp
@@ -54,7 +54,7 @@ RKSelectListDialog::RKSelectListDialog (QWidget *parent, const QString &caption,
 	// KDialog appears to be smart enough to limit this to the available screen geometry
 	setInitialSize (QSize (base_hint.width (), ideal_height));
 
-	connect (input, SIGNAL (itemSelectionChanged()), this, SLOT (updateState()));
+	connect (input, &QListWidget::itemSelectionChanged, this, &RKSelectListDialog::updateState);
 	updateState ();
 }
 
diff --git a/rkward/dialogs/startupdialog.cpp b/rkward/dialogs/startupdialog.cpp
index 4a7f900..3e1747d6 100644
--- a/rkward/dialogs/startupdialog.cpp
+++ b/rkward/dialogs/startupdialog.cpp
@@ -69,7 +69,7 @@ StartupDialog::StartupDialog (QWidget *parent, StartupDialogResult *result, KRec
 	} else restore_workspace_button->setText (i18n ("Load workspace from current directory:\n%1", rdata_file.toLocalFile ()));
 	choser_layout->addWidget (open_button = new QRadioButton (i18n ("Load an existing workspace:"), choser_box));
 	choser->addButton (open_button);
-	connect (open_button, SIGNAL (toggled(bool)), this, SLOT (openButtonSelected(bool)));
+	connect (open_button, &QRadioButton::toggled, this, &StartupDialog::openButtonSelected);
 	empty_table_button->setChecked (true);
 
 	file_list = new QListWidget (choser_box);
@@ -82,8 +82,8 @@ StartupDialog::StartupDialog (QWidget *parent, StartupDialogResult *result, KRec
 			file_list->addItem (urls[i].url (QUrl::PreferLocalFile));
 		}
 	}
-	connect (file_list, SIGNAL (itemClicked(QListWidgetItem*)), this, SLOT (listClicked(QListWidgetItem*)));
-	connect (file_list, SIGNAL (itemDoubleClicked(QListWidgetItem*)), this, SLOT (listDoubleClicked(QListWidgetItem*)));
+	connect (file_list, &QListWidget::itemClicked, this, &StartupDialog::listClicked);
+	connect (file_list, &QListWidget::itemDoubleClicked, this, &StartupDialog::listDoubleClicked);
 	choser_layout->addWidget (file_list);
 	choser_layout->addWidget (remember_box = new QCheckBox (i18n ("Always do this on startup"), choser_box));
 }
diff --git a/rkward/misc/celleditor.cpp b/rkward/misc/celleditor.cpp
index 0bc5ccf..f63f0fb 100644
--- a/rkward/misc/celleditor.cpp
+++ b/rkward/misc/celleditor.cpp
@@ -50,7 +50,7 @@ void CellEditor::setValueLabels (const RObject::ValueLabels& labels) {
 	for (RObject::ValueLabels::const_iterator it = labels.constBegin (); it != labels.constEnd (); ++it) {
 		value_list->addAction (it.key () + ": " + it.value ())->setData (it.key ());
 	}
-	connect (value_list, SIGNAL (triggered(QAction*)), SLOT (selectedFromList(QAction*)));
+	connect (value_list, &QMenu::triggered, this, &CellEditor::selectedFromList);
 
 	QTimer::singleShot (200, this, SLOT (showValueLabels()));
 }
diff --git a/rkward/misc/editformatdialog.cpp b/rkward/misc/editformatdialog.cpp
index c40b000..857fbcd 100644
--- a/rkward/misc/editformatdialog.cpp
+++ b/rkward/misc/editformatdialog.cpp
@@ -61,7 +61,7 @@ EditFormatDialog::EditFormatDialog (QWidget *parent) : KDialog (parent) {
 	group_layout->addWidget (button);
 	precision_field = new QSpinBox (precision_box);
 	precision_field->setRange (0, 10);
-	connect (precision_field, SIGNAL (valueChanged(int)), this, SLOT (precisionFieldChanged(int)));
+	connect (precision_field, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &EditFormatDialog::precisionFieldChanged);
 	group_layout->addWidget (precision_field);
 	precision_group->button ((int) RKVariable::FormattingOptions::PrecisionDefault)->setChecked (true);
 
@@ -127,7 +127,7 @@ void EditFormatDialogProxy::initialize (const RKVariable::FormattingOptions& opt
 	dialog = new EditFormatDialog (this);
 	dialog->initialize (options, varname);
 
-	connect (dialog, SIGNAL (finished(int)), this, SLOT (dialogDone(int)));
+	connect (dialog, &QDialog::finished, this, &EditFormatDialogProxy::dialogDone);
 	QTimer::singleShot (0, dialog, SLOT (exec()));
 }
 
diff --git a/rkward/misc/editlabelsdialog.cpp b/rkward/misc/editlabelsdialog.cpp
index af36a95..6ed7e79 100644
--- a/rkward/misc/editlabelsdialog.cpp
+++ b/rkward/misc/editlabelsdialog.cpp
@@ -50,7 +50,7 @@ RKVarLevelsTable::RKVarLevelsTable (QWidget *parent, const RObject::ValueLabels&
 	setContextMenuPolicy (Qt::ActionsContextMenu);
 
 	setModel (lmodel = new RKVarLevelsTableModel (labels, this));
-	connect (this, SIGNAL (blankSelectionRequest()), this, SLOT (blankSelected()));
+	connect (this, &RKVarLevelsTable::blankSelectionRequest, this, &RKVarLevelsTable::blankSelected);
 	setRKItemDelegate (new RKItemDelegate (this, lmodel, true));
 	trailing_rows = 1;
 }
@@ -251,7 +251,7 @@ void EditLabelsDialogProxy::initialize (const RObject::ValueLabels& labels, cons
 	EditLabelsDialogProxy::labels = labels;		// we need to take a copy in case the dialog is rejected
 
 	dialog = new EditLabelsDialog (this, labels, varname);
-	connect (dialog, SIGNAL (finished(int)), this, SLOT (dialogDone(int)));
+	connect (dialog, &QDialog::finished, this, &EditLabelsDialogProxy::dialogDone);
 	QTimer::singleShot (0, dialog, SLOT (exec()));
 }
 
diff --git a/rkward/misc/getfilenamewidget.cpp b/rkward/misc/getfilenamewidget.cpp
index 8c7d9ed..9672190 100644
--- a/rkward/misc/getfilenamewidget.cpp
+++ b/rkward/misc/getfilenamewidget.cpp
@@ -35,7 +35,7 @@ GetFileNameWidget::GetFileNameWidget (QWidget *parent, FileType mode, bool only_
 	if (!label.isEmpty ()) vbox->addWidget (new QLabel (label, this));
 
 	edit = new KUrlRequester (this);
-	connect (edit, SIGNAL (textChanged(QString)), this, SLOT (locationEditChanged(QString)));
+	connect (edit, &KUrlRequester::textChanged, this, &GetFileNameWidget::locationEditChanged);
 	vbox->addWidget (edit);
 
 	edit->setUrl (QUrl::fromUserInput (initial, QString (), QUrl::AssumeLocalFile));
diff --git a/rkward/misc/multistringselector.cpp b/rkward/misc/multistringselector.cpp
index 71ac98c..7367d03 100644
--- a/rkward/misc/multistringselector.cpp
+++ b/rkward/misc/multistringselector.cpp
@@ -44,8 +44,8 @@ MultiStringSelector::MultiStringSelector (const QString& label, QWidget* parent)
 	RK_TRACE (MISC);
 
 	model = new RKStringListModelWithColumnLabel (this, i18n ("Filename"));
-	connect (this, SIGNAL (swapRows(int,int)), this, SLOT (swapRowsImpl(int,int)));
-	connect (this, SIGNAL (insertNewStrings(int)), this, SLOT (insertNewStringsImpl(int)));
+	connect (this, &MultiStringSelector::swapRows, this, &MultiStringSelector::swapRowsImpl);
+	connect (this, &MultiStringSelector::insertNewStrings, this, &MultiStringSelector::insertNewStringsImpl);
 	setModel (model);
 }
 
@@ -110,21 +110,21 @@ RKMultiStringSelectorV2::RKMultiStringSelectorV2 (const QString& label, QWidget*
 	main_box->addWidget (tree_view);
 
 	add_button = new QPushButton (i18n ("Add"), this);
-	connect (add_button, SIGNAL (clicked()), this, SLOT (buttonClicked()));
+	connect (add_button, &QPushButton::clicked, this, &RKMultiStringSelectorV2::buttonClicked);
 	button_box->addWidget (add_button);
 
 	remove_button = new QPushButton (i18n ("Remove"), this);
-	connect (remove_button, SIGNAL (clicked()), this, SLOT (buttonClicked()));
+	connect (remove_button, &QPushButton::clicked, this, &RKMultiStringSelectorV2::buttonClicked);
 	button_box->addWidget (remove_button);
 
 	button_box->addSpacing (10);
 
 	up_button = new QPushButton (RKStandardIcons::getIcon (RKStandardIcons::ActionMoveUp), i18n ("Up"), this);
-	connect (up_button, SIGNAL (clicked()), this, SLOT (buttonClicked()));
+	connect (up_button, &QPushButton::clicked, this, &RKMultiStringSelectorV2::buttonClicked);
 	button_box->addWidget (up_button);
 
 	down_button = new QPushButton (RKStandardIcons::getIcon (RKStandardIcons::ActionMoveDown), i18n ("Down"), this);
-	connect (down_button, SIGNAL (clicked()), this, SLOT (buttonClicked()));
+	connect (down_button, &QPushButton::clicked, this, &RKMultiStringSelectorV2::buttonClicked);
 	button_box->addWidget (down_button);
 }
 
@@ -145,11 +145,11 @@ void RKMultiStringSelectorV2::setModel (QAbstractItemModel* model, int main_colu
 	}
 	tree_view->setModel (model);
 	connect (tree_view->selectionModel (), SIGNAL (currentChanged(QModelIndex,QModelIndex)), this, SLOT (updateButtons()));
-	connect (model, SIGNAL (dataChanged(QModelIndex,QModelIndex)), this, SLOT (anyModelDataChange()));
-	connect (model, SIGNAL (layoutChanged()), this, SLOT (anyModelDataChange()));
-	connect (model, SIGNAL (rowsInserted(QModelIndex,int,int)), this, SLOT (anyModelDataChange()));
-	connect (model, SIGNAL (rowsRemoved(QModelIndex,int,int)), this, SLOT (anyModelDataChange()));
-	connect (model, SIGNAL (modelReset()), this, SLOT (anyModelDataChange()));
+	connect (model, &QStringListModel::dataChanged, this, &RKMultiStringSelectorV2::anyModelDataChange);
+	connect (model, &QStringListModel::layoutChanged, this, &RKMultiStringSelectorV2::anyModelDataChange);
+	connect (model, &QStringListModel::rowsInserted, this, &RKMultiStringSelectorV2::anyModelDataChange);
+	connect (model, &QStringListModel::rowsRemoved, this, &RKMultiStringSelectorV2::anyModelDataChange);
+	connect (model, &QStringListModel::modelReset, this, &RKMultiStringSelectorV2::anyModelDataChange);
 
 	if (main_column >= 0) tree_view->resizeColumnToContents (main_column);
 	
diff --git a/rkward/misc/rkaccordiontable.cpp b/rkward/misc/rkaccordiontable.cpp
index 258c58c..32de748 100644
--- a/rkward/misc/rkaccordiontable.cpp
+++ b/rkward/misc/rkaccordiontable.cpp
@@ -278,8 +278,8 @@ RKAccordionTable::RKAccordionTable (QWidget* parent) : QTreeView (parent) {
 	delegate->pmodel = pmodel;
 	setItemDelegateForColumn (0, delegate);
 
-	connect (this, SIGNAL (expanded(QModelIndex)), this, SLOT (rowExpanded(QModelIndex)));
-	connect (this, SIGNAL (clicked(QModelIndex)), this, SLOT (rowClicked(QModelIndex)));
+	connect (this, &RKAccordionTable::expanded, this, &RKAccordionTable::rowExpanded);
+	connect (this, &RKAccordionTable::clicked, this, &RKAccordionTable::rowClicked);
 }
 
 RKAccordionTable::~RKAccordionTable () {
@@ -447,7 +447,7 @@ void RKAccordionTable::updateWidget () {
 
 				QToolButton *remove_button = new QToolButton (display_buttons);
 				remove_button->setAutoRaise (true);
-				connect (remove_button, SIGNAL (clicked(bool)), this, SLOT (removeClicked()));
+				connect (remove_button, &QToolButton::clicked, this, &RKAccordionTable::removeClicked);
 				remove_button->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionDeleteRow));
 				RKCommonFunctions::setTips (i18n ("Remove this row / element"), remove_button);
 				layout->addWidget (remove_button);
@@ -502,9 +502,9 @@ void RKAccordionTable::setModel (QAbstractItemModel* model) {
 
 	pmodel->setSourceModel (model);
 	QTreeView::setModel (pmodel);
-	connect (pmodel, SIGNAL (layoutChanged()), this, SLOT (updateWidget()));
-	connect (pmodel, SIGNAL (rowsInserted(const QModelIndex&,int,int)), this, SLOT (updateWidget()));
-	connect (pmodel, SIGNAL (rowsRemoved(const QModelIndex&,int,int)), this, SLOT (updateWidget()));
+	connect (pmodel, &RKAccordionDummyModel::layoutChanged, this, &RKAccordionTable::updateWidget);
+	connect (pmodel, &RKAccordionDummyModel::rowsInserted, this, &RKAccordionTable::updateWidget);
+	connect (pmodel, &RKAccordionDummyModel::rowsRemoved, this, &RKAccordionTable::updateWidget);
 
 	if (pmodel->rowCount () > 0) expand (pmodel->index (0, 0));
 
diff --git a/rkward/misc/rkdynamicsearchline.cpp b/rkward/misc/rkdynamicsearchline.cpp
index 23c13f1..ce2c7c1 100644
--- a/rkward/misc/rkdynamicsearchline.cpp
+++ b/rkward/misc/rkdynamicsearchline.cpp
@@ -29,8 +29,8 @@ RKDynamicSearchLine::RKDynamicSearchLine (QWidget *parent) : KLineEdit (parent)
 	setClearButtonShown (true);
 	setClickMessage (i18n ("Search"));
 	timer.setSingleShot (true);
-	connect (&timer, SIGNAL (timeout ()), this, SLOT (delayedSearch ()));
-	connect (this, SIGNAL (textChanged(QString)), this, SLOT (textChanged()));
+	connect (&timer, &QTimer::timeout, this, &RKDynamicSearchLine::delayedSearch);
+	connect (this, &RKDynamicSearchLine::textChanged, this, &RKDynamicSearchLine::textChanged);
 }
 
 RKDynamicSearchLine::~RKDynamicSearchLine () {
diff --git a/rkward/misc/rkfindbar.cpp b/rkward/misc/rkfindbar.cpp
index cb6271d..0dd0bf6 100644
--- a/rkward/misc/rkfindbar.cpp
+++ b/rkward/misc/rkfindbar.cpp
@@ -38,7 +38,7 @@ RKFindBar::RKFindBar (QWidget* parent, bool custom) : QWidget (parent) {
 	QToolButton* close_button = new QToolButton (this);
 	close_button->setIcon (KIcon ("dialog-close"));
 	close_button->setAutoRaise (true);   // makes it flat
-	connect (close_button, SIGNAL (clicked()), this, SLOT (hide()));
+	connect (close_button, &QToolButton::clicked, this, &RKFindBar::hide);
 	mlayout->addWidget (close_button);
 
 	QHBoxLayout* slayout = new QHBoxLayout ();
@@ -48,8 +48,8 @@ RKFindBar::RKFindBar (QWidget* parent, bool custom) : QWidget (parent) {
 	term_edit = new KHistoryComboBox (this);
 	term_edit->setMaximumWidth (fontMetrics ().width ("This is quite a long search term by any standard, indeed"));
 	term_edit->setMinimumWidth (fontMetrics ().width ("A short search term"));
-	connect (term_edit, SIGNAL (editTextChanged(QString)), this, SLOT (searchChanged()));
-	connect (term_edit, SIGNAL(returnPressed(QString)), this, SLOT (forward()));
+	connect (term_edit, &KHistoryComboBox::editTextChanged, this, &RKFindBar::searchChanged);
+	connect (term_edit, static_cast<void (KHistoryComboBox::*)(const QString&)>(&KHistoryComboBox::returnPressed), this, &RKFindBar::forward);
 	regular_palette = term_edit->palette ();
 	nomatch_palette = regular_palette;
 	nomatch_palette.setColor (QPalette::Text, QColor (255, 0, 0));
@@ -59,13 +59,13 @@ RKFindBar::RKFindBar (QWidget* parent, bool custom) : QWidget (parent) {
 	backward_button->setArrowType (Qt::UpArrow);
 	backward_button->setContentsMargins (0, 0, 0, 0);
 	RKCommonFunctions::setTips (i18n ("Search backwards (previous occurrence of search term)"), backward_button);
-	connect (backward_button, SIGNAL (clicked()), this, SLOT(backward()));
+	connect (backward_button, &QToolButton::clicked, this, &RKFindBar::backward);
 	slayout->addWidget (backward_button);
 	QToolButton* forward_button = new QToolButton (this);
 	forward_button->setArrowType (Qt::DownArrow);
 	forward_button->setContentsMargins (0, 0, 0, 0);
 	RKCommonFunctions::setTips (i18n ("Search forward (next occurrence of search term)"), forward_button);
-	connect (forward_button, SIGNAL (clicked()), this, SLOT(forward()));
+	connect (forward_button, &QToolButton::clicked, this, &RKFindBar::forward);
 	slayout->addWidget (forward_button);
 
 	mlayout->addSpacing (15);
@@ -103,7 +103,7 @@ QCheckBox* RKFindBar::getOption (const RKFindBar::FindOptions option) {
 		} else {
 			RK_ASSERT (false);
 		}
-		connect (action, SIGNAL(stateChanged(int)), this, SLOT(searchChanged()));
+		connect (action, &QCheckBox::stateChanged, this, &RKFindBar::searchChanged);
 		default_actions.insert (option, action);
 	}
 
diff --git a/rkward/misc/rkobjectlistview.cpp b/rkward/misc/rkobjectlistview.cpp
index 42456c0..b23fa65 100644
--- a/rkward/misc/rkobjectlistview.cpp
+++ b/rkward/misc/rkobjectlistview.cpp
@@ -88,7 +88,7 @@ RKObjectListView::RKObjectListView (bool toolwindow, QWidget *parent) : QTreeVie
 	menu = new QMenu (this);
 	settings->addSettingsToMenu (menu, 0);
 
-	connect (this, SIGNAL(clicked(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
+	connect (this, &RKObjectListView::clicked, this, &RKObjectListView::itemClicked);
 }
 
 RKObjectListView::~RKObjectListView () {
@@ -188,7 +188,7 @@ void RKObjectListView::initialize () {
 	connect (RObjectList::getObjectList (), SIGNAL (updateComplete()), this, SLOT (updateComplete()));
 	connect (RObjectList::getObjectList (), SIGNAL (updateStarted()), this, SLOT (updateStarted()));
 	connect (selectionModel (), SIGNAL (selectionChanged(QItemSelection,QItemSelection)), this, SLOT (selectionChanged(QItemSelection,QItemSelection)));
-	connect (settings, SIGNAL (settingsChanged()), this, SLOT (settingsChanged()));
+	connect (settings, &RKObjectListViewSettings::settingsChanged, this, &RKObjectListView::settingsChanged);
 
 	updateComplete ();
 }
@@ -227,7 +227,7 @@ RKObjectListViewSettings::RKObjectListViewSettings (bool tool_window, QObject* p
 
 	update_timer = new QTimer (this);
 	update_timer->setSingleShot (true);
-	connect (update_timer, SIGNAL(timeout()), this, SLOT(updateSelfNow()));
+	connect (update_timer, &QTimer::timeout, this, &RKObjectListViewSettings::updateSelfNow);
 
 	filter_widget = 0;
 	in_reset_filters = false;
@@ -269,7 +269,7 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 	filter_widget->setFocusProxy (sline);
 	sline->setModelToFilter (this);
 	RKCommonFunctions::setTips (sline->regexpTip (), sline);
-	connect (sline, SIGNAL (searchChanged(QRegExp)), this, SLOT (filterSettingsChanged()));
+	connect (sline, &RKDynamicSearchLine::searchChanged, this, &RKObjectListViewSettings::filterSettingsChanged);
 	hlayout->addWidget (sline);
 	QPushButton* expander = new QPushButton (filter_widget);
 	expander->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionConfigureGeneric));
@@ -278,7 +278,7 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 
 	filter_widget_expansion = new QWidget (filter_widget);
 	layout->addWidget (filter_widget_expansion);
-	connect (expander, SIGNAL (toggled(bool)), filter_widget_expansion, SLOT (setShown(bool)));
+	connect (expander, &QPushButton::toggled, filter_widget_expansion, &QWidget::setVisible);
 	filter_widget_expansion->hide ();
 	QVBoxLayout *elayout = new QVBoxLayout (filter_widget_expansion);
 	elayout->setContentsMargins (0, 0, 0, 0);
@@ -299,9 +299,9 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 	filter_on_name_box->setChecked (filter_on_name);
 	filter_on_label_box->setChecked (filter_on_label);
 	filter_on_class_box->setChecked (filter_on_class);
-	connect (filter_on_name_box, SIGNAL(clicked(bool)), this, SLOT (filterSettingsChanged()));
-	connect (filter_on_label_box, SIGNAL(clicked(bool)), this, SLOT (filterSettingsChanged()));
-	connect (filter_on_class_box, SIGNAL(clicked(bool)), this, SLOT (filterSettingsChanged()));
+	connect (filter_on_name_box, &QCheckBox::clicked, this, &RKObjectListViewSettings::filterSettingsChanged);
+	connect (filter_on_label_box, &QCheckBox::clicked, this, &RKObjectListViewSettings::filterSettingsChanged);
+	connect (filter_on_class_box, &QCheckBox::clicked, this, &RKObjectListViewSettings::filterSettingsChanged);
 
 	depth_box = new QComboBox ();
 	depth_box->addItem (i18n ("Top level objects, only"));
@@ -312,7 +312,7 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 	boxvlayout->addWidget (depth_box);
 
 	depth_box->setCurrentIndex (1);
-	connect (depth_box, SIGNAL (currentIndexChanged(QString)), this, SLOT (filterSettingsChanged()));
+	connect (depth_box, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &RKObjectListViewSettings::filterSettingsChanged);
 
 	type_box = new QComboBox ();
 	type_box->addItem (i18n ("Show all objects"));
@@ -324,7 +324,7 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 	if (hide_functions) type_box->setCurrentIndex (2);
 	else if (hide_non_functions) type_box->setCurrentIndex (1);
 	else type_box->setCurrentIndex (0);
-	connect (type_box, SIGNAL (currentIndexChanged(QString)), this, SLOT (filterSettingsChanged()));
+	connect (type_box, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &RKObjectListViewSettings::filterSettingsChanged);
 
 	QHBoxLayout *bottom_layout = new QHBoxLayout (filter_widget);
 	layout->addLayout (bottom_layout);
@@ -337,7 +337,7 @@ QWidget* RKObjectListViewSettings::filterWidget (QWidget *parent) {
 	// KF5 TODO: In frameworks, there is a function KIconUtils::kIconAddOverlay(). We could use this to overlay "view-filter" and discard, then use that
 	// in a tool button (with tooltip), in order to save space.
 	reset_filters_button = new QPushButton (i18nc ("Width is limited, please opt for something that is not much longer than the English string. Simply 'Clear'/'Reset' should be good enough to understand the function.", "Reset filters"), filter_widget);
-	connect (reset_filters_button, SIGNAL (clicked(bool)), this, SLOT(resetFilters()));
+	connect (reset_filters_button, &QPushButton::clicked, this, &RKObjectListViewSettings::resetFilters);
 	RKCommonFunctions::setTips (i18n ("Discards the current object search filters"), reset_filters_button);
 	reset_filters_button->hide ();
 	bottom_layout->addWidget (reset_filters_button);
diff --git a/rkward/misc/rkprogresscontrol.cpp b/rkward/misc/rkprogresscontrol.cpp
index da99f9a..60e68f2 100644
--- a/rkward/misc/rkprogresscontrol.cpp
+++ b/rkward/misc/rkprogresscontrol.cpp
@@ -161,7 +161,7 @@ void RKProgressControl::createDialog () {
 	RK_TRACE (MISC);
 
 	dialog = new RKProgressControlDialog (text, caption, mode, modal);
-	connect (dialog, SIGNAL (destroyed()), this, SLOT (dialogDestroyed()));
+	connect (dialog, &RKProgressControlDialog::destroyed, this, &RKProgressControl::dialogDestroyed);
 	if (is_done) done ();
 	for (int i = 0; i < output_log.count (); ++i) {
 		dialog->addOutput (&(output_log[i]));
@@ -243,7 +243,7 @@ RKProgressControlDialog::RKProgressControlDialog (const QString &text, const QSt
 
 	setDetailsWidget (output_box);
 	// it's important to use a queued connection, here. Otherwise, if the details widget gets shown due to error output, scrollDown() would only scroll to the position directly *above* the new output.
-	connect (this, SIGNAL(aboutToShowDetails()), this, SLOT(scrollDown()), Qt::QueuedConnection);
+	connect (this, &RKProgressControlDialog::aboutToShowDetails, this, &RKProgressControlDialog::scrollDown, Qt::QueuedConnection);
 
 	KDialog::ButtonCodes button_codes = KDialog::Cancel;
 	if (mode_flags & RKProgressControl::OutputSwitchable) button_codes |= KDialog::Details;
diff --git a/rkward/misc/rksaveobjectchooser.cpp b/rkward/misc/rksaveobjectchooser.cpp
index b61e612..d206611 100644
--- a/rkward/misc/rksaveobjectchooser.cpp
+++ b/rkward/misc/rksaveobjectchooser.cpp
@@ -51,17 +51,17 @@ RKSaveObjectChooser::RKSaveObjectChooser (QWidget *parent, const QString &initia
 	hlayout->addWidget (root_label);
 	hlayout->addStretch ();
 	root_button = new QPushButton (i18n ("Change"), this);
-	connect (root_button, SIGNAL (clicked()), this, SLOT (selectRootObject()));
+	connect (root_button, &QPushButton::clicked, this, &RKSaveObjectChooser::selectRootObject);
 	hlayout->addWidget (root_button);
 	layout->addLayout (hlayout);
 
 	name_edit = new QLineEdit (this);
 	name_edit->setText (initial);
-	connect (name_edit, SIGNAL (textChanged(QString)), this, SLOT (updateState()));
+	connect (name_edit, &QLineEdit::textChanged, this, &RKSaveObjectChooser::updateState);
 	layout->addWidget (name_edit);
 
 	overwrite_confirm = new QCheckBox (this);
-	connect (overwrite_confirm, SIGNAL (stateChanged(int)), this, SLOT (updateState()));
+	connect (overwrite_confirm, &QCheckBox::stateChanged, this, &RKSaveObjectChooser::updateState);
 	layout->addWidget (overwrite_confirm);
 
 	// initialize
@@ -109,7 +109,7 @@ void RKSaveObjectChooser::selectRootObject () {
 	list_view->setSelectionMode (QAbstractItemView::SingleSelection);
 	list_view->initialize ();
 	list_view->setObjectCurrent (root_object);
-	connect (list_view, SIGNAL (doubleClicked(QModelIndex)), dialog, SLOT (accept()));
+	connect (list_view, &RKObjectListView::doubleClicked, dialog, &KDialog::accept);
 
 	dialog->exec ();
 
diff --git a/rkward/misc/rkspecialactions.cpp b/rkward/misc/rkspecialactions.cpp
index 728ebad..8745a80 100644
--- a/rkward/misc/rkspecialactions.cpp
+++ b/rkward/misc/rkspecialactions.cpp
@@ -25,7 +25,7 @@ RKPasteSpecialAction::RKPasteSpecialAction (QObject* parent) : KPasteTextAction
 	RK_TRACE (MISC);
 
 	setText (i18n ("Paste special..."));
-	connect (this, SIGNAL (triggered(bool)), this, SLOT (doSpecialPaste()));
+	connect (this, &RKPasteSpecialAction::triggered, this, &RKPasteSpecialAction::doSpecialPaste);
 }
 
 RKPasteSpecialAction::~RKPasteSpecialAction () {
@@ -89,7 +89,7 @@ RKPasteSpecialDialog::RKPasteSpecialDialog (QWidget* parent) : KDialog (parent)
 	dimensionality_group->addButton (rbutton, DimMatrix);
 	rbutton->setChecked (true);
 	group_layout->addWidget (rbutton);
-	connect (dimensionality_group, SIGNAL (buttonClicked(int)), this, SLOT (updateState()));
+	connect (dimensionality_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKPasteSpecialDialog::updateState);
 
 	const QMimeData* clipdata = QApplication::clipboard ()->mimeData ();
 
@@ -118,7 +118,7 @@ RKPasteSpecialDialog::RKPasteSpecialDialog (QWidget* parent) : KDialog (parent)
 	separator_freefield = new QLineEdit (";", box);
 	h_layout->addWidget (separator_freefield);
 	group_layout->addLayout (h_layout);
-	connect (separator_group, SIGNAL (buttonClicked(int)), this, SLOT (updateState()));
+	connect (separator_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKPasteSpecialDialog::updateState);
 
 	row = new KHBox (page);
 
@@ -136,7 +136,7 @@ RKPasteSpecialDialog::RKPasteSpecialDialog (QWidget* parent) : KDialog (parent)
 	rbutton = new QRadioButton (i18n ("Quote all values"), box);
 	quoting_group->addButton (rbutton, QuoteAll);
 	group_layout->addWidget (rbutton);
-	connect (quoting_group, SIGNAL (buttonClicked(int)), this, SLOT (updateState()));
+	connect (quoting_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKPasteSpecialDialog::updateState);
 
 	// further controls
 	box = new QGroupBox (i18n ("Transformations"), row);
diff --git a/rkward/misc/rkspinbox.cpp b/rkward/misc/rkspinbox.cpp
index 32deb93..f32e4e7 100644
--- a/rkward/misc/rkspinbox.cpp
+++ b/rkward/misc/rkspinbox.cpp
@@ -37,7 +37,7 @@ RKSpinBox::RKSpinBox (QWidget *parent) : QSpinBox (parent) {
 	int_min = INT_MIN;
 	int_max = INT_MAX;
 
-	connect (this, SIGNAL (valueChanged(int)), this, SLOT (updateValue(int)));
+	connect (this, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSpinBox::updateValue);
 }
 
 RKSpinBox::~RKSpinBox () {
diff --git a/rkward/misc/rktableview.cpp b/rkward/misc/rktableview.cpp
index a5ebeba..968e758 100644
--- a/rkward/misc/rktableview.cpp
+++ b/rkward/misc/rktableview.cpp
@@ -171,6 +171,7 @@ QWidget* RKItemDelegate::createEditor (QWidget* parent, const QStyleOptionViewIt
 	}
 
 	ed->setFont (option.font);
+	// NOTE: Can't use new SIGNAL/SLOT syntax, here, as the editors are of different types (TODO: define a common base class)
 	connect (ed, SIGNAL (done(QWidget*,RKItemDelegate::EditorDoneReason)), this, SLOT (editorDone(QWidget*,RKItemDelegate::EditorDoneReason)));
 	return ed;
 }
diff --git a/rkward/misc/rkxmlguisyncer.cpp b/rkward/misc/rkxmlguisyncer.cpp
index ea1bf75..fa852b4 100644
--- a/rkward/misc/rkxmlguisyncer.cpp
+++ b/rkward/misc/rkxmlguisyncer.cpp
@@ -55,7 +55,7 @@ void RKXMLGUISyncer::watchXMLGUIClientUIrc (KXMLGUIClient *client, bool recursiv
 			}
 
 			d->client_map.insertMulti (local_xml_file, ac);
-			d->connect (ac, SIGNAL (destroyed(QObject*)), d, SLOT (actionCollectionDestroyed(QObject*)));
+			d->connect (ac, &KActionCollection::destroyed, d, &RKXMLGUISyncerPrivate::actionCollectionDestroyed);
 		} // we simply ignore attempts to watch the same client twice
 	}
 
diff --git a/rkward/plugin/rkabstractoptionselector.cpp b/rkward/plugin/rkabstractoptionselector.cpp
index 6a242a3..d117d96 100644
--- a/rkward/plugin/rkabstractoptionselector.cpp
+++ b/rkward/plugin/rkabstractoptionselector.cpp
@@ -27,9 +27,9 @@ RKAbstractOptionSelector::RKAbstractOptionSelector (RKComponent *parent_componen
 
 	// create and register properties
 	addChild ("string", string = new RKComponentPropertyBase (this, false));
-	connect (string, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyChanged(RKComponentPropertyBase*)));
+	connect (string, &RKComponentPropertyBase::valueChanged, this, &RKAbstractOptionSelector::propertyChanged);
 	addChild ("number", number = new RKComponentPropertyInt (this, true, -1));
-	connect (number, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyChanged(RKComponentPropertyBase*)));
+	connect (number, &RKComponentPropertyInt::valueChanged, this, &RKAbstractOptionSelector::propertyChanged);
 	number->setInternal (true);
 }
 
@@ -95,7 +95,7 @@ RKComponentBase* RKAbstractOptionSelector::lookupComponent (const QString &ident
 
 		if (!(opt->enabledness_prop)) {		// requested for the first time
 			opt->enabledness_prop = new RKComponentPropertyBool (this, false);
-			connect (opt->enabledness_prop, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (ItemPropertyChanged(RKComponentPropertyBase*)));
+			connect (opt->enabledness_prop, &RKComponentPropertyBool::valueChanged, this, &RKAbstractOptionSelector::ItemPropertyChanged);
 		}
 
 		return (opt->enabledness_prop);
diff --git a/rkward/plugin/rkcheckbox.cpp b/rkward/plugin/rkcheckbox.cpp
index 0e8280b..cd8acd5 100644
--- a/rkward/plugin/rkcheckbox.cpp
+++ b/rkward/plugin/rkcheckbox.cpp
@@ -32,7 +32,7 @@ RKCheckBox::RKCheckBox (const QDomElement &element, RKComponent *parent_componen
 
 	// create and add property
 	addChild ("state", state = new RKComponentPropertyBool (this, true, xml->getBoolAttribute (element, "checked", false, DL_INFO), xml->getStringAttribute (element, "value", "1", DL_INFO), xml->getStringAttribute (element, "value_unchecked", QString (), DL_INFO)));
-	connect (state, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (changedState(RKComponentPropertyBase*)));
+	connect (state, &RKComponentPropertyBool::valueChanged, this, &RKCheckBox::changedState);
 
 	// create checkbox
 	QVBoxLayout *vbox = new QVBoxLayout (this);
@@ -40,7 +40,7 @@ RKCheckBox::RKCheckBox (const QDomElement &element, RKComponent *parent_componen
 	checkbox = new QCheckBox (xml->i18nStringAttribute (element, "label", QString (), DL_WARNING), this);
 	vbox->addWidget (checkbox);
 	checkbox->setChecked (xml->getBoolAttribute (element, "checked", false, DL_INFO));
-	connect (checkbox, SIGNAL (stateChanged(int)), this, SLOT (changedState(int)));
+	connect (checkbox, &QCheckBox::stateChanged, this, &RKCheckBox::changedStateFromUi);
 
 	// initialize
 	updating = false;
@@ -62,7 +62,7 @@ void RKCheckBox::changedState (RKComponentPropertyBase *) {
 	changed ();
 }
 
-void RKCheckBox::changedState (int) {
+void RKCheckBox::changedStateFromUi (int) {
 	RK_TRACE (PLUGIN);
 
 	state->setBoolValue (checkbox->isChecked ());
diff --git a/rkward/plugin/rkcheckbox.h b/rkward/plugin/rkcheckbox.h
index c9f8d0a..fe1015f 100644
--- a/rkward/plugin/rkcheckbox.h
+++ b/rkward/plugin/rkcheckbox.h
@@ -43,7 +43,7 @@ public:
 	};
 	QStringList getUiLabelPair () const;
 public slots:
-	void changedState (int);
+	void changedStateFromUi (int);
 	void changedState (RKComponentPropertyBase *);
 private:
 	bool updating;		// prevent recursion
diff --git a/rkward/plugin/rkcomponent.cpp b/rkward/plugin/rkcomponent.cpp
index 4fb37c6..54945fb 100644
--- a/rkward/plugin/rkcomponent.cpp
+++ b/rkward/plugin/rkcomponent.cpp
@@ -279,15 +279,15 @@ void RKComponent::createDefaultProperties () {
 	addChild ("enabled", enabledness_property = new RKComponentPropertyBool (this, false));
 	enabledness_property->setBoolValue (true);
 	enabledness_property->setInternal (true);
-	connect (enabledness_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyValueChanged(RKComponentPropertyBase*)));
+	connect (enabledness_property, &RKComponentPropertyBool::valueChanged, this, &RKComponent::propertyValueChanged);
 	addChild ("visible", visibility_property = new RKComponentPropertyBool (this, false));
 	visibility_property->setBoolValue (true);
 	visibility_property->setInternal (true);
-	connect (visibility_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyValueChanged(RKComponentPropertyBase*)));
+	connect (visibility_property, &RKComponentPropertyBool::valueChanged, this, &RKComponent::propertyValueChanged);
 	addChild ("required", requiredness_property = new RKComponentPropertyBool (this, false));
 	requiredness_property->setBoolValue (true);
 	requiredness_property->setInternal (true);
-	connect (requiredness_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyValueChanged(RKComponentPropertyBase*)));
+	connect (requiredness_property, &RKComponentPropertyBool::valueChanged, this, &RKComponent::propertyValueChanged);
 }
 
 RKComponent::~RKComponent () {
diff --git a/rkward/plugin/rkcomponentproperties.cpp b/rkward/plugin/rkcomponentproperties.cpp
index d9ca053..386b6a7 100644
--- a/rkward/plugin/rkcomponentproperties.cpp
+++ b/rkward/plugin/rkcomponentproperties.cpp
@@ -1197,7 +1197,7 @@ RKComponentPropertyConvert::RKComponentPropertyConvert (RKComponent *parent) : R
 	require_true = false;
 	c_parent = parent;
 	// get notified of own changes
-	connect (this, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (selfChanged(RKComponentPropertyBase*)));
+	connect (this, &RKComponentPropertyConvert::valueChanged, this, &RKComponentPropertyConvert::selfChanged);
 }
 
 RKComponentPropertyConvert::~RKComponentPropertyConvert () {
@@ -1221,7 +1221,7 @@ void RKComponentPropertyConvert::setSources (const QStringList &source_ids) {
 		if (prop && prop->isProperty ()) {
 			s.property = static_cast<RKComponentPropertyBase *>(prop);
 			sources.append (s);
-			connect (s.property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (sourcePropertyChanged(RKComponentPropertyBase*)));
+			connect (s.property, &RKComponentPropertyBase::valueChanged, this, &RKComponentPropertyConvert::sourcePropertyChanged);
 		} else {
 			RK_DEBUG (PLUGIN, DL_WARNING, "Not found or not a property: %s", (*it).toLatin1 ().data ());
 		}
@@ -1356,7 +1356,7 @@ RKComponentPropertySwitch::RKComponentPropertySwitch (RKComponent* parent, const
 	condition_prop = 0;
 	c_parent = parent;
 
-	connect (this, SIGNAL(valueChanged(RKComponentPropertyBase*)), this, SLOT(selfChanged(RKComponentPropertyBase*)));
+	connect (this, &RKComponentPropertySwitch::valueChanged, this, &RKComponentPropertySwitch::selfChanged);
 }
 
 RKComponentPropertySwitch::~RKComponentPropertySwitch () {
@@ -1424,7 +1424,7 @@ void RKComponentPropertySwitch::setSources (const QString& _condition_prop, cons
 	if (!condition_prop) {
 		RK_DEBUG (PLUGIN, DL_ERROR, "Not a valid condition to connect <switch> property to: %s", qPrintable (_condition_prop));
 	} else {
-		connect (condition_prop, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (sourcePropertyChanged(RKComponentPropertyBase*)));
+		connect (condition_prop, &RKComponentPropertyBase::valueChanged, this, &RKComponentPropertySwitch::sourcePropertyChanged);
 	}
 
 	for (int i = 0; i < _value_props.size (); ++i) {
diff --git a/rkward/plugin/rkdropdown.cpp b/rkward/plugin/rkdropdown.cpp
index 78d5831..ea5074d 100644
--- a/rkward/plugin/rkdropdown.cpp
+++ b/rkward/plugin/rkdropdown.cpp
@@ -52,7 +52,7 @@ RKDropDown::RKDropDown (const QDomElement &element, RKComponent *parent_componen
 	addOptionsAndInit (element);
 
 	vbox->addWidget (box);
-	connect (box, SIGNAL (activated(int)), this, SLOT (comboItemActivated(int)));
+	connect (box, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKDropDown::comboItemActivated);
 }
 
 RKDropDown::~RKDropDown(){
diff --git a/rkward/plugin/rkformula.cpp b/rkward/plugin/rkformula.cpp
index 36f47bc..5f91f01 100644
--- a/rkward/plugin/rkformula.cpp
+++ b/rkward/plugin/rkformula.cpp
@@ -41,11 +41,11 @@ RKFormula::RKFormula (const QDomElement &element, RKComponent *parent_component,
 
 	// create and register properties
 	fixed_factors = new RKComponentPropertyRObjects (this, true);
-	connect (fixed_factors, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (factorsChanged(RKComponentPropertyBase*)));
+	connect (fixed_factors, &RKComponentPropertyRObjects::valueChanged, this, &RKFormula::factorsChanged);
 	addChild ("fixed_factors", fixed_factors);
 	fixed_factors->setInternal (true);
 	dependent = new RKComponentPropertyRObjects (this, true);
-	connect (dependent, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (factorsChanged(RKComponentPropertyBase*)));
+	connect (dependent, &RKComponentPropertyRObjects::valueChanged, this, &RKFormula::factorsChanged);
 	addChild ("dependent", dependent);
 	dependent->setInternal (true);
 	model = new RKComponentPropertyBase (this, true);
@@ -76,7 +76,7 @@ RKFormula::RKFormula (const QDomElement &element, RKComponent *parent_component,
 	type_selector->addButton (button, (int) MainEffects);
 	vbox->addWidget (button = new QRadioButton (i18n ("Custom Model:"), this));
 	type_selector->addButton (button, (int) Custom);
-	connect (type_selector, SIGNAL (buttonClicked(int)), this, SLOT (typeChange(int)));
+	connect (type_selector, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKFormula::typeChange);
 
 	custom_model_widget = new QWidget (this);
 	QHBoxLayout *model_hbox = new QHBoxLayout (custom_model_widget);
@@ -92,11 +92,11 @@ RKFormula::RKFormula (const QDomElement &element, RKComponent *parent_component,
 	model_hbox->addLayout (model_vbox);
 	add_button = new QPushButton (QString (), custom_model_widget);
 	add_button->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionAddRight));
-	connect (add_button, SIGNAL (clicked()), this, SLOT (addButtonClicked()));
+	connect (add_button, &QPushButton::clicked, this, &RKFormula::addButtonClicked);
 	model_vbox->addWidget (add_button);
 	remove_button = new QPushButton (QString (), custom_model_widget);
 	remove_button->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionRemoveLeft));
-	connect (remove_button, SIGNAL (clicked()), this, SLOT (removeButtonClicked()));
+	connect (remove_button, &QPushButton::clicked, this, &RKFormula::removeButtonClicked);
 	model_vbox->addWidget (remove_button);
 	level_box = new QSpinBox (custom_model_widget);
 	level_box->setRange (0, 0);
diff --git a/rkward/plugin/rkinput.cpp b/rkward/plugin/rkinput.cpp
index a6191d9..4865faf 100644
--- a/rkward/plugin/rkinput.cpp
+++ b/rkward/plugin/rkinput.cpp
@@ -40,7 +40,7 @@ RKInput::RKInput (const QDomElement &element, RKComponent *parent_component, QWi
 
 	// create and add property
 	addChild ("text", text = new RKComponentPropertyBase (this, false));
-	connect (text, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (textChanged(RKComponentPropertyBase*)));
+	connect (text, &RKComponentPropertyBase::valueChanged, this, &RKInput::textChanged);
 
 	setRequired (xml->getBoolAttribute (element, "required", false, DL_INFO));
 	connect (requirednessProperty (), SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (requirednessChanged(RKComponentPropertyBase*)));
@@ -63,11 +63,11 @@ RKInput::RKInput (const QDomElement &element, RKComponent *parent_component, QWi
 		textedit->setMinimumSize (250, lheight * 4 + margin);
 
 		vbox->addWidget (textedit);
-		connect (textedit, SIGNAL (textChanged()), SLOT (textChanged()));
+		connect (textedit, &QTextEdit::textChanged, this, &RKInput::textChangedFromUi);
 	} else {
 		lineedit = new QLineEdit (this);
 		vbox->addWidget (lineedit);
-		connect (lineedit, SIGNAL (textChanged(QString)), SLOT (textChanged(QString)));
+		connect (lineedit, &QLineEdit::textChanged, this, &RKInput::textChangedFromUi);
 	}
 
 	vbox->addStretch (1);		// to keep the label attached
@@ -115,7 +115,7 @@ void RKInput::requirednessChanged (RKComponentPropertyBase *) {
 	updateColor ();
 }
 
-void RKInput::textChanged (RKComponentPropertyBase *) {
+void RKInput::textChanged () {
 	RK_TRACE (PLUGIN);
 
 	if (updating) return;
@@ -131,25 +131,22 @@ void RKInput::textChanged (RKComponentPropertyBase *) {
 	changed ();
 }
 
-void RKInput::textChanged (const QString &new_text) {
+void RKInput::textChangedFromUi () {
 	RK_TRACE (PLUGIN);
 
 	updating = true;
 
-	text->setValue (new_text);
+	if (lineedit) text->setValue (lineedit->text ());
+	else {
+		RK_ASSERT (textedit);
+		text->setValue (textedit->toPlainText ());
+	}
 	updateColor ();
 
 	updating = false;
 	changed ();
 }
 
-void RKInput::textChanged () {
-	RK_TRACE (PLUGIN);
-
-	RK_ASSERT (textedit);
-	textChanged (textedit->toPlainText ());
-}
-
 bool RKInput::isValid () {
 	RK_TRACE (PLUGIN);
 
diff --git a/rkward/plugin/rkinput.h b/rkward/plugin/rkinput.h
index db2948e..43c8203 100644
--- a/rkward/plugin/rkinput.h
+++ b/rkward/plugin/rkinput.h
@@ -43,8 +43,7 @@ public:
 	bool isValid ();
 public slots:
 	void textChanged ();
-	void textChanged (const QString &new_text);
-	void textChanged (RKComponentPropertyBase *);
+	void textChangedFromUi ();
 	void requirednessChanged (RKComponentPropertyBase *);
 protected:
 /** Grey out input when disabled */
diff --git a/rkward/plugin/rkmatrixinput.cpp b/rkward/plugin/rkmatrixinput.cpp
index 5c5c353..e182868 100644
--- a/rkward/plugin/rkmatrixinput.cpp
+++ b/rkward/plugin/rkmatrixinput.cpp
@@ -80,9 +80,9 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_co
 	column_count->setInternal (true);
 	addChild ("columns", column_count);
 	addChild ("tsv", tsv_data);
-	connect (row_count, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (dimensionPropertyChanged(RKComponentPropertyBase*)));
-	connect (column_count, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (dimensionPropertyChanged(RKComponentPropertyBase*)));
-	connect (tsv_data, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (tsvPropertyChanged()));
+	connect (row_count, &RKComponentPropertyInt::valueChanged, this, &RKMatrixInput::dimensionPropertyChanged);
+	connect (column_count, &RKComponentPropertyInt::valueChanged, this, &RKMatrixInput::dimensionPropertyChanged);
+	connect (tsv_data, &RKComponentPropertyBase::valueChanged, this, &RKMatrixInput::tsvPropertyChanged);
 	updating_tsv_data = false;
 
 	model = new RKMatrixInputModel (this);
@@ -114,7 +114,7 @@ RKMatrixInput::RKMatrixInput (const QDomElement& element, RKComponent* parent_co
 	display->setContextMenuPolicy (Qt::ActionsContextMenu);
 
 	display->setRKItemDelegate (new RKItemDelegate (display, model, true));
-	connect (display, SIGNAL (blankSelectionRequest()), this, SLOT (clearSelectedCells()));
+	connect (display, &RKTableView::blankSelectionRequest, this, &RKMatrixInput::clearSelectedCells);
 }
 
 RKMatrixInput::~RKMatrixInput () {
diff --git a/rkward/plugin/rkoptionset.cpp b/rkward/plugin/rkoptionset.cpp
index 2273f76..67010f1 100644
--- a/rkward/plugin/rkoptionset.cpp
+++ b/rkward/plugin/rkoptionset.cpp
@@ -58,20 +58,20 @@ RKOptionSet::RKOptionSet (const QDomElement &element, RKComponent *parent_compon
 	accordion = new RKAccordionTable (this);
 	switcher->addWidget (accordion);
 
-	connect (accordion, SIGNAL (activated(int)), this, SLOT(currentRowChanged(int)));
-	connect (accordion, SIGNAL (addRow(int)), this, SLOT(addRow(int)));
-	connect (accordion, SIGNAL (removeRow(int)), this, SLOT(removeRow(int)));
+	connect (accordion, &RKAccordionTable::activated, this, &RKOptionSet::currentRowChanged);
+	connect (accordion, &RKAccordionTable::addRow, this, &RKOptionSet::addRow);
+	connect (accordion, &RKAccordionTable::removeRow, this, &RKOptionSet::removeRow);
 
 	updating_notice = new QLabel (i18n ("Updating status, please wait"), this);
 	switcher->addWidget (updating_notice);
 	update_timer.setInterval (0);
 	update_timer.setSingleShot (true);
-	connect (&update_timer, SIGNAL (timeout()), this, SLOT (slotUpdateUnfinishedRows()));
+	connect (&update_timer, &QTimer::timeout, this, &RKOptionSet::slotUpdateUnfinishedRows);
 
 	// create some meta properties
 	serialization_of_set = new RKComponentPropertyBase (this, false);
 	addChild ("serialized", serialization_of_set);
-	connect (serialization_of_set, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (serializationPropertyChanged(RKComponentPropertyBase*)));
+	connect (serialization_of_set, &RKComponentPropertyBase::valueChanged, this, &RKOptionSet::serializationPropertyChanged);
 
 	row_count = new RKComponentPropertyInt (this, false, 0);
 	row_count->setInternal (true);
@@ -80,7 +80,7 @@ RKOptionSet::RKOptionSet (const QDomElement &element, RKComponent *parent_compon
 	current_row = new RKComponentPropertyInt (this, false, active_row);
 	current_row->setInternal (true);
 	addChild ("current_row", current_row);		// NOTE: read-write
-	connect (current_row, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (currentRowPropertyChanged(RKComponentPropertyBase*)));
+	connect (current_row, &RKComponentPropertyInt::valueChanged, this, &RKOptionSet::currentRowPropertyChanged);
 
 	// first build the contents, as we will need to refer to the elements inside, later
 	model = new RKOptionSetDisplayModel (this);
@@ -118,7 +118,7 @@ RKOptionSet::RKOptionSet (const QDomElement &element, RKComponent *parent_compon
 		RKComponentPropertyStringList *column_property = new RKComponentPropertyStringList (this, false);
 		column_property->setInternal (external);	// Yes, looks strange, indeed. External properties should simply not be serialized / restored...
 		addChild (id, column_property);
-		connect (column_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (columnPropertyChanged(RKComponentPropertyBase*)));
+		connect (column_property, &RKComponentPropertyStringList::valueChanged, this, &RKOptionSet::columnPropertyChanged);
 
 		if (!label.isEmpty ()) {
 			col_inf.display_index = visible_column_labels.size ();
@@ -165,7 +165,7 @@ RKOptionSet::RKOptionSet (const QDomElement &element, RKComponent *parent_compon
 					}
 				}
 				columns_to_update.insertMulti (gov_prop, it.key ());
-				connect (gov_prop, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (governingPropertyChanged(RKComponentPropertyBase*)));
+				connect (gov_prop, &RKComponentPropertyBase::valueChanged, this, &RKOptionSet::governingPropertyChanged);
 			} else {
 				RK_DEBUG (PLUGIN, DL_ERROR, "did not find governing property %s for column %s of optionset", qPrintable (ci.governor), qPrintable (ci.column_name));
 			}
@@ -372,12 +372,6 @@ void RKOptionSet::updateUnfinishedRows () {
 	RK_ASSERT (false);	// This would mean, we did not find any unfinished row, even though we tested for n_unfinished_rows, above.
 }
 
-// TODO: removeMe
-void RKOptionSet::addRow () {
-	RK_TRACE (PLUGIN);
-	addRow (active_row >= 0 ? active_row + 1 : rowCount ());	// append feels more natural than insert, here
-}
-
 void RKOptionSet::addRow (int row) {
 	RK_TRACE (PLUGIN);
 
@@ -417,12 +411,6 @@ void RKOptionSet::addRow (int row) {
 	changed ();
 }
 
-// TODO: removeMe
-void RKOptionSet::removeRow () {
-	RK_TRACE (PLUGIN);
-	removeRow (active_row);
-}
-
 void RKOptionSet::removeRow (int row) {
 	RK_TRACE (PLUGIN);
 
@@ -789,7 +777,7 @@ bool RKOptionSet::isValid () {
 RKOptionSetDisplayModel::RKOptionSetDisplayModel (RKOptionSet* parent) : QAbstractTableModel (parent) {
 	RK_TRACE (PLUGIN);
 	set = parent;
-	connect (&reset_timer, SIGNAL (timeout()), this, SLOT (doResetNow()));
+	connect (&reset_timer, &QTimer::timeout, this, &RKOptionSetDisplayModel::doResetNow);
 	reset_timer.setInterval (0);
 	reset_timer.setSingleShot (true);
 	setSupportedDragActions (Qt::MoveAction);
diff --git a/rkward/plugin/rkoptionset.h b/rkward/plugin/rkoptionset.h
index 019827c..8793be7 100644
--- a/rkward/plugin/rkoptionset.h
+++ b/rkward/plugin/rkoptionset.h
@@ -24,6 +24,7 @@
 #include <QDomElement>
 #include <QTimer>
 #include <QSet>
+#include <QAbstractTableModel>
 
 class RKAccordionTable;
 class QTreeView;
@@ -52,9 +53,7 @@ private slots:
 	void currentRowPropertyChanged (RKComponentPropertyBase *property);
 	void serializationPropertyChanged (RKComponentPropertyBase *property);
 	void addRow (int where);
-	void addRow ();
 	void removeRow (int which);
-	void removeRow ();
 	void currentRowChanged (int row);
 	void fetchDefaults ();
 	void slotUpdateUnfinishedRows ();
@@ -134,7 +133,7 @@ friend class RKOptionSetDisplayModel;
 	friend QString getDefaultValue (const ColumnInfo& ci, int row);
 };
 
-class RKOptionSetDisplayModel : QAbstractTableModel {
+class RKOptionSetDisplayModel : public QAbstractTableModel {
 	Q_OBJECT
 private:
 friend class RKOptionSet;
diff --git a/rkward/plugin/rkpluginbrowser.cpp b/rkward/plugin/rkpluginbrowser.cpp
index e4824cd..cc7e190 100644
--- a/rkward/plugin/rkpluginbrowser.cpp
+++ b/rkward/plugin/rkpluginbrowser.cpp
@@ -34,10 +34,10 @@ RKPluginBrowser::RKPluginBrowser (const QDomElement &element, RKComponent *paren
 
 	// create and add property
 	addChild ("selection", selection = new RKComponentPropertyBase (this, true));
-	connect (selection, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (textChanged(RKComponentPropertyBase*)));
+	connect (selection, &RKComponentPropertyBase::valueChanged, this, &RKPluginBrowser::textChanged);
 
 	setRequired (xml->getBoolAttribute (element, "required", true, DL_INFO));
-	connect (requirednessProperty (), SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (requirednessChanged(RKComponentPropertyBase*)));
+	connect (requirednessProperty (), &RKComponentPropertyBase::valueChanged, this, &RKPluginBrowser::updateColor);
 
 	QVBoxLayout *vbox = new QVBoxLayout (this);
 	vbox->setContentsMargins (0, 0, 0, 0);
@@ -57,13 +57,13 @@ RKPluginBrowser::RKPluginBrowser (const QDomElement &element, RKComponent *paren
 		filter.append ("\n*|All files");
 		selector->setFilter (filter);
 	}
-	connect (selector, SIGNAL (locationChanged()), SLOT (textChanged()));
+	connect (selector, &GetFileNameWidget::locationChanged, this, &RKPluginBrowser::textChangedFromUi);
 
 	vbox->addWidget (selector);
 
 	// initialize
 	updating = false;
-	textChanged ();
+	textChangedFromUi ();
 }
 
 RKPluginBrowser::~RKPluginBrowser () {
@@ -83,7 +83,7 @@ void RKPluginBrowser::textChanged (RKComponentPropertyBase *) {
 	changed ();
 }
 
-void RKPluginBrowser::textChanged () {
+void RKPluginBrowser::textChangedFromUi () {
 	RK_TRACE (PLUGIN);
 
 	selection->setValue (selector->getLocation ());
@@ -93,12 +93,6 @@ bool RKPluginBrowser::isValid () {
 	return (!(fetchStringValue (selection).isEmpty ()));
 }
 
-void RKPluginBrowser::requirednessChanged (RKComponentPropertyBase *) {
-	RK_TRACE (PLUGIN);
-
-	updateColor ();
-}
-
 void RKPluginBrowser::updateColor () {
 	RK_TRACE (PLUGIN);
 
diff --git a/rkward/plugin/rkpluginbrowser.h b/rkward/plugin/rkpluginbrowser.h
index 49c414f..f62611a 100644
--- a/rkward/plugin/rkpluginbrowser.h
+++ b/rkward/plugin/rkpluginbrowser.h
@@ -45,9 +45,8 @@ public:
 	int type () { return ComponentBrowser; };
 	bool isValid ();
 public slots:
-	void textChanged ();
+	void textChangedFromUi ();
 	void textChanged (RKComponentPropertyBase *);
-	void requirednessChanged (RKComponentPropertyBase *);
 private:
 	void updateColor ();
 	GetFileNameWidget *selector;
diff --git a/rkward/plugin/rkpluginframe.cpp b/rkward/plugin/rkpluginframe.cpp
index 52eace1..39cf70e 100644
--- a/rkward/plugin/rkpluginframe.cpp
+++ b/rkward/plugin/rkpluginframe.cpp
@@ -45,7 +45,7 @@ RKPluginFrame::RKPluginFrame (const QDomElement &element, RKComponent *parent_co
 		frame->setCheckable (true);
 		frame->setChecked (xml->getBoolAttribute (element, "checked", true, DL_INFO));
 		initCheckedProperty ();
-		connect (frame, SIGNAL (toggled(bool)), this, SLOT (checkedChanged(bool)));
+		connect (frame, &QGroupBox::toggled, this, &RKPluginFrame::checkedChanged);
 	}
 }
 
@@ -62,7 +62,7 @@ void RKPluginFrame::initCheckedProperty () {
 	}
 
 	addChild ("checked", checked = new RKComponentPropertyBool (this, false, frame->isChecked (), "1", "0"));
-	connect (checked, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (propertyChanged(RKComponentPropertyBase*)));
+	connect (checked, &RKComponentPropertyBool::valueChanged, this, &RKPluginFrame::propertyChanged);
 }
 
 RKComponentBase* RKPluginFrame::lookupComponent (const QString& identifier, QString* remainder) {
diff --git a/rkward/plugin/rkpluginsaveobject.cpp b/rkward/plugin/rkpluginsaveobject.cpp
index c550ab2..dd89b28 100644
--- a/rkward/plugin/rkpluginsaveobject.cpp
+++ b/rkward/plugin/rkpluginsaveobject.cpp
@@ -41,24 +41,24 @@ RKPluginSaveObject::RKPluginSaveObject (const QDomElement &element, RKComponent
 
 	// create and add properties
 	addChild ("selection", selection = new RKComponentPropertyBase (this, required));
-	connect (selection, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (externalChange()));
+	connect (selection, &RKComponentPropertyBase::valueChanged, this, &RKPluginSaveObject::externalChange);
 	selection->setInternal (true);	// the two separate properties "parent" and "objectname" are used for (re-)storing.
 	addChild ("parent", parent = new RKComponentPropertyRObjects (this, false));
-	connect (parent, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (externalChange()));
+	connect (parent, &RKComponentPropertyRObjects::valueChanged, this, &RKPluginSaveObject::externalChange);
 	addChild ("objectname", objectname = new RKComponentPropertyBase (this, false));
-	connect (objectname, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (externalChange()));
+	connect (objectname, &RKComponentPropertyBase::valueChanged, this, &RKPluginSaveObject::externalChange);
 	addChild ("active", active = new RKComponentPropertyBool (this, false, false, "1", "0"));
-	connect (active, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (externalChange()));
+	connect (active, &RKComponentPropertyBool::valueChanged, this, &RKPluginSaveObject::externalChange);
 	if (!checkable) active->setInternal (true);
 
 	// create GUI
 	groupbox = new QGroupBox (label, this);
 	groupbox->setCheckable (checkable);
 	if (checkable) groupbox->setChecked (checked);
-	connect (groupbox, SIGNAL (toggled(bool)), this, SLOT (internalChange()));
+	connect (groupbox, &QGroupBox::toggled, this, &RKPluginSaveObject::internalChange);
 
 	selector = new RKSaveObjectChooser (groupbox, initial);
-	connect (selector, SIGNAL (changed(bool)), SLOT (internalChange()));
+	connect (selector, &RKSaveObjectChooser::changed, this, &RKPluginSaveObject::internalChange);
 
 	QVBoxLayout *vbox = new QVBoxLayout (this);
 	vbox->setContentsMargins (0, 0, 0, 0);
diff --git a/rkward/plugin/rkpluginspinbox.cpp b/rkward/plugin/rkpluginspinbox.cpp
index de79781..6be70ae 100644
--- a/rkward/plugin/rkpluginspinbox.cpp
+++ b/rkward/plugin/rkpluginspinbox.cpp
@@ -71,9 +71,9 @@ RKPluginSpinBox::RKPluginSpinBox (const QDomElement &element, RKComponent *paren
 	}
 
 	// connect
-	connect (spinbox, SIGNAL (valueChanged(int)), this, SLOT (valueChanged(int)));
-	connect (intvalue, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (valueChanged(RKComponentPropertyBase*)));
-	connect (realvalue, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (valueChanged(RKComponentPropertyBase*)));
+	connect (spinbox, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKPluginSpinBox::valueChangedFromUi);
+	connect (intvalue, &RKComponentPropertyInt::valueChanged, this, &RKPluginSpinBox::valueChanged);
+	connect (realvalue, &RKComponentPropertyDouble::valueChanged, this, &RKPluginSpinBox::valueChanged);
 	updating = false;
 
 	// finish layout
@@ -84,7 +84,7 @@ RKPluginSpinBox::RKPluginSpinBox (const QDomElement &element, RKComponent *paren
 	}
 
 	// initialize
-	valueChanged (1);
+	valueChangedFromUi ();
 }
 
 RKPluginSpinBox::~RKPluginSpinBox () {
@@ -114,7 +114,7 @@ void RKPluginSpinBox::valueChanged (RKComponentPropertyBase *property) {
 	updating = false;
 }
 
-void RKPluginSpinBox::valueChanged (int) {
+void RKPluginSpinBox::valueChangedFromUi () {
 	RK_TRACE (PLUGIN);
 
 	if (intmode) {
diff --git a/rkward/plugin/rkpluginspinbox.h b/rkward/plugin/rkpluginspinbox.h
index dc9a6db..2841c03 100644
--- a/rkward/plugin/rkpluginspinbox.h
+++ b/rkward/plugin/rkpluginspinbox.h
@@ -42,7 +42,7 @@ public:
 	RKComponentPropertyInt *intvalue;
 	RKComponentPropertyDouble *realvalue;
 public slots:
-	void valueChanged (int);
+	void valueChangedFromUi ();
 	void valueChanged (RKComponentPropertyBase *property);
 private:
 	RKSpinBox *spinbox;
diff --git a/rkward/plugin/rkpreviewbox.cpp b/rkward/plugin/rkpreviewbox.cpp
index e12e30c..f38c77f 100644
--- a/rkward/plugin/rkpreviewbox.cpp
+++ b/rkward/plugin/rkpreviewbox.cpp
@@ -47,7 +47,7 @@ RKPreviewBox::RKPreviewBox (const QDomElement &element, RKComponent *parent_comp
 	// create and add property
 	addChild ("state", state = new RKComponentPropertyBool (this, true, preview_active, "active", "inactive"));
 	state->setInternal (true);	// restoring this does not make sense.
-	connect (state, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (changedState(RKComponentPropertyBase*)));
+	connect (state, &RKComponentPropertyBool::valueChanged, this, &RKPreviewBox::changedState);
 
 	// create checkbox
 	QVBoxLayout *vbox = new QVBoxLayout (this);
@@ -55,7 +55,7 @@ RKPreviewBox::RKPreviewBox (const QDomElement &element, RKComponent *parent_comp
 	toggle_preview_box = new QCheckBox (xml->i18nStringAttribute (element, "label", i18n ("Preview"), DL_INFO), this);
 	vbox->addWidget (toggle_preview_box);
 	toggle_preview_box->setChecked (preview_active);
-	connect (toggle_preview_box, SIGNAL (stateChanged(int)), this, SLOT (changedState(int)));
+	connect (toggle_preview_box, &QCheckBox::stateChanged, this, &RKPreviewBox::changedStateFromUi);
 
 	// status lable
 	status_label = new QLabel (QString (), this);
@@ -66,7 +66,7 @@ RKPreviewBox::RKPreviewBox (const QDomElement &element, RKComponent *parent_comp
 	RKComponentBase *cp = parentComponent ()->lookupComponent ("code", &dummy);
 	if (cp && dummy.isNull () && (cp->type () == PropertyCode)) {
 		code_property = static_cast<RKComponentPropertyCode *> (cp);
-		connect (code_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (changedCode(RKComponentPropertyBase*)));
+		connect (code_property, &RKComponentPropertyCode::valueChanged, this, &RKPreviewBox::changedCode);
 	} else {
 		RK_DEBUG (PLUGIN, DL_WARNING, "Could not find code property in preview box (remainder: %s)", dummy.toLatin1().data ());
 		code_property = 0;
@@ -75,7 +75,7 @@ RKPreviewBox::RKPreviewBox (const QDomElement &element, RKComponent *parent_comp
 	// initialize
 	update_timer = new QTimer (this);
 	update_timer->setSingleShot (true);
-	connect (update_timer, SIGNAL (timeout()), this, SLOT (tryPreviewNow()));
+	connect (update_timer, &QTimer::timeout, this, &RKPreviewBox::tryPreviewNow);
 	updating = false;
 	changedState (0);
 }
@@ -104,7 +104,7 @@ void RKPreviewBox::changedCode (RKComponentPropertyBase *) {
 	tryPreview ();
 }
 
-void RKPreviewBox::changedState (int) {
+void RKPreviewBox::changedStateFromUi () {
 	RK_TRACE (PLUGIN);
 
 	state->setBoolValue (toggle_preview_box->isChecked ());
diff --git a/rkward/plugin/rkpreviewbox.h b/rkward/plugin/rkpreviewbox.h
index 9ab3d01..89ba0c1 100644
--- a/rkward/plugin/rkpreviewbox.h
+++ b/rkward/plugin/rkpreviewbox.h
@@ -43,7 +43,7 @@ public:
 	RKComponentPropertyBool *state;
 	QVariant value (const QString &modifier=QString ()) { return (state->value (modifier)); };
 public slots:
-	void changedState (int);
+	void changedStateFromUi ();
 	void changedState (RKComponentPropertyBase *);
 	void changedCode (RKComponentPropertyBase *);
 	void tryPreviewNow ();
diff --git a/rkward/plugin/rkradio.cpp b/rkward/plugin/rkradio.cpp
index 7aeab02..fa3927d 100644
--- a/rkward/plugin/rkradio.cpp
+++ b/rkward/plugin/rkradio.cpp
@@ -48,7 +48,7 @@ RKRadio::RKRadio (const QDomElement &element, RKComponent *parent_component, QWi
 	addOptionsAndInit (element);
 
 	vbox->addWidget (group_box);
-	connect (group, SIGNAL (buttonClicked(int)), this, SLOT (itemSelected(int)));
+	connect (group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKRadio::itemSelected);
 }
 
 RKRadio::~RKRadio(){
diff --git a/rkward/plugin/rkstandardcomponent.cpp b/rkward/plugin/rkstandardcomponent.cpp
index 9bceae6..b5dcc13 100644
--- a/rkward/plugin/rkstandardcomponent.cpp
+++ b/rkward/plugin/rkstandardcomponent.cpp
@@ -113,9 +113,9 @@ RKStandardComponent::RKStandardComponent (RKComponent *parent_component, QWidget
 		back->setPreviewTemplate (xml->getStringAttribute (element, "preview", QString (), DL_INFO));
 		backend = back;
 	}
-	connect (backend, SIGNAL (idle()), this, SLOT (backendIdle()));
-	connect (backend, SIGNAL (requestValue(QString,int)), this, SLOT (getValue(QString,int)));
-	connect (backend, SIGNAL (haveError()), this, SLOT (kill()));
+	connect (backend, &ScriptBackend::idle, this, &RKStandardComponent::backendIdle);
+	connect (backend, &ScriptBackend::requestValue, this, &RKStandardComponent::getValue);
+	connect (backend, &ScriptBackend::haveError, this, &RKStandardComponent::kill);
 	if (!backend->initialize (code, parent_component == 0)) return;
 
 	// check for existence of help file
@@ -192,7 +192,7 @@ RKComponentScriptingProxy* RKStandardComponent::scriptingProxy () {
 
 	if (!scripting) {
 		scripting = new RKComponentScriptingProxy (this);
-		connect (scripting, SIGNAL (haveError()), this, SLOT (kill()));
+		connect (scripting, &RKComponentScriptingProxy::haveError, this, &RKStandardComponent::kill);
 	}
 	return scripting;
 }
diff --git a/rkward/plugin/rkstandardcomponentgui.cpp b/rkward/plugin/rkstandardcomponentgui.cpp
index c14ad9c..fb6c749 100644
--- a/rkward/plugin/rkstandardcomponentgui.cpp
+++ b/rkward/plugin/rkstandardcomponentgui.cpp
@@ -50,7 +50,7 @@ RKStandardComponentGUI::RKStandardComponentGUI (RKStandardComponent *component,
 
 	RKStandardComponentGUI::component = component;
 	RKStandardComponentGUI::code_property = code_property;
-	connect (code_property, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (codeChanged(RKComponentPropertyBase*)));
+	connect (code_property, &RKComponentPropertyCode::valueChanged, this, &RKStandardComponentGUI::codeChanged);
 	connect (RKWardMainWindow::getMain(), SIGNAL (aboutToQuitRKWard()), this, SLOT (cancel()));
 
 	RKStandardComponentGUI::enslaved = enslaved;
@@ -58,7 +58,7 @@ RKStandardComponentGUI::RKStandardComponentGUI (RKStandardComponent *component,
 	// code update timer
 	code_update_timer = new QTimer (this);
 	code_update_timer->setSingleShot (true);
-	connect (code_update_timer, SIGNAL (timeout()), this, SLOT (updateCodeNow()));
+	connect (code_update_timer, &QTimer::timeout, this, &RKStandardComponentGUI::updateCodeNow);
 
 	if (!enslaved) {
 		KActionCollection *action_collection = new KActionCollection (this);
@@ -95,12 +95,12 @@ void RKStandardComponentGUI::createDialog (bool switchable) {
 	vbox->setContentsMargins (0, 0, 0, 0);
 	vbox->setSpacing (RKGlobals::spacingHint ());
 	ok_button = new QPushButton (i18n ("Submit"), upper_widget);
-	connect (ok_button, SIGNAL (clicked()), this, SLOT (ok()));
+	connect (ok_button, &QPushButton::clicked, this, &RKStandardComponentGUI::ok);
 	vbox->addWidget (ok_button);
 	if (enslaved) ok_button->hide ();
 
 	cancel_button = new QPushButton (i18n ("Close"), upper_widget);
-	connect (cancel_button, SIGNAL (clicked()), this, SLOT (cancel()));
+	connect (cancel_button, &QPushButton::clicked, this, &RKStandardComponentGUI::cancel);
 	vbox->addWidget (cancel_button);
 	auto_close_box = new QCheckBox (i18n ("Auto close"), upper_widget);
 	auto_close_box->setChecked (true);
@@ -110,19 +110,19 @@ void RKStandardComponentGUI::createDialog (bool switchable) {
 	
 	help_button = new QPushButton (i18n ("Help"), upper_widget);
 	help_button->setEnabled (component->haveHelp ());
-	connect (help_button, SIGNAL (clicked()), this, SLOT (help()));
+	connect (help_button, &QPushButton::clicked, this, &RKStandardComponentGUI::help);
 	vbox->addWidget (help_button);
 	
 	if (switchable && (!enslaved)) {
 		switch_button = new QPushButton (i18n ("Use Wizard"), upper_widget);
-		connect (switch_button, SIGNAL (clicked()), this, SLOT (switchInterface()));
+		connect (switch_button, &QPushButton::clicked, this, &RKStandardComponentGUI::switchInterface);
 		vbox->addWidget (switch_button);
 	}
 	vbox->addStretch (2);
 	
 	toggle_code_button = new QPushButton (i18n ("Code"), upper_widget);
 	toggle_code_button->setCheckable (true);
-	connect (toggle_code_button, SIGNAL (clicked()), this, SLOT (toggleCode()));
+	connect (toggle_code_button, &QPushButton::clicked, this, &RKStandardComponentGUI::toggleCode);
 	vbox->addWidget (toggle_code_button);
 	if (enslaved) toggle_code_button->hide ();
 	
@@ -317,10 +317,10 @@ void RKStandardComponentWizard::createWizard (bool switchable) {
 	main_grid->addWidget (prev_button, 2, 2, Qt::AlignRight);
 	next_button = new QPushButton (QString (), this);
 	main_grid->addWidget (next_button, 2, 3, Qt::AlignRight);
-	connect (next_button, SIGNAL (clicked()), this, SLOT (next()));
-	connect (prev_button, SIGNAL (clicked()), this, SLOT (prev()));
-	connect (cancel_button, SIGNAL (clicked()), this, SLOT (cancel()));
-	connect (help_button, SIGNAL (clicked()), this, SLOT (help()));
+	connect (next_button, &QPushButton::clicked, this, &RKStandardComponentWizard::next);
+	connect (prev_button, &QPushButton::clicked, this, &RKStandardComponentWizard::prev);
+	connect (cancel_button, &QPushButton::clicked, this, &RKStandardComponentWizard::cancel);
+	connect (help_button, &QPushButton::clicked, this, &RKStandardComponentWizard::help);
 
 	// dummy:
 	auto_close_box = new QCheckBox(this);
diff --git a/rkward/plugin/rktext.cpp b/rkward/plugin/rktext.cpp
index 0e1c206..4896ca3 100644
--- a/rkward/plugin/rktext.cpp
+++ b/rkward/plugin/rktext.cpp
@@ -61,7 +61,7 @@ RKText::RKText (const QDomElement &element, RKComponent *parent_component, QWidg
 	// create and add property
 	addChild ("text", text = new RKComponentPropertyBase (this, true));
 	text->setInternal (true);
-	connect (text, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (textChanged(RKComponentPropertyBase*)));
+	connect (text, &RKComponentPropertyBase::valueChanged, this, &RKText::textChanged);
 
 	// initialize
 	text->setValue (initial_text);
diff --git a/rkward/plugin/rkvalueselector.cpp b/rkward/plugin/rkvalueselector.cpp
index 198587a..987ec11 100644
--- a/rkward/plugin/rkvalueselector.cpp
+++ b/rkward/plugin/rkvalueselector.cpp
@@ -35,13 +35,13 @@ RKValueSelector::RKValueSelector (const QDomElement &element, RKComponent *paren
 	standalone = element.tagName () == "select";
 
 	addChild ("selected", selected = new RKComponentPropertyStringList (this, false));
-	connect (selected, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (selectionPropertyChanged()));
+	connect (selected, &RKComponentPropertyStringList::valueChanged, this, &RKValueSelector::selectionPropertyChanged);
 	selected->setInternal (!standalone);
 	addChild ("available", available = new RKComponentPropertyStringList (this, false));
-	connect (available, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (availablePropertyChanged()));
+	connect (available, &RKComponentPropertyStringList::valueChanged, this, &RKValueSelector::availablePropertyChanged);
 	available->setInternal (true);
 	addChild ("labels", labels = new RKComponentPropertyStringList (this, false));
-	connect (labels, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (labelsPropertyChanged()));
+	connect (labels, &RKComponentPropertyStringList::valueChanged, this, &RKValueSelector::labelsPropertyChanged);
 	labels->setInternal (true);
 
 	QVBoxLayout *vbox = new QVBoxLayout (this);
diff --git a/rkward/plugin/rkvarselector.cpp b/rkward/plugin/rkvarselector.cpp
index e1e18cc..9c0aad3 100644
--- a/rkward/plugin/rkvarselector.cpp
+++ b/rkward/plugin/rkvarselector.cpp
@@ -44,7 +44,7 @@ RKVarSelector::RKVarSelector (const QDomElement &element, RKComponent *parent_co
 	addChild ("selected", selected = new RKComponentPropertyRObjects (this, false));
 	selected->setInternal (true);
 	addChild ("root", root = new RKComponentPropertyRObjects (this, false));
-	connect (root, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (rootChanged()));
+	connect (root, &RKComponentPropertyRObjects::valueChanged, this, &RKVarSelector::rootChanged);
 	root->setInternal (true);
 
 	QVBoxLayout *vbox = new QVBoxLayout (this);
@@ -65,7 +65,7 @@ RKVarSelector::RKVarSelector (const QDomElement &element, RKComponent *parent_co
 	show_all_envs_action = new QAction (i18n ("Show all environments"), this);
 	show_all_envs_action->setCheckable (true);
 	show_all_envs_action->setToolTip (i18n ("Show objects in all environments on the <i>search()</i> path, instead of just those in <i>.GlobalEnv</i>. Check this, if you want to select objects from a loaded package."));
-	connect (show_all_envs_action, SIGNAL (toggled(bool)), this, SLOT (rootChanged()));
+	connect (show_all_envs_action, &QAction::toggled, this, &RKVarSelector::rootChanged);
 
 	filter_widget = 0;
 	filter_widget_placeholder = new QVBoxLayout (this);
@@ -75,13 +75,13 @@ RKVarSelector::RKVarSelector (const QDomElement &element, RKComponent *parent_co
 	show_filter_action->setCheckable (true);
 	show_filter_action->setShortcut (QKeySequence ("Ctrl+F"));
 	show_filter_action->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionSearch));
-	connect (show_filter_action, SIGNAL (toggled(bool)), this, SLOT(showFilterWidget()));
+	connect (show_filter_action, &QAction::toggled, this, &RKVarSelector::showFilterWidget);
 
 	list_view = new RKObjectListView (false, this);
 	list_view->setSelectionMode (QAbstractItemView::ExtendedSelection);
 	list_view->initialize ();
 	vbox->addWidget (list_view);
-	connect (list_view, SIGNAL (selectionChanged()), this, SLOT (objectSelectionChanged()));
+	connect (list_view->selectionModel (), &QItemSelectionModel::selectionChanged, this, &RKVarSelector::objectSelectionChanged);
 
 	QAction* sep = list_view->contextMenu ()->insertSeparator (list_view->contextMenu ()->actions ().value (0));
 	list_view->contextMenu ()->insertAction (sep, show_filter_action);
diff --git a/rkward/plugin/rkvarslot.cpp b/rkward/plugin/rkvarslot.cpp
index 8bc1e30..084b488 100644
--- a/rkward/plugin/rkvarslot.cpp
+++ b/rkward/plugin/rkvarslot.cpp
@@ -53,11 +53,11 @@ RKVarSlot::RKVarSlot (const QDomElement &element, RKComponent *parent_component,
 	QVBoxLayout *button_layout = new QVBoxLayout ();
 	select_button = new QPushButton (QString (), this);
 	select_button->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionAddRight));
-	connect (select_button, SIGNAL (clicked()), this, SLOT (selectPressed()));
+	connect (select_button, &QPushButton::clicked, this, &RKVarSlot::selectPressed);
 	button_layout->addWidget (select_button);
 	remove_button = new QPushButton (QString (), this);
 	remove_button->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionRemoveLeft));
-	connect (remove_button, SIGNAL (clicked()), this, SLOT (removePressed()));
+	connect (remove_button, &QPushButton::clicked, this, &RKVarSlot::removePressed);
 	button_layout->addWidget (remove_button);
 	button_layout->addStretch ();
 	g_layout->addLayout (button_layout, 1, 0);
@@ -89,7 +89,7 @@ RKVarSlot::RKVarSlot (const QDomElement &element, RKComponent *parent_component,
 	// find out about options
 	if ((multi = xml->getBoolAttribute (element, "multi", false, DL_INFO))) {
 		available->setAllowedLength (xml->getIntAttribute (element, "min_vars", 1, DL_INFO), xml->getIntAttribute (element, "min_vars_if_any", 1, DL_INFO), xml->getIntAttribute (element, "max_vars", 0, DL_INFO));
-		connect (list, SIGNAL (itemSelectionChanged()), this, SLOT (listSelectionChanged()));
+		connect (list, &QTreeWidget::itemSelectionChanged, this, &RKVarSlot::listSelectionChanged);
 	} else {
 		available->setAllowedLength (1, 1, 1);
 
@@ -115,7 +115,7 @@ RKVarSlot::RKVarSlot (const QDomElement &element, RKComponent *parent_component,
 	available->setStripDuplicates (!xml->getBoolAttribute (element, "allow_duplicates", false, DL_INFO));
 	setRequired (xml->getBoolAttribute (element, "required", false, DL_INFO));
 
-	connect (available, SIGNAL (valueChanged(RKComponentPropertyBase*)), this, SLOT (availablePropertyChanged(RKComponentPropertyBase*)));
+	connect (available, &RKComponentPropertyAbstractList::valueChanged, this, &RKVarSlot::availablePropertyChanged);
 	availablePropertyChanged (available);	// initialize
 }
 
diff --git a/rkward/qwinhost/qwinhost.cpp b/rkward/qwinhost/qwinhost.cpp
index 6a735e3..5532f9f 100644
--- a/rkward/qwinhost/qwinhost.cpp
+++ b/rkward/qwinhost/qwinhost.cpp
@@ -95,7 +95,7 @@ QWinHost::QWinHost(QWidget *parent, Qt::WFlags f)
     setAttribute(Qt::WA_NoBackground);
     setAttribute(Qt::WA_NoSystemBackground);
 
-    connect(this, SIGNAL(clientFocused()), this, SLOT(setFocusSlot()), Qt::QueuedConnection);
+    connect (this, SIGNAL(clientFocused()), this, SLOT(setFocusSlot()), Qt::QueuedConnection);
 }
 
 /*!
diff --git a/rkward/rbackend/rkfrontendtransmitter.cpp b/rkward/rbackend/rkfrontendtransmitter.cpp
index b1abd09..c632ef7 100644
--- a/rkward/rbackend/rkfrontendtransmitter.cpp
+++ b/rkward/rbackend/rkfrontendtransmitter.cpp
@@ -72,7 +72,7 @@ void RKFrontendTransmitter::run () {
 	// we add a bit of randomness to the servername, as in general the servername must be unique
 	// there could be conflicts with concurrent or with previous crashed rkward sessions.
 	if (!server->listen ("rkward" + KRandom::randomString (8))) handleTransmissionError ("Failure to start frontend server: " + server->errorString ());
-	connect (server, SIGNAL (newConnection()), this, SLOT (connectAndEnterLoop()), Qt::QueuedConnection);
+	connect (server, &QLocalServer::newConnection, this, &RKFrontendTransmitter::connectAndEnterLoop, Qt::QueuedConnection);
 
 	// start backend
 	backend = new QProcess (this);
@@ -90,7 +90,7 @@ void RKFrontendTransmitter::run () {
 	args.append ("--rkd-server-name=" + rkd_transmitter->serverName ());
 	args.append ("--data-dir=" + RKSettingsModuleGeneral::filesPath ());
 	args.append ("--locale-dir=" + KGlobal::dirs()->findResourceDir ("locale", QLocale ().name ().section ('_', 0, 0) + "/LC_MESSAGES/rkward.mo"));
-	connect (backend, SIGNAL (finished(int,QProcess::ExitStatus)), this, SLOT (backendExit(int)));
+	connect (backend, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &RKFrontendTransmitter::backendExit);
 	QString backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath ());
 	if (backend_executable.isEmpty ()) backend_executable = findBackendAtPath (QCoreApplication::applicationDirPath () + "/rbackend");	// for running directly from the build-dir
 #ifdef Q_WS_MAC
diff --git a/rkward/rbackend/rktransmitter.cpp b/rkward/rbackend/rktransmitter.cpp
index b840161..03fd4cd 100644
--- a/rkward/rbackend/rktransmitter.cpp
+++ b/rkward/rbackend/rktransmitter.cpp
@@ -256,8 +256,8 @@ void RKAbstractTransmitter::setConnection (QLocalSocket *_connection) {
 	streamer.setIODevice (connection);
 	RK_ASSERT (connection->isOpen ());
 
-	connect (connection, SIGNAL (readyRead()), this, SLOT (fetchTransmission()));
-	connect (connection, SIGNAL (disconnected()), this, SLOT (disconnected()));
+	connect (connection, &QLocalSocket::readyRead, this, &RKAbstractTransmitter::fetchTransmission);
+	connect (connection, &QLocalSocket::disconnected, this, &RKAbstractTransmitter::disconnected);
 
 	// In case something is pending already.
 	if (connection->bytesAvailable ()) QTimer::singleShot (0, this, SLOT (fetchTransmission()));
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice.cpp
index 245a07d..d7fb5c7 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice.cpp
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice.cpp
@@ -53,8 +53,8 @@ RKGraphicsDevice::RKGraphicsDevice (double width, double height, const QString &
 	view->installEventFilter (this);
 	view->setScaledContents (true);    // this is just for preview during scaling. The area will be re-sized and re-drawn from R.
 	view->setFocusPolicy (Qt::StrongFocus);   // for receiving key events for R's getGraphicsEvent()
-	connect (view, SIGNAL (destroyed(QObject*)), this, SLOT (viewKilled()));
-	connect (&updatetimer, SIGNAL (timeout()), this, SLOT (updateNow()));
+	connect (view, &QLabel::destroyed, this, &RKGraphicsDevice::viewKilled);
+	connect (&updatetimer, &QTimer::timeout, this, &RKGraphicsDevice::updateNow);
 	updatetimer.setSingleShot (true);
 	clear ();
 	if (antialias) painter.setRenderHints (QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
@@ -317,7 +317,7 @@ void RKGraphicsDevice::confirmNewPage () {
 	dialog->setButtons (KDialog::Ok | KDialog::Cancel);
 	dialog->setMainWidget (new QLabel (msg, dialog));
 //	dialog->setWindowModality (Qt::WindowModal);        // not good: Grays out the plot window
-	connect (dialog, SIGNAL (finished(int)), this, SLOT (newPageDialogDone(int)));
+	connect (dialog, &QDialog::finished, this, &RKGraphicsDevice::newPageDialogDone);
 	dialog->show ();
 }
 
diff --git a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp
index b74d9cd..47b070d 100644
--- a/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp
+++ b/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp
@@ -57,7 +57,7 @@ void RKGraphicsDeviceFrontendTransmitter::setupServer () {
 	RK_ASSERT (!local_server);
 	local_server = new QLocalServer ();
 	RK_ASSERT (local_server->listen ("rkd" + KRandom::randomString (8)));
-	connect (local_server, SIGNAL (newConnection()), this, SLOT (newConnection()));
+	connect (local_server, &QLocalServer::newConnection, this, &RKGraphicsDeviceFrontendTransmitter::newConnection);
 	server_name = local_server->fullServerName ();
 }
 
@@ -81,7 +81,7 @@ void RKGraphicsDeviceFrontendTransmitter::newConnection () {
 
 	connection = con;
 	streamer.setIODevice (con);
-	connect (connection, SIGNAL (readyRead()), this, SLOT (newData()));
+	connect (connection, &QIODevice::readyRead, this, &RKGraphicsDeviceFrontendTransmitter::newData);
 	newData ();	// might already be available
 }
 
@@ -187,9 +187,9 @@ void RKGraphicsDeviceFrontendTransmitter::newData () {
 			streamer.instream >> width >> height >> title >> antialias;
 			device = RKGraphicsDevice::newDevice (devnum, width, height, title, antialias);
 			RKWorkplace::mainWorkplace ()->newRKWardGraphisWindow (device, devnum+1);
-			connect (device, SIGNAL (locatorDone(bool,double,double)), this, SLOT (locatorDone(bool,double,double)));
-			connect (device, SIGNAL (newPageConfirmDone(bool)), this, SLOT (newPageConfirmDone(bool)));
-			connect (this, SIGNAL (stopInteraction()), device, SLOT (stopInteraction()));
+			connect (device, &RKGraphicsDevice::locatorDone, this, &RKGraphicsDeviceFrontendTransmitter::locatorDone);
+			connect (device, &RKGraphicsDevice::newPageConfirmDone, this, &RKGraphicsDeviceFrontendTransmitter::newPageConfirmDone);
+			connect (this, &RKGraphicsDeviceFrontendTransmitter::stopInteraction, device, &RKGraphicsDevice::stopInteraction);
 			continue;
 		} else {
 			if (devnum) device = RKGraphicsDevice::devices.value (devnum);
diff --git a/rkward/scriptbackends/qtscriptbackend.cpp b/rkward/scriptbackends/qtscriptbackend.cpp
index 130a18d..67f6992 100644
--- a/rkward/scriptbackends/qtscriptbackend.cpp
+++ b/rkward/scriptbackends/qtscriptbackend.cpp
@@ -56,9 +56,9 @@ bool QtScriptBackend::initialize (RKComponentPropertyCode *code_property, bool a
 	QString common_js (files_path.absoluteFilePath ("common.js"));
 
 	script_thread = new QtScriptBackendThread (common_js, filename, this, catalog);
-	connect (script_thread, SIGNAL (error(QString)), this, SLOT (threadError(QString)));
-	connect (script_thread, SIGNAL (commandDone(QString)), this, SLOT (commandDone(QString)));
-	connect (script_thread, SIGNAL (needData(QString,int)), this, SLOT (needData(QString,int)));
+	connect (script_thread, &QtScriptBackendThread::error, this, &QtScriptBackend::threadError);
+	connect (script_thread, &QtScriptBackendThread::commandDone, this, &QtScriptBackend::commandDone);
+	connect (script_thread, &QtScriptBackendThread::needData, this, &QtScriptBackend::needData);
 	current_type = ScriptBackend::Ignore;
 	script_thread->start ();
 
diff --git a/rkward/settings/rksettings.cpp b/rkward/settings/rksettings.cpp
index 54fc89c..bd3637e 100644
--- a/rkward/settings/rksettings.cpp
+++ b/rkward/settings/rksettings.cpp
@@ -72,14 +72,14 @@ RKSettings::RKSettings (QWidget *parent) : KPageDialog (parent) {
 	buttonBox ()->setStandardButtons (QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel | QDialogButtonBox::Help);
 	// KF5 TODO: connect buttons
 	button (QDialogButtonBox::Apply)->setEnabled (false);
-	connect (button (QDialogButtonBox::Apply), SIGNAL (clicked()), this, SLOT(applyAll()));
-	connect (button (QDialogButtonBox::Help), SIGNAL (clicked()), this, SLOT(helpClicked()));
+	connect (button(QDialogButtonBox::Apply), &QPushButton::clicked, this, &RKSettings::applyAll);
+	connect (button(QDialogButtonBox::Help), &QPushButton::clicked, this, &RKSettings::helpClicked);
 
 	setAttribute (Qt::WA_DeleteOnClose, true);
 
 	initModules ();
 
-	connect (this, SIGNAL (currentPageChanged(KPageWidgetItem*,KPageWidgetItem*)), this, SLOT (pageChange(KPageWidgetItem*,KPageWidgetItem*)));
+	connect (this, &RKSettings::currentPageChanged, this, &RKSettings::pageChange);
 	pageChange (currentPage (), currentPage ());	// init
 }
 
diff --git a/rkward/settings/rksettingsmodulecommandeditor.cpp b/rkward/settings/rksettingsmodulecommandeditor.cpp
index b379867..76a7eec 100644
--- a/rkward/settings/rksettingsmodulecommandeditor.cpp
+++ b/rkward/settings/rksettingsmodulecommandeditor.cpp
@@ -57,7 +57,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 
 	completion_enabled_box = new QCheckBox (i18n ("Enable code completion"), group);
 	completion_enabled_box->setChecked (completion_enabled);
-	connect (completion_enabled_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (completion_enabled_box, &QCheckBox::stateChanged, this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (completion_enabled_box);
 
 	box_layout->addSpacing (RKGlobals::spacingHint ());
@@ -67,7 +67,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 	completion_min_chars_box = new RKSpinBox (group);
 	completion_min_chars_box->setIntMode (1, INT_MAX, completion_min_chars);
 	completion_min_chars_box->setEnabled (completion_enabled);
-	connect (completion_min_chars_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (completion_min_chars_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (label);
 	box_layout->addWidget (completion_min_chars_box);
 
@@ -78,7 +78,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 	completion_timeout_box = new RKSpinBox (group);
 	completion_timeout_box->setIntMode (0, INT_MAX, completion_timeout);
 	completion_timeout_box->setEnabled (completion_enabled);
-	connect (completion_timeout_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (completion_timeout_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (label);
 	box_layout->addWidget (completion_timeout_box);
 
@@ -86,7 +86,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 
 	arghinting_enabled_box = new QCheckBox (i18n ("Enable function argument hinting"), group);
 	arghinting_enabled_box->setChecked (arghinting_enabled);
-	connect (arghinting_enabled_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (arghinting_enabled_box, &QCheckBox::stateChanged, this, &RKSettingsModuleCommandEditor::settingChanged);
 	main_vbox->addWidget (arghinting_enabled_box);
 
 	main_vbox->addSpacing (2 * RKGlobals::spacingHint ());
@@ -94,20 +94,20 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 	group = autosave_enabled_box = new QGroupBox (i18n ("Autosaves"), this);
 	autosave_enabled_box->setCheckable (true);
 	autosave_enabled_box->setChecked (autosave_enabled);
-	connect (autosave_enabled_box, SIGNAL (toggled(bool)), this, SLOT (settingChanged()));
+	connect (autosave_enabled_box, &QGroupBox::toggled, this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout = new QVBoxLayout (group);
 
 	label = new QLabel (i18n ("Autosave interval (minutes)"), group);
 	autosave_interval_box = new RKSpinBox (group);
 	autosave_interval_box->setIntMode (1, INT_MAX, autosave_interval);
-	connect (autosave_interval_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (autosave_interval_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (label);
 	box_layout->addWidget (autosave_interval_box);
 	box_layout->addSpacing (RKGlobals::spacingHint ());
 
 	autosave_keep_box = new QCheckBox (i18n ("Keep autosave file after manual save"), group);
 	autosave_keep_box->setChecked (autosave_keep);
-	connect (autosave_keep_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (autosave_keep_box, &QCheckBox::stateChanged, this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (autosave_keep_box);
 
 	main_vbox->addWidget (group);
@@ -120,7 +120,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 	num_recent_files_box = new RKSpinBox (group);
 	num_recent_files_box->setIntMode (1, INT_MAX, num_recent_files);
 	RKCommonFunctions::setTips (i18n ("<p>The number of recent files to remember (in the Open Recent R Script File menu).</p>") + RKCommonFunctions::noteSettingsTakesEffectAfterRestart (), num_recent_files_box, label);
-	connect (num_recent_files_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (num_recent_files_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (label);
 	box_layout->addWidget (num_recent_files_box);
 	box_layout->addSpacing (RKGlobals::spacingHint ());
@@ -129,7 +129,7 @@ RKSettingsModuleCommandEditor::RKSettingsModuleCommandEditor (RKSettings *gui, Q
 	script_file_filter_box = new QLineEdit (group);
 	script_file_filter_box->setText (script_file_filter);
 	RKCommonFunctions::setTips (i18n ("<p>A list of filters (file name extensions) that should be treated as R script files. Most importantly, files matching one of these filters will always be opened with R syntax highlighting.</p><p>Filters are case insensitive.</p>"), script_file_filter_box, label);
-	connect (script_file_filter_box, SIGNAL (textChanged(QString)), this, SLOT (settingChanged()));
+	connect (script_file_filter_box, &QLineEdit::textChanged, this, &RKSettingsModuleCommandEditor::settingChanged);
 	box_layout->addWidget (label);
 	box_layout->addWidget (script_file_filter_box);
 	box_layout->addSpacing (RKGlobals::spacingHint ());
diff --git a/rkward/settings/rksettingsmoduleconsole.cpp b/rkward/settings/rksettingsmoduleconsole.cpp
index 677fc03..c696115 100644
--- a/rkward/settings/rksettingsmoduleconsole.cpp
+++ b/rkward/settings/rksettingsmoduleconsole.cpp
@@ -49,26 +49,26 @@ RKSettingsModuleConsole::RKSettingsModuleConsole (RKSettings *gui, QWidget *pare
 
 	save_history_box = new QCheckBox (i18n ("Load/Save command history"), this);
 	save_history_box->setChecked (save_history);
-	connect (save_history_box, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (save_history_box, &QCheckBox::stateChanged, this, &RKSettingsModuleConsole::changedSetting);
 	vbox->addWidget (save_history_box);
 
 	vbox->addWidget (new QLabel (i18n ("Maximum length of command history"), this));
 	max_history_length_spinner = new KIntSpinBox (0, 10000, 10, max_history_length, this);
 	max_history_length_spinner->setSpecialValueText (i18n ("Unlimited"));
-	connect (max_history_length_spinner, SIGNAL (valueChanged(int)), this, SLOT (changedSetting(int)));
+	connect (max_history_length_spinner, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleConsole::changedSetting);
 	vbox->addWidget (max_history_length_spinner);
 
 	vbox->addWidget (new QLabel (i18n ("Maximum number of paragraphs/lines to display in the console"), this));
 	max_console_lines_spinner = new KIntSpinBox (0, 10000, 10, max_console_lines, this);
 	max_console_lines_spinner->setSpecialValueText (i18n ("Unlimited"));
-	connect (max_console_lines_spinner, SIGNAL (valueChanged(int)), this, SLOT (changedSetting(int)));
+	connect (max_console_lines_spinner, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleConsole::changedSetting);
 	vbox->addWidget (max_console_lines_spinner);
 
 	vbox->addSpacing (2*RKGlobals::spacingHint ());
 
 	pipe_user_commands_through_console_box = new QCheckBox (i18n ("Run commands from script editor through console"), this);
 	pipe_user_commands_through_console_box->setChecked (pipe_user_commands_through_console);
-	connect (pipe_user_commands_through_console_box, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (pipe_user_commands_through_console_box, &QCheckBox::stateChanged, this, &RKSettingsModuleConsole::changedSetting);
 	vbox->addWidget (pipe_user_commands_through_console_box);
 
 	vbox->addWidget (new QLabel (i18n ("Also add those commands to console history"), this));
@@ -77,14 +77,14 @@ RKSettingsModuleConsole::RKSettingsModuleConsole (RKSettings *gui, QWidget *pare
 	add_piped_commands_to_history_box->insertItem ((int) AddSingleLine, i18n ("Add only if single line"));
 	add_piped_commands_to_history_box->insertItem ((int) AlwaysAdd, i18n ("Add all commands"));
 	add_piped_commands_to_history_box->setCurrentIndex ((int) add_piped_commands_to_history);
-	connect (add_piped_commands_to_history_box, SIGNAL (currentIndexChanged(int)), this, SLOT (changedSetting(int)));
+	connect (add_piped_commands_to_history_box, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &RKSettingsModuleConsole::changedSetting);
 	add_piped_commands_to_history_box->setEnabled (pipe_user_commands_through_console_box->isChecked ());
 	vbox->addWidget (add_piped_commands_to_history_box);
 
 	vbox->addSpacing (2*RKGlobals::spacingHint ());
 
 	reverse_context_mode_box = new QCheckBox (i18n ("Command history is context sensitive by default"), this);
-	connect (reverse_context_mode_box, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (reverse_context_mode_box, &QCheckBox::stateChanged, this, &RKSettingsModuleConsole::changedSetting);
 	reverse_context_mode_box->setChecked (context_sensitive_history_by_default);
 	vbox->addWidget (reverse_context_mode_box);
 
diff --git a/rkward/settings/rksettingsmoduledebug.cpp b/rkward/settings/rksettingsmoduledebug.cpp
index 687d8ba..499cc6a 100644
--- a/rkward/settings/rksettingsmoduledebug.cpp
+++ b/rkward/settings/rksettingsmoduledebug.cpp
@@ -48,7 +48,7 @@ RKSettingsModuleDebug::RKSettingsModuleDebug (RKSettings *gui, QWidget *parent)
 	label = new QLabel (i18n ("Debug level"), this);
 	debug_level_box = new RKSpinBox (this);
 	debug_level_box->setIntMode (DL_TRACE, DL_FATAL, DL_FATAL - RK_Debug_Level);
-	connect (debug_level_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged(int)));
+	connect (debug_level_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleDebug::settingChanged);
 	main_vbox->addWidget (label);
 	main_vbox->addWidget (debug_level_box);
 
@@ -77,14 +77,14 @@ RKSettingsModuleDebug::RKSettingsModuleDebug (RKSettings *gui, QWidget *parent)
 		box_layout->addWidget (*it);
 		(*it)->setChecked (RK_Debug_Flags & debug_flags_group->id (*it));
 	}
-	connect (debug_flags_group, SIGNAL (buttonClicked(int)), this, SLOT (settingChanged(int)));
+	connect (debug_flags_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKSettingsModuleDebug::settingChanged);
 	main_vbox->addWidget (group);
 
 
 	label = new QLabel (i18n ("Command timeout"), this);
 	command_timeout_box = new RKSpinBox (this);
 	command_timeout_box->setIntMode (0, 10000, RK_Debug_CommandStep);
-	connect (command_timeout_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged(int)));
+	connect (command_timeout_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleDebug::settingChanged);
 	main_vbox->addWidget (label);
 	main_vbox->addWidget (command_timeout_box);
 
diff --git a/rkward/settings/rksettingsmodulegeneral.cpp b/rkward/settings/rksettingsmodulegeneral.cpp
index 31237a6..4a4ea21 100644
--- a/rkward/settings/rksettingsmodulegeneral.cpp
+++ b/rkward/settings/rksettingsmodulegeneral.cpp
@@ -66,7 +66,7 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
 
 	files_choser = new GetFileNameWidget (this, GetFileNameWidget::ExistingDirectory, true, i18n ("Directory where rkward may store files (*)"), QString (), new_files_path);
-	connect (files_choser, SIGNAL (locationChanged()), this, SLOT (settingChanged()));
+	connect (files_choser, &GetFileNameWidget::locationChanged, this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (files_choser);
 
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
@@ -80,12 +80,12 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	startup_action_choser->addItem (i18n ("Ask for a file to open"), (int) StartupDialog::ChoseFile);
 	startup_action_choser->addItem (i18n ("Show selection dialog (default)"), (int) StartupDialog::NoSavedSetting);
 	startup_action_choser->setCurrentIndex (startup_action_choser->findData (startup_action));
-	connect (startup_action_choser, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (startup_action_choser, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (startup_action_choser);
 
 	show_help_on_startup_box = new QCheckBox (i18n ("Show RKWard Help on Startup"), this);
 	show_help_on_startup_box->setChecked (show_help_on_startup);
-	connect (show_help_on_startup_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (show_help_on_startup_box, &QCheckBox::stateChanged, this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (show_help_on_startup_box);
 
 	QGroupBox* group_box = new QGroupBox (i18n ("Initial working directory (*)"), this);
@@ -98,11 +98,11 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	initial_dir_chooser->addItem (i18n ("Last used directory"), (int) LastUsedDirectory);
 	initial_dir_chooser->addItem (i18n ("The following directory (please specify):"), (int) CustomDirectory);
 	initial_dir_chooser->setCurrentIndex (initial_dir_chooser->findData ((int) initial_dir));
-	connect (initial_dir_chooser, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (initial_dir_chooser, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleGeneral::settingChanged);
 	hlayout->addWidget (initial_dir_chooser);
 	initial_dir_custom_chooser = new GetFileNameWidget (group_box, GetFileNameWidget::ExistingDirectory, true, QString(), i18n ("Initial working directory"), initial_dir_specification);
 	initial_dir_custom_chooser->setEnabled (initial_dir == CustomDirectory);
-	connect (initial_dir_custom_chooser, SIGNAL (locationChanged()), this, SLOT (settingChanged()));
+	connect (initial_dir_custom_chooser, &GetFileNameWidget::locationChanged, this, &RKSettingsModuleGeneral::settingChanged);
 	hlayout->addWidget (initial_dir_custom_chooser);
 	RKCommonFunctions::setTips (i18n ("<p>The initial working directory to use. Note that if you are loading a workspace on startup, and you have configured RKWard to change to the directory of loaded workspaces, that directory will take precedence.</p>"), group_box, initial_dir_chooser, initial_dir_custom_chooser);
 	main_vbox->addWidget (group_box);
@@ -128,14 +128,14 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	group_layout->addWidget (button);
 	workplace_save_chooser->addButton (button, DontSaveWorkplace);	
 	if ((button = workplace_save_chooser->button (workplace_save_mode))) button->setChecked (true);
-	connect (workplace_save_chooser, SIGNAL (buttonClicked(int)), this, SLOT (settingChanged()));
+	connect (workplace_save_chooser, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (group_box);
 
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
 
 	cd_to_workspace_dir_on_load_box = new QCheckBox (i18n ("When loading a workspace, change to the corresponding directory."), this);
 	cd_to_workspace_dir_on_load_box->setChecked (cd_to_workspace_dir_on_load);
-	connect (cd_to_workspace_dir_on_load_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (cd_to_workspace_dir_on_load_box, &QCheckBox::stateChanged, this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (cd_to_workspace_dir_on_load_box);
 
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
@@ -144,7 +144,7 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	warn_size_object_edit_box = new RKSpinBox (this);
 	warn_size_object_edit_box->setIntMode (0, INT_MAX, warn_size_object_edit);
 	warn_size_object_edit_box->setSpecialValueText (i18n ("No limit"));
-	connect (warn_size_object_edit_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (warn_size_object_edit_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (label);
 	main_vbox->addWidget (warn_size_object_edit_box);
 
@@ -156,7 +156,7 @@ RKSettingsModuleGeneral::RKSettingsModuleGeneral (RKSettings *gui, QWidget *pare
 	mdi_focus_policy_chooser->insertItem (RKMDIClickFocus, i18n ("Click to focus"));
 	mdi_focus_policy_chooser->insertItem (RKMDIFocusFollowsMouse, i18n ("Focus follows mouse"));
 	mdi_focus_policy_chooser->setCurrentIndex (mdi_focus_policy);
-	connect (mdi_focus_policy_chooser, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (mdi_focus_policy_chooser, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleGeneral::settingChanged);
 	main_vbox->addWidget (label);
 	main_vbox->addWidget (mdi_focus_policy_chooser);
 
diff --git a/rkward/settings/rksettingsmodulegraphics.cpp b/rkward/settings/rksettingsmodulegraphics.cpp
index 756eb26..03dba2c 100644
--- a/rkward/settings/rksettingsmodulegraphics.cpp
+++ b/rkward/settings/rksettingsmodulegraphics.cpp
@@ -77,8 +77,8 @@ RKSettingsModuleGraphics::RKSettingsModuleGraphics (RKSettings *gui, QWidget *pa
 	                                  "<p>The RKWard native device is the recommended choice for most users. This corresponds to the R command <i>RK()</i>.</p>"
 	                                  "<p>The 'Platform default device' corresponds to one of <i>X11()</i>, <i>windows()</i>, or <i>quartz()</i>, depending on the platform.</p>"
 	                                  "<p>You can also specify the name of a function such as <i>cairoDevice</i>.</p>"), group);
-	connect (default_device_group, SIGNAL (buttonClicked(int)), this, SLOT (boxChanged()));
-	connect (default_device_other_edit, SIGNAL (textChanged(QString)), this, SLOT (boxChanged()));
+	connect (default_device_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKSettingsModuleGraphics::boxChanged);
+	connect (default_device_other_edit, &QLineEdit::textChanged, this, &RKSettingsModuleGraphics::boxChanged);
 	h_layout1->addWidget (group);
 
 	group = new QGroupBox (i18n ("Integration of R standard devices"), this);
@@ -107,7 +107,7 @@ RKSettingsModuleGraphics::RKSettingsModuleGraphics (RKSettings *gui, QWidget *pa
 	                                  "<li>The original platform specific devices can be used unchanged, without the addition of RKWard specific features.</li></ul>"
 	                                  "<p>Regardless of this setting, the original devices are always accessible as <i>grDevices::X11()</i>, etc.</p>"
 	                                  "<p>Using a device on a platform where it is not defined (e.g. <i>Windows()</i> on Mac OS X) will always fall back to the <i>RK()</i> device.</p>"), group);
-	connect (replace_standard_devices_group, SIGNAL (buttonClicked(int)), this, SLOT (boxChanged()));
+	connect (replace_standard_devices_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKSettingsModuleGraphics::boxChanged);
 	h_layout1->addWidget (group);
 
 	group = new QGroupBox (i18n ("Default window size (for RK(), or embedded device windows)"), this);
@@ -119,20 +119,20 @@ RKSettingsModuleGraphics::RKSettingsModuleGraphics (RKSettings *gui, QWidget *pa
 	group_layout->addWidget (new QLabel (i18n ("Default height (inches)"), group));
 	group_layout->addWidget (graphics_height_box = new RKSpinBox (group));
 	graphics_height_box->setRealMode (1, 100.0, graphics_height, 1, 3);
-	connect (graphics_width_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
-	connect (graphics_height_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
+	connect (graphics_width_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleGraphics::boxChanged);
+	connect (graphics_height_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModuleGraphics::boxChanged);
 	main_vbox->addWidget (group);
 
 	kde_printing_box = new QCheckBox (i18n ("Use KDE printer dialog for printing devices (if available)"), this);
 	kde_printing_box->setChecked (options_kde_printing);
-	connect (kde_printing_box, SIGNAL (stateChanged(int)), this, SLOT (boxChanged()));
+	connect (kde_printing_box, &QCheckBox::stateChanged, this, &RKSettingsModuleGraphics::boxChanged);
 	main_vbox->addWidget (kde_printing_box);
 
 	graphics_hist_box = new QGroupBox (i18n ("Screen device history"), this);
 	graphics_hist_box->setCheckable (true);
 	graphics_hist_box->setChecked (graphics_hist_enable);
 	group_layout = new QVBoxLayout (graphics_hist_box);
-	connect (graphics_hist_box, SIGNAL (toggled(bool)), this, SLOT (boxChanged()));
+	connect (graphics_hist_box, &QGroupBox::toggled, this, &RKSettingsModuleGraphics::boxChanged);
 	h_layout = new QHBoxLayout ();
 	group_layout->addLayout (h_layout);
 	h_layout->addWidget (new QLabel (i18n ("Maximum number of recorded plots:"), graphics_hist_box));
@@ -141,8 +141,8 @@ RKSettingsModuleGraphics::RKSettingsModuleGraphics (RKSettings *gui, QWidget *pa
 	group_layout->addLayout (h_layout);
 	h_layout->addWidget (new QLabel (i18n ("Maximum size of a single recorded plot (in KB):"), graphics_hist_box));
 	h_layout->addWidget (graphics_hist_max_plotsize_box = new KIntSpinBox (4, 20000, 4, graphics_hist_max_plotsize, graphics_hist_box));
-	connect (graphics_hist_max_length_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
-	connect (graphics_hist_max_plotsize_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
+	connect (graphics_hist_max_length_box, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleGraphics::boxChanged);
+	connect (graphics_hist_max_plotsize_box, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleGraphics::boxChanged);
 
 	main_vbox->addWidget (graphics_hist_box);
 
diff --git a/rkward/settings/rksettingsmoduleobjectbrowser.cpp b/rkward/settings/rksettingsmoduleobjectbrowser.cpp
index 5242dff..045a946 100644
--- a/rkward/settings/rksettingsmoduleobjectbrowser.cpp
+++ b/rkward/settings/rksettingsmoduleobjectbrowser.cpp
@@ -49,8 +49,8 @@ RKSettingsModuleObjectBrowser::RKSettingsModuleObjectBrowser (RKSettings *gui, Q
 
 	blacklist_choser = new MultiStringSelector (i18n ("Never fetch the structure of these packages:"), this);
 	blacklist_choser->setValues (getstructure_blacklist);
-	connect (blacklist_choser, SIGNAL (listChanged()), this, SLOT (listChanged()));
-	connect (blacklist_choser, SIGNAL (getNewStrings(QStringList*)), this, SLOT (addBlackList(QStringList*)));
+	connect (blacklist_choser, &MultiStringSelector::listChanged, this, &RKSettingsModuleObjectBrowser::listChanged);
+	connect (blacklist_choser, &MultiStringSelector::getNewStrings, this, &RKSettingsModuleObjectBrowser::addBlackList);
 	layout->addWidget (blacklist_choser);
 }
 
diff --git a/rkward/settings/rksettingsmoduleoutput.cpp b/rkward/settings/rksettingsmoduleoutput.cpp
index e37af0c..806544a 100644
--- a/rkward/settings/rksettingsmoduleoutput.cpp
+++ b/rkward/settings/rksettingsmoduleoutput.cpp
@@ -46,24 +46,24 @@ RKCarbonCopySettings::RKCarbonCopySettings (QWidget* parent) : QWidget (parent)
 	QVBoxLayout *main_vbox = new QVBoxLayout (this);
 	cc_globally_enabled_box = new QGroupBox (i18n ("Carbon copy commands to output"), this);
 	cc_globally_enabled_box->setCheckable (true);
-	connect (cc_globally_enabled_box, SIGNAL (clicked(bool)), this, SLOT (settingChanged()));
+	connect (cc_globally_enabled_box, &QGroupBox::clicked, this, &RKCarbonCopySettings::settingChanged);
 	main_vbox->addWidget (cc_globally_enabled_box);
 
 	QVBoxLayout *group_layout = new QVBoxLayout (cc_globally_enabled_box);
 	cc_console_commands_box = new QCheckBox (i18n ("Commands entered in the console"), cc_globally_enabled_box);
-	connect (cc_console_commands_box, SIGNAL (clicked(bool)), this, SLOT (settingChanged()));
+	connect (cc_console_commands_box, &QCheckBox::clicked, this, &RKCarbonCopySettings::settingChanged);
 	group_layout->addWidget (cc_console_commands_box);
 
 	cc_script_commands_box = new QCheckBox (i18n ("Commands run via the 'Run' menu"), cc_globally_enabled_box);
-	connect (cc_script_commands_box, SIGNAL (clicked(bool)), this, SLOT (settingChanged()));
+	connect (cc_script_commands_box, &QCheckBox::clicked, this, &RKCarbonCopySettings::settingChanged);
 	group_layout->addWidget (cc_script_commands_box);
 
 	cc_app_plugin_commands_box = new QCheckBox (i18n ("Commands originating from dialogs and plugins"), cc_globally_enabled_box);
-	connect (cc_app_plugin_commands_box, SIGNAL (clicked(bool)), this, SLOT (settingChanged()));
+	connect (cc_app_plugin_commands_box, &QCheckBox::clicked, this, &RKCarbonCopySettings::settingChanged);
 	group_layout->addWidget (cc_app_plugin_commands_box);
 
 	cc_command_output_box = new QCheckBox (i18n ("Also carbon copy the command output"), cc_globally_enabled_box);
-	connect (cc_command_output_box, SIGNAL (clicked(bool)), this, SLOT (settingChanged()));
+	connect (cc_command_output_box, &QCheckBox::clicked, this, &RKCarbonCopySettings::settingChanged);
 	group_layout->addWidget (cc_command_output_box);
 
 	update ();
@@ -156,11 +156,11 @@ RKSettingsModuleOutput::RKSettingsModuleOutput (RKSettings *gui, QWidget *parent
 	QVBoxLayout* group_layout = new QVBoxLayout (group);
 	group_layout->addWidget (auto_show_box = new QCheckBox (i18n ("show window on new output"), group));
 	auto_show_box->setChecked (auto_show);
-	connect (auto_show_box, SIGNAL (stateChanged(int)), this, SLOT (boxChanged()));
+	connect (auto_show_box, &QCheckBox::stateChanged, this, &RKSettingsModuleOutput::boxChanged);
 	group_layout->addWidget (auto_raise_box = new QCheckBox (i18n ("raise window on new output"), group));
 	auto_raise_box->setChecked (auto_raise);
 	auto_raise_box->setEnabled (auto_show);
-	connect (auto_raise_box, SIGNAL (stateChanged(int)), this, SLOT (boxChanged()));
+	connect (auto_raise_box, &QCheckBox::stateChanged, this, &RKSettingsModuleOutput::boxChanged);
 
 	main_vbox->addWidget (group);
 
@@ -176,12 +176,12 @@ RKSettingsModuleOutput::RKSettingsModuleOutput (RKSettings *gui, QWidget *parent
 	graphics_type_box->addItem (i18n ("JPG"), QString ("\"JPG\""));
 	graphics_type_box->setCurrentIndex (graphics_type_box->findData (graphics_type));
 	graphics_type_box->setEditable (false);
-	connect (graphics_type_box, SIGNAL (currentIndexChanged(int)), this, SLOT (boxChanged()));
+	connect (graphics_type_box, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &RKSettingsModuleOutput::boxChanged);
 	h_layout->addSpacing (2*RKGlobals::spacingHint ());
 	h_layout->addWidget (new QLabel (i18n ("JPG quality"), group));
 	h_layout->addWidget (graphics_jpg_quality_box = new KIntSpinBox (1, 100, 1, graphics_jpg_quality, group));
 	graphics_jpg_quality_box->setEnabled (graphics_type == "\"JPG\"");
-	connect (graphics_jpg_quality_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
+	connect (graphics_jpg_quality_box, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleOutput::boxChanged);
 	h_layout->addStretch ();
 
 	h_layout = new QHBoxLayout ();
@@ -192,13 +192,13 @@ RKSettingsModuleOutput::RKSettingsModuleOutput (RKSettings *gui, QWidget *parent
 	h_layout->addWidget (new QLabel (i18n ("Height:"), group));
 	h_layout->addWidget (graphics_height_box = new KIntSpinBox (1, INT_MAX, 1, graphics_height, group));
 	h_layout->addStretch ();
-	connect (graphics_width_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
-	connect (graphics_height_box, SIGNAL (valueChanged(int)), this, SLOT (boxChanged()));
+	connect (graphics_width_box, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleOutput::boxChanged);
+	connect (graphics_height_box, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleOutput::boxChanged);
 
 	main_vbox->addWidget (group);
 
 	cc_settings = new RKCarbonCopySettings (this);
-	connect (cc_settings, SIGNAL (changed()), this, SLOT (boxChanged()));
+	connect (cc_settings, &RKCarbonCopySettings::changed, this, &RKSettingsModuleOutput::boxChanged);
 	main_vbox->addWidget (cc_settings);
 
 	main_vbox->addStretch ();
diff --git a/rkward/settings/rksettingsmoduleplugins.cpp b/rkward/settings/rksettingsmoduleplugins.cpp
index 128794f..ac7a809 100644
--- a/rkward/settings/rksettingsmoduleplugins.cpp
+++ b/rkward/settings/rksettingsmoduleplugins.cpp
@@ -78,7 +78,7 @@ RKSettingsModulePlugins::RKSettingsModulePlugins (RKSettings *gui, QWidget *pare
 	button_group->addButton (button, PreferWizard);
 	if ((button = button_group->button (interface_pref))) button->setChecked (true);
 
-	connect (button_group, SIGNAL (buttonClicked(int)), this, SLOT (settingChanged()));
+	connect (button_group, static_cast<void (QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), this, &RKSettingsModulePlugins::settingChanged);
 	main_vbox->addWidget (button_box);
 
 
@@ -90,14 +90,14 @@ RKSettingsModulePlugins::RKSettingsModulePlugins (RKSettings *gui, QWidget *pare
 
 	show_code_box = new QCheckBox (i18n ("Code shown by default"), code_frame);
 	show_code_box->setChecked (show_code);
-	connect (show_code_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (show_code_box, &QCheckBox::stateChanged, this, &RKSettingsModulePlugins::settingChanged);
 	group_layout->addWidget (show_code_box);
 
 	KHBox *code_size_hbox = new KHBox (code_frame);
 	new QLabel (i18n ("Default height of code display (pixels)"), code_size_hbox);
 	code_size_box = new RKSpinBox (code_size_hbox);
 	code_size_box->setIntMode (20, 5000, code_size);
-	connect (code_size_box, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (code_size_box, static_cast<void (RKSpinBox::*)(int)>(&RKSpinBox::valueChanged), this, &RKSettingsModulePlugins::settingChanged);
 	group_layout->addWidget (code_size_hbox);
 
 	main_vbox->addWidget (code_frame);
@@ -106,7 +106,7 @@ RKSettingsModulePlugins::RKSettingsModulePlugins (RKSettings *gui, QWidget *pare
 	main_vbox->addSpacing (2*RKGlobals::spacingHint ());
 
 	QPushButton *pluginmap_config_button = new QPushButton (i18n ("Configure Active Plugins"), this);
-	connect (pluginmap_config_button, SIGNAL (clicked()), this, SLOT (configurePluginmaps()));
+	connect (pluginmap_config_button, &QPushButton::clicked, this, &RKSettingsModulePlugins::configurePluginmaps);
 	main_vbox->addWidget (pluginmap_config_button);
 
 	main_vbox->addStretch ();
diff --git a/rkward/settings/rksettingsmoduler.cpp b/rkward/settings/rksettingsmoduler.cpp
index 344330e..8ad15fb 100644
--- a/rkward/settings/rksettingsmoduler.cpp
+++ b/rkward/settings/rksettingsmoduler.cpp
@@ -89,32 +89,32 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 	warn_input->insertItem (2, i18n ("Print warnings immediately"));
 	warn_input->insertItem (3, i18n ("Convert warnings to errors"));
 	warn_input->setCurrentIndex (options_warn + 1);
-	connect (warn_input, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (warn_input, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (warn_input, row, 1);
 
 	// options (OutDec)
 	grid->addWidget (new QLabel (i18n ("Decimal character (only for printing)"), this), ++row, 0);
 	outdec_input = new QLineEdit (options_outdec, this);
 	outdec_input->setMaxLength (1);
-	connect (outdec_input, SIGNAL (textChanged(QString)), this, SLOT (settingChanged()));
+	connect (outdec_input, &QLineEdit::textChanged, this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (outdec_input, row, 1);
 
 	// options (width)
 	grid->addWidget (new QLabel (i18n ("Output width (characters)"), this), ++row, 0);
 	width_input = new KIntSpinBox (10, 10000, 1, options_width, this);
-	connect (width_input, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (width_input, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (width_input, row, 1);
 
 	// options (max.print)
 	grid->addWidget (new QLabel (i18n ("Maximum number of elements shown in print"), this), ++row, 0);
 	maxprint_input = new KIntSpinBox (100, INT_MAX, 1, options_maxprint, this);
-	connect (maxprint_input, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (maxprint_input, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (maxprint_input, row, 1);
 
 	// options (warnings.length)
 	grid->addWidget (new QLabel (i18n ("Maximum length of warnings/errors to print"), this), ++row, 0);
 	warningslength_input = new KIntSpinBox (100, 8192, 1, options_warningslength, this);
-	connect (warningslength_input, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (warningslength_input, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (warningslength_input, row, 1);
 
 	// options (keep.source)
@@ -124,7 +124,7 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 	keepsource_input->addItem (i18n ("TRUE (default)"), true);
 	keepsource_input->addItem (i18n ("FALSE"), false);
 	keepsource_input->setCurrentIndex (options_keepsource ? 0 : 1);
-	connect (keepsource_input, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (keepsource_input, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (keepsource_input, row, 1);
 
 	// options (keep.source.pkgs)
@@ -134,19 +134,19 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 	keepsourcepkgs_input->addItem (i18n ("TRUE"), true);
 	keepsourcepkgs_input->addItem (i18n ("FALSE (default)"), false);
 	keepsourcepkgs_input->setCurrentIndex (options_keepsourcepkgs ? 0 : 1);
-	connect (keepsourcepkgs_input, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (keepsourcepkgs_input, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (keepsourcepkgs_input, row, 1);
 
 	// options (expressions)
 	grid->addWidget (new QLabel (i18n ("Maximum level of nested expressions"), this), ++row, 0);
 	expressions_input = new KIntSpinBox (25, 500000, 1, options_expressions, this);
-	connect (expressions_input, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (expressions_input, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (expressions_input, row, 1);
 
 	// options (digits)
 	grid->addWidget (new QLabel (i18n ("Default decimal precision in print ()"), this), ++row, 0);
 	digits_input = new KIntSpinBox (1, 22, 1, options_digits, this);
-	connect (digits_input, SIGNAL (valueChanged(int)), this, SLOT (settingChanged()));
+	connect (digits_input, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (digits_input, row, 1);
 
 	// options (check.bounds)
@@ -156,7 +156,7 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 	checkbounds_input->addItem (i18n ("TRUE"), true);
 	checkbounds_input->addItem (i18n ("FALSE (default)"), false);
 	checkbounds_input->setCurrentIndex (options_checkbounds ? 0 : 1);
-	connect (checkbounds_input, SIGNAL (activated(int)), this, SLOT (settingChanged()));
+	connect (checkbounds_input, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (checkbounds_input, row, 1);
 
 	grid->addWidget (new QLabel (i18n ("Editor command"), this), ++row, 0);
@@ -167,7 +167,7 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 		editor_input->addItem (options_editor);
 		editor_input->setCurrentIndex (1);
 	}
-	connect (editor_input, SIGNAL (editTextChanged(QString)), this, SLOT (settingChanged()));
+	connect (editor_input, &QComboBox::editTextChanged, this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (editor_input, row, 1);
 
 	grid->addWidget (new QLabel (i18n ("Pager command"), this), ++row, 0);
@@ -178,14 +178,14 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 		pager_input->addItem (options_pager);
 		pager_input->setCurrentIndex (1);
 	}
-	connect (pager_input, SIGNAL (editTextChanged(QString)), this, SLOT (settingChanged()));
+	connect (pager_input, &QComboBox::editTextChanged, this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (pager_input, row, 1);
 
 #ifdef Q_WS_WIN
 	grid->addWidget (label = new QLabel (i18n ("Use Internet Explorer functions for internet access"), this), ++row, 0);
 	internet2_input = new QCheckBox (this);
 	internet2_input->setChecked (options_internet2);
-	connect (internet2_input, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (internet2_input, &QCheckBox::stateChanged, this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (internet2_input, row, 1);
 	RKCommonFunctions::setTips (i18n ("<p>Use Internet Explorer functions for accessing the internet from R. "
 									"Enabling this option may help in case of problems with accessing the internet from R (e.g. for "
@@ -197,7 +197,7 @@ RKSettingsModuleR::RKSettingsModuleR (RKSettings *gui, QWidget *parent) : RKSett
 	further_input->setWordWrapMode (QTextOption::NoWrap);
 	further_input->setAcceptRichText (false);
 	further_input->setPlainText (options_further);
-	connect (further_input, SIGNAL (textChanged()), this, SLOT (settingChanged()));
+	connect (further_input, &QTextEdit::textChanged, this, &RKSettingsModuleR::settingChanged);
 	grid->addWidget (further_input, ++row, 0, 1, 2);
 
 	main_vbox->addStretch ();
@@ -357,21 +357,21 @@ RKSettingsModuleRPackages::RKSettingsModuleRPackages (RKSettings *gui, QWidget *
 	main_vbox->addLayout (hbox);
 	cran_mirror_input = new QLineEdit (cran_mirror_url, this);
 	if (cran_mirror_url == "@CRAN@") cran_mirror_input->clear ();
-	connect (cran_mirror_input, SIGNAL (textChanged(QString)), this, SLOT (settingChanged()));
+	connect (cran_mirror_input, &QLineEdit::textChanged, this, &RKSettingsModuleRPackages::settingChanged);
 	hbox->addWidget (cran_mirror_input);
 	QPushButton* cran_mirror_button = new QPushButton (i18n ("Select mirror"), this);
-	connect (cran_mirror_button, SIGNAL (clicked()), this, SLOT (selectCRANMirror()));
+	connect (cran_mirror_button, &QPushButton::clicked, this, &RKSettingsModuleRPackages::selectCRANMirror);
 	hbox->addWidget (cran_mirror_button);
 
 	repository_selector = new MultiStringSelector (i18n ("Additional package repositories (where libraries are downloaded from)"), this);
 	repository_selector->setValues (package_repositories);
-	connect (repository_selector, SIGNAL (listChanged()), this, SLOT (settingChanged()));
-	connect (repository_selector, SIGNAL (getNewStrings(QStringList*)), this, SLOT (addRepository(QStringList*)));
+	connect (repository_selector, &MultiStringSelector::listChanged, this, &RKSettingsModuleRPackages::settingChanged);
+	connect (repository_selector, &MultiStringSelector::getNewStrings, this, &RKSettingsModuleRPackages::addRepository);
 	main_vbox->addWidget (repository_selector);
 
 	archive_packages_box = new QCheckBox (i18n ("Archive downloaded packages"), this);
 	archive_packages_box->setChecked (archive_packages);
-	connect (archive_packages_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (archive_packages_box, &QCheckBox::stateChanged, this, &RKSettingsModuleRPackages::settingChanged);
 	main_vbox->addWidget (archive_packages_box);
 
 #if defined Q_WS_WIN || defined Q_WS_MAC
@@ -383,15 +383,15 @@ RKSettingsModuleRPackages::RKSettingsModuleRPackages (RKSettings *gui, QWidget *
 	source_packages_box->setEnabled (false);
 #endif
 	RKCommonFunctions::setTips (QString ("<p>%1</p>").arg (i18n ("Installing packages from pre-compiled binaries (if available) is generally faster, and does not require an installation of development tools and libraries. On the other hand, building packages from source provides best compatibility. On Mac OS X and Linux, building packages from source is currently recommended.")), source_packages_box);
-	connect (source_packages_box, SIGNAL (stateChanged(int)), this, SLOT (settingChanged()));
+	connect (source_packages_box, &QCheckBox::stateChanged, this, &RKSettingsModuleRPackages::settingChanged);
 	main_vbox->addWidget (source_packages_box);
 
 	main_vbox->addStretch ();
 
 	libloc_selector = new MultiStringSelector (i18n ("R Library locations (where libraries get installed to, locally)"), this);
 	libloc_selector->setValues (liblocs);
-	connect (libloc_selector, SIGNAL (listChanged()), this, SLOT (settingChanged()));
-	connect (libloc_selector, SIGNAL (getNewStrings(QStringList*)), this, SLOT (addLibLoc(QStringList*)));
+	connect (libloc_selector, &MultiStringSelector::listChanged, this, &RKSettingsModuleRPackages::settingChanged);
+	connect (libloc_selector, &MultiStringSelector::getNewStrings, this, &RKSettingsModuleRPackages::addLibLoc);
 	main_vbox->addWidget (libloc_selector);
 	QLabel *label = new QLabel (i18n ("Note: The startup defaults will always be used in addition to the locations you specify in this list"), this);
 	main_vbox->addWidget (label);
diff --git a/rkward/settings/rksettingsmodulewatch.cpp b/rkward/settings/rksettingsmodulewatch.cpp
index 02ab905..43201f6 100644
--- a/rkward/settings/rksettingsmodulewatch.cpp
+++ b/rkward/settings/rksettingsmodulewatch.cpp
@@ -151,7 +151,7 @@ RKSettingsModuleWatch::RKSettingsModuleWatch (RKSettings *gui, QWidget *parent)
 	vbox->addWidget (new QLabel (i18n ("Maximum number of paragraphs/lines to display in the Command Log"), this));
 	max_log_lines_spinner = new KIntSpinBox (0, 10000, 10, max_log_lines, this);
 	max_log_lines_spinner->setSpecialValueText (i18n ("Unlimited"));
-	connect (max_log_lines_spinner, SIGNAL (valueChanged(int)), this, SLOT (changedSetting(int)));
+	connect (max_log_lines_spinner, static_cast<void (KIntSpinBox::*)(int)>(&KIntSpinBox::valueChanged), this, &RKSettingsModuleWatch::changedSetting);
 	vbox->addWidget (max_log_lines_spinner);
 
 	vbox->addStretch ();
@@ -188,22 +188,22 @@ RKSettingsModuleWatch::FilterBoxes *RKSettingsModuleWatch::addFilterSettings (QW
 	
 	filter_boxes->input = new QCheckBox (parent);
 	filter_boxes->input->setChecked (state & ShowInput);
-	connect (filter_boxes->input, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (filter_boxes->input, &QCheckBox::stateChanged, this, &RKSettingsModuleWatch::changedSetting);
 	layout->addWidget (filter_boxes->input, row, 1);
 	
 	filter_boxes->output = new QCheckBox (parent);
 	filter_boxes->output->setChecked (state & ShowOutput);
-	connect (filter_boxes->output, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (filter_boxes->output, &QCheckBox::stateChanged, this, &RKSettingsModuleWatch::changedSetting);
 	layout->addWidget (filter_boxes->output, row, 2);
 	
 	filter_boxes->error = new QCheckBox (parent);
 	filter_boxes->error->setChecked (state & ShowError);
-	connect (filter_boxes->error, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (filter_boxes->error, &QCheckBox::stateChanged, this, &RKSettingsModuleWatch::changedSetting);
 	layout->addWidget (filter_boxes->error, row, 3);
 	
 	filter_boxes->raise = new QCheckBox (parent);
 	filter_boxes->raise->setChecked (state & RaiseWindow);
-	connect (filter_boxes->raise, SIGNAL (stateChanged(int)), this, SLOT (changedSetting(int)));
+	connect (filter_boxes->raise, &QCheckBox::stateChanged, this, &RKSettingsModuleWatch::changedSetting);
 	layout->addWidget (filter_boxes->raise, row, 4);
 	
 	return filter_boxes;
diff --git a/rkward/windows/rcontrolwindow.cpp b/rkward/windows/rcontrolwindow.cpp
index 51c9d98..88674d1 100644
--- a/rkward/windows/rcontrolwindow.cpp
+++ b/rkward/windows/rcontrolwindow.cpp
@@ -49,17 +49,17 @@ RControlWindow::RControlWindow (QWidget *parent, bool tool_window, const char *n
 	main_vbox->addLayout (button_hbox);
 
 	QPushButton *configure_r_button = new QPushButton (i18n ("Configure R backend"), this);
-	connect (configure_r_button, SIGNAL (clicked()), this, SLOT (configureButtonClicked()));
+	connect (configure_r_button, &QPushButton::clicked, this, &RControlWindow::configureButtonClicked);
 	button_hbox->addWidget (configure_r_button);
 	button_hbox->addStretch ();
 
 	pause_button = new QPushButton (i18n ("Pause execution"), this);
-	connect (pause_button, SIGNAL (clicked()), this, SLOT (pauseButtonClicked()));
+	connect (pause_button, &QPushButton::clicked, this, &RControlWindow::pauseButtonClicked);
 	button_hbox->addWidget (pause_button);
 	button_hbox->addStretch ();
 
 	cancel_button = new QPushButton (i18n ("Cancel selected commands"), this);
-	connect (cancel_button, SIGNAL (clicked()), this, SLOT (cancelButtonClicked()));
+	connect (cancel_button, &QPushButton::clicked, this, &RControlWindow::cancelButtonClicked);
 	button_hbox->addWidget (cancel_button);
 
 	commands_view = new QTreeView (this);
diff --git a/rkward/windows/rkcallstackviewer.cpp b/rkward/windows/rkcallstackviewer.cpp
index 17d45ad..1fd2482 100644
--- a/rkward/windows/rkcallstackviewer.cpp
+++ b/rkward/windows/rkcallstackviewer.cpp
@@ -97,7 +97,7 @@ RKCallstackViewerWidget::RKCallstackViewerWidget (QWidget *parent) : QWidget (pa
 	v_layout->addWidget (label);
 	frame_selector = new QListWidget (this);
 	frame_selector->setSelectionMode (QAbstractItemView::SingleSelection);
-	connect (frame_selector, SIGNAL (currentRowChanged(int)), this, SLOT (frameChanged(int)));
+	connect (frame_selector, &QListWidget::currentRowChanged, this, &RKCallstackViewerWidget::frameChanged);
 	v_layout->addWidget (frame_selector);
 
 	v_layout = new QVBoxLayout ();
diff --git a/rkward/windows/rkcommandeditorwindow.cpp b/rkward/windows/rkcommandeditorwindow.cpp
index 1e77f53..703319a 100644
--- a/rkward/windows/rkcommandeditorwindow.cpp
+++ b/rkward/windows/rkcommandeditorwindow.cpp
@@ -116,11 +116,11 @@ RKCommandEditorWindow::RKCommandEditorWindow (QWidget *parent, bool use_r_highli
 
 	connect (m_doc, SIGNAL (documentUrlChanged(KTextEditor::Document*)), this, SLOT (updateCaption(KTextEditor::Document*)));
 	connect (m_doc, SIGNAL (modifiedChanged(KTextEditor::Document*)), this, SLOT (updateCaption(KTextEditor::Document*)));                // of course most of the time this causes a redundant call to updateCaption. Not if a modification is undone, however.
-	connect (m_doc, SIGNAL (modifiedChanged(KTextEditor::Document*)), this, SLOT (autoSaveHandlerModifiedChanged()));
-	connect (m_doc, SIGNAL (textChanged(KTextEditor::Document*)), this, SLOT (autoSaveHandlerTextChanged()));
-	connect (m_view, SIGNAL (selectionChanged(KTextEditor::View*)), this, SLOT (selectionChanged(KTextEditor::View*)));
+	connect (m_doc, &KTextEditor::Document::modifiedChanged, this, &RKCommandEditorWindow::autoSaveHandlerModifiedChanged);
+	connect (m_doc, &KTextEditor::Document::textChanged, this, &RKCommandEditorWindow::autoSaveHandlerTextChanged);
+	connect (m_view, &KTextEditor::View::selectionChanged, this, &RKCommandEditorWindow::selectionChanged);
 	// somehow the katepart loses the context menu each time it loses focus
-	connect (m_view, SIGNAL (focusIn(KTextEditor::View*)), this, SLOT (focusIn(KTextEditor::View*)));
+	connect (m_view, &KTextEditor::View::focusIn, this, &RKCommandEditorWindow::focusIn);
 
 	completion_model = 0;
 	cc_iface = 0;
@@ -134,8 +134,8 @@ RKCommandEditorWindow::RKCommandEditorWindow (QWidget *parent, bool use_r_highli
 				completion_model = new RKCodeCompletionModel (this);
 				completion_timer = new QTimer (this);
 				completion_timer->setSingleShot (true);
-				connect (completion_timer, SIGNAL (timeout()), this, SLOT (tryCompletion()));
-				connect (m_doc, SIGNAL (textChanged(KTextEditor::Document*)), this, SLOT (tryCompletionProxy(KTextEditor::Document*)));
+				connect (completion_timer, &QTimer::timeout, this, &RKCommandEditorWindow::tryCompletion);
+				connect (m_doc, &KTextEditor::Document::textChanged, this, &RKCommandEditorWindow::tryCompletionProxy);
 			} else {
 				RK_ASSERT (false);
 			}
@@ -148,7 +148,7 @@ RKCommandEditorWindow::RKCommandEditorWindow (QWidget *parent, bool use_r_highli
 	RK_ASSERT (smart_iface);
 
 	autosave_timer = new QTimer (this);
-	connect (autosave_timer, SIGNAL (timeout()), this, SLOT (doAutoSave()));
+	connect (autosave_timer, &QTimer::timeout, this, &RKCommandEditorWindow::doAutoSave);
 
 	updateCaption ();	// initialize
 	QTimer::singleShot (0, this, SLOT (setPopupMenu()));
@@ -408,7 +408,7 @@ void RKCommandEditorWindow::autoSaveHandlerModifiedChanged () {
 		} else {
 			RKJobSequence* dummy = new RKJobSequence ();
 			dummy->addJob (KIO::del (previous_autosave_url));
-			connect (dummy, SIGNAL (finished(RKJobSequence*)), this, SLOT (autoSaveHandlerJobFinished(RKJobSequence*)));
+			connect (dummy, &RKJobSequence::finished, this, &RKCommandEditorWindow::autoSaveHandlerJobFinished);
 			dummy->start ();
 		}
 		previous_autosave_url.clear ();
@@ -441,7 +441,7 @@ void RKCommandEditorWindow::doAutoSave () {
 	RKJobSequence* alljobs = new RKJobSequence ();
 	// The KJob-Handling below seems to be a bit error-prone, at least for the file-protocol on Windows.
 	// Thus, for the simple case of local files, we use QFile, instead.
-	connect (alljobs, SIGNAL (finished(RKJobSequence*)), this, SLOT (autoSaveHandlerJobFinished(RKJobSequence*)));
+	connect (alljobs, &RKJobSequence::finished, this, &RKCommandEditorWindow::autoSaveHandlerJobFinished);
 	// backup the old autosave file in case something goes wrong during pushing the new one
 	QUrl backup_autosave_url;
 	if (previous_autosave_url.isValid ()) {
@@ -879,7 +879,7 @@ RKFunctionArgHinter::RKFunctionArgHinter (RKScriptContextProvider *provider, KTe
 	arghints_popup->hide ();
 	active = false;
 
-	connect (&updater, SIGNAL (timeout()), this, SLOT (updateArgHintWindow()));
+	connect (&updater, &QTimer::timeout, this, &RKFunctionArgHinter::updateArgHintWindow);
 }
 
 RKFunctionArgHinter::~RKFunctionArgHinter () {
diff --git a/rkward/windows/rkdebugconsole.cpp b/rkward/windows/rkdebugconsole.cpp
index 70a0050..027b705 100644
--- a/rkward/windows/rkdebugconsole.cpp
+++ b/rkward/windows/rkdebugconsole.cpp
@@ -52,19 +52,19 @@ RKDebugConsole::RKDebugConsole (QWidget *parent, bool tool_window, const char *n
 	QVBoxLayout *button_layout = new QVBoxLayout ();
 	upper_layout->addLayout (button_layout);
 	step_button = new QPushButton (i18n ("Next"), this);
-	connect (step_button, SIGNAL (clicked()), this, SLOT (stepButtonClicked()));
+	connect (step_button, &QPushButton::clicked, this, &RKDebugConsole::stepButtonClicked);
 	button_layout->addWidget (step_button);
 	step_out_button = new QPushButton (i18n ("Step out"), this);
-	connect (step_out_button, SIGNAL (clicked()), this, SLOT (stepOutButtonClicked()));
+	connect (step_out_button, &QPushButton::clicked, this, &RKDebugConsole::stepOutButtonClicked);
 	RKCommonFunctions::setTips (i18n ("<p>Continue until the caller of this function is reached (unless another debug statement is hit, earlier)</p>"
 	                                  "<p><b>Note:</b> In some cases, the calling function will never be reached, because the call was the last step in the caller. "
 	                                  "In these cases, the behavior is identical to 'Continue'.</p>"), step_out_button);
 	button_layout->addWidget (step_out_button);
 	continue_button = new QPushButton (i18n ("Continue"), this);
-	connect (continue_button, SIGNAL (clicked()), this, SLOT (continueButtonClicked()));
+	connect (continue_button, &QPushButton::clicked, this, &RKDebugConsole::continueButtonClicked);
 	button_layout->addWidget (continue_button);
 	cancel_button = new QPushButton (i18n ("Cancel"), this);
-	connect (cancel_button, SIGNAL (clicked()), this, SLOT (cancelButtonClicked()));
+	connect (cancel_button, &QPushButton::clicked, this, &RKDebugConsole::cancelButtonClicked);
 	button_layout->addWidget (cancel_button);
 	button_layout->addStretch ();
 
@@ -75,7 +75,7 @@ RKDebugConsole::RKDebugConsole (QWidget *parent, bool tool_window, const char *n
 	lower_layout->addWidget (prompt_label);
 	reply_edit = new KHistoryComboBox (this);
 	reply_edit->setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
-	connect (reply_edit, SIGNAL (returnPressed()), this, SLOT (sendReply()));
+	connect (reply_edit, static_cast<void (KHistoryComboBox::*)()>(&KHistoryComboBox::returnPressed), this, &RKDebugConsole::sendReplySlot);
 	lower_layout->addWidget (reply_edit);
 	setFocusProxy (reply_edit);
 
@@ -84,7 +84,7 @@ RKDebugConsole::RKDebugConsole (QWidget *parent, bool tool_window, const char *n
 	setPart (new RKDummyPart (this, this));
 	initializeActivationSignals ();
 
-	connect (RKDebugHandler::instance (), SIGNAL (newDebugState()), this, SLOT (newDebugState()));
+	connect (RKDebugHandler::instance (), &RKDebugHandler::newDebugState, this, &RKDebugConsole::newDebugState);
 	newDebugState ();
 }
 
@@ -124,7 +124,7 @@ void RKDebugConsole::newDebugState () {
 	cancel_button->setEnabled (enable);
 }
 
-void RKDebugConsole::sendReply () {
+void RKDebugConsole::sendReplySlot () {
 	RK_TRACE (APP);
 
 	QString reply = reply_edit->currentText ();
diff --git a/rkward/windows/rkdebugconsole.h b/rkward/windows/rkdebugconsole.h
index 757bc56..70be926 100644
--- a/rkward/windows/rkdebugconsole.h
+++ b/rkward/windows/rkdebugconsole.h
@@ -39,7 +39,7 @@ public:
 public slots:
 	void newDebugState ();
 private slots:
-	void sendReply ();
+	void sendReplySlot ();
 	void stepButtonClicked ();
 	void stepOutButtonClicked ();
 	void continueButtonClicked ();
diff --git a/rkward/windows/rkfilebrowser.cpp b/rkward/windows/rkfilebrowser.cpp
index f00c32f..2511717 100644
--- a/rkward/windows/rkfilebrowser.cpp
+++ b/rkward/windows/rkfilebrowser.cpp
@@ -118,13 +118,13 @@ RKFileBrowserWidget::RKFileBrowserWidget (QWidget *parent) : KVBox (parent) {
 //	toolbar->addAction (dir->actionCollection ()->action ("detailed tree view"));	// should we have this as well? Trying to avoid crowding in the toolbar
 
 	fi_actions = new KFileItemActions (this);
-	connect (dir, SIGNAL (contextMenuAboutToShow(KFileItem,QMenu*)), this, SLOT (contextMenuHook(KFileItem,QMenu*)));
+	connect (dir, &KDirOperator::contextMenuAboutToShow, this, &RKFileBrowserWidget::contextMenuHook);
 
-	connect (dir, SIGNAL (urlEntered(QUrl)), this, SLOT (urlChangedInView(QUrl)));
-	connect (urlbox, SIGNAL (returnPressed(QString)), this, SLOT (urlChangedInCombo(QString)));
-	connect (urlbox, SIGNAL (urlActivated(QUrl)), this, SLOT (urlChangedInCombo(QUrl)));
+	connect (dir, &KDirOperator::urlEntered, this, &RKFileBrowserWidget::urlChangedInView);
+	connect (urlbox, static_cast<void (KUrlComboBox::*)(const QString&)>(&KUrlComboBox::returnPressed), this, &RKFileBrowserWidget::stringChangedInCombo);
+	connect (urlbox, &KUrlComboBox::urlActivated, this, &RKFileBrowserWidget::urlChangedInCombo);
 
-	connect (dir, SIGNAL (fileSelected(KFileItem)), this, SLOT (fileActivated(KFileItem)));
+	connect (dir, &KDirOperator::fileSelected, this, &RKFileBrowserWidget::fileActivated);
 
 	setURL (QUrl::fromLocalFile (QDir::currentPath ()));
 }
@@ -175,7 +175,7 @@ void RKFileBrowserWidget::urlChangedInView (const QUrl &url) {
 	urlbox->setUrl (url);
 }
 
-void RKFileBrowserWidget::urlChangedInCombo (const QString &url) {
+void RKFileBrowserWidget::stringChangedInCombo (const QString &url) {
 	RK_TRACE (APP);
 
 	dir->setUrl (QUrl::fromUserInput (url, QDir::currentPath (), QUrl::AssumeLocalFile), true);
diff --git a/rkward/windows/rkfilebrowser.h b/rkward/windows/rkfilebrowser.h
index 34b0a13..56e92e4 100644
--- a/rkward/windows/rkfilebrowser.h
+++ b/rkward/windows/rkfilebrowser.h
@@ -65,7 +65,7 @@ public:
 	bool eventFilter (QObject* o, QEvent* e) override;
 public slots:
 	void urlChangedInView (const QUrl &url);
-	void urlChangedInCombo (const QString &url);
+	void stringChangedInCombo (const QString &url);
 	void urlChangedInCombo (const QUrl &url);
 	void fileActivated (const KFileItem& item);
 	void saveConfig ();
diff --git a/rkward/windows/rkhelpsearchwindow.cpp b/rkward/windows/rkhelpsearchwindow.cpp
index d597eff..b247695 100644
--- a/rkward/windows/rkhelpsearchwindow.cpp
+++ b/rkward/windows/rkhelpsearchwindow.cpp
@@ -118,7 +118,7 @@ RKHelpSearchWindow::RKHelpSearchWindow (QWidget *parent, bool tool_window, const
 
 	findButton = new QPushButton (i18n ("Find"), this);
 	findButton->setSizePolicy (QSizePolicy::Fixed, QSizePolicy::Fixed);
-	connect (findButton, SIGNAL (clicked()), this, SLOT (slotFindButtonClicked()));
+	connect (findButton, &QPushButton::clicked, this, &RKHelpSearchWindow::slotFindButtonClicked);
 	selection_layout->addWidget (findButton);
 
 	results = new RKHelpSearchResultsModel (this);
@@ -128,7 +128,7 @@ RKHelpSearchWindow::RKHelpSearchWindow (QWidget *parent, bool tool_window, const
 	results_view->setRootIsDecorated (false);
 	results_view->setModel (proxy_model);
 	results_view->setSortingEnabled (true);
-	connect (results_view, SIGNAL (doubleClicked(QModelIndex)), this, SLOT (resultDoubleClicked(QModelIndex)));
+	connect (results_view, &QTreeView::doubleClicked, this, &RKHelpSearchWindow::resultDoubleClicked);
 	main_layout->addWidget (results_view);
 
 	setCaption (i18n ("Help search"));
diff --git a/rkward/windows/rkhtmlwindow.cpp b/rkward/windows/rkhtmlwindow.cpp
index 45f7715..6fa674e 100644
--- a/rkward/windows/rkhtmlwindow.cpp
+++ b/rkward/windows/rkhtmlwindow.cpp
@@ -132,7 +132,7 @@ RKHTMLWindow::RKHTMLWindow (QWidget *parent, WindowMode mode) : RKMDIWindow (par
 	findbar = new RKFindBar (this);
 	layout->addWidget (findbar);
 	findbar->hide ();
-	connect (findbar, SIGNAL(findRequest(QString,bool,const RKFindBar*,bool*)), this, SLOT(findRequest(QString,bool,const RKFindBar*,bool*)));
+	connect (findbar, &RKFindBar::findRequest, this, &RKHTMLWindow::findRequest);
 	have_highlight = false;
 
 	part = new RKHTMLWindowPart (this);
@@ -144,10 +144,10 @@ RKHTMLWindow::RKHTMLWindow (QWidget *parent, WindowMode mode) : RKMDIWindow (par
 	setFocusProxy (view);
 
 	// We have to connect this in order to allow browsing.
-	connect (page, SIGNAL (pageInternalNavigation(QUrl)), this, SLOT (internalNavigation(QUrl)));
-	connect (page, SIGNAL (downloadRequested(QNetworkRequest)), this, SLOT (saveRequested(QNetworkRequest)));
-	connect (page, SIGNAL (printRequested(QWebFrame*)), this, SLOT(slotPrint()));
-	connect (view, SIGNAL (customContextMenuRequested(QPoint)), this, SLOT(makeContextMenu(QPoint)));
+	connect (page, &RKWebPage::pageInternalNavigation, this, &RKHTMLWindow::internalNavigation);
+	connect (page, &RKWebPage::downloadRequested, this, &RKHTMLWindow::saveRequested);
+	connect (page, &RKWebPage::printRequested, this, &RKHTMLWindow::slotPrint);
+	connect (view, &KWebView::customContextMenuRequested, this, &RKHTMLWindow::makeContextMenu);
 
 	current_history_position = -1;
 	url_change_is_from_history = false;
@@ -156,7 +156,7 @@ RKHTMLWindow::RKHTMLWindow (QWidget *parent, WindowMode mode) : RKMDIWindow (par
 	useMode (mode);
 
 	// needed to enable / disable the run selection action
-	connect (view, SIGNAL (selectionChanged()), this, SLOT (selectionChanged()));
+	connect (view, &KWebView::selectionChanged, this, &RKHTMLWindow::selectionChanged);
 	selectionChanged ();
 }
 
@@ -383,9 +383,9 @@ bool RKHTMLWindow::openURL (const QUrl &url) {
 		QString host = url.host ();
 		if ((host == "127.0.0.1") || (host == "localhost") || host == QHostInfo::localHostName ()) {
 			KIO::TransferJob *job = KIO::get (url, KIO::Reload);
-			connect (job, SIGNAL (mimetype(KIO::Job*,QString)), this, SLOT (mimeTypeDetermined(KIO::Job*,QString)));
+			connect (job, static_cast<void (KIO::TransferJob::*)(KIO::Job*, const QString&)>(&KIO::TransferJob::mimetype), this, &RKHTMLWindow::mimeTypeDetermined);
 			// WORKAROUND. See slot.
-			connect (job, SIGNAL (result(KJob*)), this, SLOT (mimeTypeJobFail(KJob*)));
+			connect (job, &KIO::TransferJob::result, this, &RKHTMLWindow::mimeTypeJobFail);
 			return true;
 		}
 	}
@@ -409,8 +409,8 @@ void RKHTMLWindow::mimeTypeJobFail (KJob* job) {
 		QUrl url = tj->url ();
 		if (!tj->redirectUrl ().isEmpty ()) url = tj->redirectUrl ();
 		KIO::TransferJob *secondchance = KIO::get (url, KIO::Reload);
-		connect (secondchance, SIGNAL (mimetype(KIO::Job*,QString)), this, SLOT (mimeTypeDetermined(KIO::Job*,QString)));
-		connect (secondchance, SIGNAL (result(KJob*)), this, SLOT (mimeTypeJobFail2(KJob*)));
+		connect (secondchance, static_cast<void (KIO::TransferJob::*)(KIO::Job*, const QString&)>(&KIO::TransferJob::mimetype), this, &RKHTMLWindow::mimeTypeDetermined);
+		connect (secondchance, &KIO::TransferJob::result, this, &RKHTMLWindow::mimeTypeJobFail2);
 	}
 }
 
@@ -519,7 +519,7 @@ void RKHTMLWindow::useMode (WindowMode new_mode) {
 		setWindowIcon (RKStandardIcons::getIcon (RKStandardIcons::WindowOutput));
 		part->setOutputWindowSkin ();
 		setMetaInfo (i18n ("Output Window"), QUrl ("rkward://page/rkward_output"), RKSettings::PageOutput);
-		connect (page, SIGNAL(loadFinished(bool)), this, SLOT(scrollToBottom()));
+		connect (page, &RKWebPage::loadFinished, this, &RKHTMLWindow::scrollToBottom);
 //	TODO: This would be an interesting extension, but how to deal with concurrent edits?
 //		page->setContentEditable (true);
 	} else {
@@ -528,7 +528,7 @@ void RKHTMLWindow::useMode (WindowMode new_mode) {
 		type = RKMDIWindow::HelpWindow | RKMDIWindow::DocumentWindow;
 		setWindowIcon (RKStandardIcons::getIcon (RKStandardIcons::WindowHelp));
 		part->setHelpWindowSkin ();
-		disconnect (page, SIGNAL(loadFinished(bool)), this, SLOT(scrollToBottom()));
+		disconnect (page, &RKWebPage::loadFinished, this, &RKHTMLWindow::scrollToBottom);
 	}
 
 	updateCaption (current_url);
@@ -609,15 +609,15 @@ void RKHTMLWindowPart::initActions () {
 	// common actions
 	actionCollection ()->addAction (KStandardAction::Copy, "copy", window->view->pageAction (QWebPage::Copy), SLOT (trigger()));
 	QAction* zoom_in = actionCollection ()->addAction ("zoom_in", new QAction (KIcon ("zoom-in"), i18n ("Zoom In"), this));
-	connect (zoom_in, SIGNAL(triggered(bool)), window, SLOT (zoomIn()));
+	connect (zoom_in, &QAction::triggered, window, &RKHTMLWindow::zoomIn);
 	QAction* zoom_out = actionCollection ()->addAction ("zoom_out", new QAction (KIcon ("zoom-out"), i18n ("Zoom Out"), this));
-	connect (zoom_out, SIGNAL(triggered(bool)), window, SLOT (zoomOut()));
+	connect (zoom_out, &QAction::triggered, window, &RKHTMLWindow::zoomOut);
 	actionCollection ()->addAction (KStandardAction::SelectAll, "select_all", window->view->pageAction (QWebPage::SelectAll), SLOT (trigger()));
 	// unfortunately, this will only affect the default encoding, not necessarily the "real" encoding
 	KCodecAction *encoding = new KCodecAction (KIcon ("character-set"), i18n ("Default &Encoding"), this, true);
 	encoding->setStatusTip (i18n ("Set the encoding to assume in case no explicit encoding has been set in the page or in the HTTP headers."));
 	actionCollection ()->addAction ("view_encoding", encoding);
-	connect (encoding, SIGNAL (triggered(QTextCodec*)), window, SLOT (setTextEncoding(QTextCodec*)));
+	connect (encoding, static_cast<void (KCodecAction::*)(QTextCodec *)>(&KCodecAction::triggered), window, &RKHTMLWindow::setTextEncoding);
 
 	print = actionCollection ()->addAction (KStandardAction::Print, "print_html", window, SLOT (slotPrint()));
 	save_page = actionCollection ()->addAction (KStandardAction::Save, "save_html", window, SLOT (slotSave()));
@@ -1001,8 +1001,8 @@ RKOutputWindowManager::RKOutputWindowManager () : QObject () {
 	RK_TRACE (APP);
 
 	file_watcher = new KDirWatch (this);
-	connect (file_watcher, SIGNAL (dirty(QString)), this, SLOT (fileChanged(QString)));
-	connect (file_watcher, SIGNAL (created(QString)), this, SLOT (fileChanged(QString)));
+	connect (file_watcher, &KDirWatch::dirty, this, &RKOutputWindowManager::fileChanged);
+	connect (file_watcher, &KDirWatch::created, this, &RKOutputWindowManager::fileChanged);
 }
 
 RKOutputWindowManager::~RKOutputWindowManager () {
@@ -1031,7 +1031,7 @@ void RKOutputWindowManager::registerWindow (RKHTMLWindow *window) {
 		}
 	
 		windows.insertMulti (file, window);
-		connect (window, SIGNAL (destroyed(QObject*)), this, SLOT (windowDestroyed(QObject*)));
+		connect (window, &RKHTMLWindow::destroyed, this, &RKOutputWindowManager::windowDestroyed);
 	} else {
 		RK_ASSERT (false);
 	}
diff --git a/rkward/windows/rktoolwindowbar.cpp b/rkward/windows/rktoolwindowbar.cpp
index 0b77d0c..8ae04a0 100644
--- a/rkward/windows/rktoolwindowbar.cpp
+++ b/rkward/windows/rktoolwindowbar.cpp
@@ -120,7 +120,7 @@ void RKToolWindowBar::setSplitter (QSplitter *splitter) {
 	container->layout ()->setMargin (0);
 	container->hide ();
 
-	connect (splitter, SIGNAL(splitterMoved(int,int)), this, SLOT(splitterMoved(int,int)));
+	connect (splitter, &QSplitter::splitterMoved, this, &RKToolWindowBar::splitterMoved);
 }
 
 void RKToolWindowBar::addWidget (RKMDIWindow *window) {
@@ -277,7 +277,7 @@ bool RKToolWindowBar::eventFilter (QObject *obj, QEvent *ev) {
 				KMenu menu (this);
 
 				QAction *a = menu.addAction (RKStandardIcons::getIcon (widget->isAttached () ? RKStandardIcons::ActionDetachWindow : RKStandardIcons::ActionAttachWindow), widget->isAttached () ? i18n("Detach") : i18n("Attach"));
-				connect (a, SIGNAL (triggered(bool)), this, SLOT (changeAttachment()));
+				connect (a, &QAction::triggered, this, &RKToolWindowBar::changeAttachment);
 
 				KSelectAction *sel = new KSelectAction (i18n ("Position"), &menu);
 				sel->addAction (RKStandardIcons::getIcon (RKStandardIcons::ActionMoveLeft), i18n ("Left Sidebar"));
@@ -285,7 +285,7 @@ bool RKToolWindowBar::eventFilter (QObject *obj, QEvent *ev) {
 				sel->addAction (RKStandardIcons::getIcon (RKStandardIcons::ActionMoveUp), i18n ("Top Sidebar"));
 				sel->addAction (RKStandardIcons::getIcon (RKStandardIcons::ActionMoveDown), i18n ("Bottom Sidebar"));
 				sel->addAction (RKStandardIcons::getIcon (RKStandardIcons::ActionDelete), i18n ("Not shown in sidebar"));
-				connect (sel, SIGNAL (triggered(int)), this, SLOT (moveToolWindow(int)));
+				connect (sel, static_cast<void (KSelectAction::*)(int)>(&KSelectAction::triggered), this, &RKToolWindowBar::moveToolWindow);
 				menu.addAction (sel);
 	
 				menu.exec (e->globalPos());
diff --git a/rkward/windows/rkwindowcatcher.cpp b/rkward/windows/rkwindowcatcher.cpp
index fb9aaeb..f1dc87d 100644
--- a/rkward/windows/rkwindowcatcher.cpp
+++ b/rkward/windows/rkwindowcatcher.cpp
@@ -48,7 +48,7 @@ void RKWindowCatcher::start (int prev_cur_device) {
 
 	last_cur_device = prev_cur_device;
 	created_window = 0;
-	connect (KWindowSystem::self (), SIGNAL (windowAdded(WId)), this, SLOT (windowAdded(WId)));
+	connect (KWindowSystem::self(), &KWindowSystem::windowAdded, this, &RKWindowCatcher::windowAdded);
 }
 
 void RKWindowCatcher::stop (int new_cur_device) {
@@ -59,7 +59,7 @@ void RKWindowCatcher::stop (int new_cur_device) {
 		// we did not see the window, yet? Maybe the event simply hasn't been processed, yet.
 		qApp->processEvents ();
 	}
-	disconnect (KWindowSystem::self (), SIGNAL (windowAdded(WId)), this, SLOT (windowAdded(WId)));
+	disconnect (KWindowSystem::self(), &KWindowSystem::windowAdded, this, &RKWindowCatcher::windowAdded);
 
 	if (new_cur_device != last_cur_device) {
 		if (created_window) {
@@ -105,7 +105,7 @@ void RKWindowCatcher::registerNameWatcher (WId watched, RKMDIWindow *watcher) {
 	RK_ASSERT (!name_watchers_list.contains (watched));
 
 	if (name_watchers_list.isEmpty ()) {
-		connect (KWindowSystem::self (), SIGNAL (windowChanged(WId,NET::Properties,NET::Properties2)), this, SLOT (windowChanged(WId,NET::Properties,NET::Properties2)));
+		connect (KWindowSystem::self(), static_cast<void (KWindowSystem::*)(WId, NET::Properties, NET::Properties2)>(&KWindowSystem::windowChanged), this, &RKWindowCatcher::windowChanged);
 	}
 	name_watchers_list.insert (watched, watcher);
 }
@@ -116,7 +116,7 @@ void RKWindowCatcher::unregisterNameWatcher (WId watched) {
 
 	name_watchers_list.remove (watched);
 	if (name_watchers_list.isEmpty ()) {
-		disconnect (KWindowSystem::self (), SIGNAL (windowChanged(WId,NET::Properties,NET::Properties2)), this, SLOT (windowChanged(WId,NET::Properties,NET::Properties2)));
+		disconnect (KWindowSystem::self(), static_cast<void (KWindowSystem::*)(WId, NET::Properties, NET::Properties2)>(&KWindowSystem::windowChanged), this, &RKWindowCatcher::windowChanged);
 	}
 }
 
@@ -256,7 +256,7 @@ void RKCaughtX11Window::commonInit (int device_number) {
 
 	status_popup = new KPassivePopup (this);
 	status_popup->setTimeout (0);
-	disconnect (status_popup, SIGNAL (clicked()), status_popup, SLOT (hide()));	// no auto-hiding, please
+	disconnect (status_popup, static_cast<void (KPassivePopup::*)()>(&KPassivePopup::clicked), status_popup, &KPassivePopup::hide);
 
 	QVBoxLayout *layout = new QVBoxLayout (this);
 	layout->setContentsMargins (0, 0, 0, 0);
@@ -282,14 +282,14 @@ void RKCaughtX11Window::doEmbed () {
 		capture->setWindow (embedded);
 		capture->setFocusPolicy (Qt::ClickFocus);
 		capture->setAutoDestruct (true);
-		connect (capture, SIGNAL (clientDestroyed()), this, SLOT (deleteLater()), Qt::QueuedConnection);
-		connect (capture, SIGNAL (clientTitleChanged(QString)), this, SLOT (setCaption(QString)), Qt::QueuedConnection);
+		connect (capture, &QWidget::clientDestroyed, this, &RKCaughtX11Window::deleteLater, Qt::QueuedConnection);
+		connect (capture, &QWidget::clientTitleChanged, this, &RKCaughtX11Window::setCaption, Qt::QueuedConnection);
 
 		setCaption (capture->getClientTitle ());
 #elif defined Q_WS_X11
 		capture = new QX11EmbedContainer (xembed_container);
 		capture->embedClient (embedded);
-		connect (capture, SIGNAL (clientClosed()), this, SLOT (deleteLater()));
+		connect (capture, &QWidget::clientClosed, this, &RKCaughtX11Window::deleteLater);
 
 		RKWindowCatcher::registerNameWatcher (embedded, this);
 #endif
@@ -519,7 +519,7 @@ void RKCaughtX11Window::copyDeviceToRObject () {
 
 	new QLabel (i18n ("Specify the R object name, you want to save the graph to"), page);
 	RKSaveObjectChooser *chooser = new RKSaveObjectChooser (page, "my.plot");
-	connect (chooser, SIGNAL (changed(bool)), dialog, SLOT (enableButtonOk(bool)));
+	connect (chooser, &RKSaveObjectChooser::changed, dialog, &KDialog::enableButtonOk);
 	if (!chooser->isOk ()) dialog->enableButtonOk (false);
 
 	dialog->exec ();
@@ -679,7 +679,7 @@ RKCaughtX11WindowPart::RKCaughtX11WindowPart (RKCaughtX11Window *window) : KPart
 	setXMLFile ("rkcatchedx11windowpart.rc");
 
 	window->dynamic_size_action = new KToggleAction (i18n ("Draw area follows size of window"), window);
-	connect (window->dynamic_size_action, SIGNAL (triggered()), window, SLOT (fixedSizeToggled()));
+	connect (window->dynamic_size_action, &KToggleAction::triggered, window, &RKCaughtX11Window::fixedSizeToggled);
 	actionCollection ()->addAction ("toggle_fixed_size", window->dynamic_size_action);
 
 	QAction *action;
@@ -712,7 +712,7 @@ RKCaughtX11WindowPart::RKCaughtX11WindowPart (RKCaughtX11Window *window) : KPart
 	window->plot_list_action->setToolBarMode (KSelectAction::MenuMode);
 	action->setIcon (RKStandardIcons::getIcon (RKStandardIcons::ActionListPlots));
 	actionCollection ()->addAction ("plot_list", action);
-	connect (action, SIGNAL (triggered(int)), window, SLOT (gotoPlot(int)));
+	connect (action, &QAction::triggered, window, &RKCaughtX11Window::gotoPlot);
 
 	action = actionCollection ()->addAction ("plot_force_append", window, SLOT (forceAppendCurrentPlot()));
  	action->setText (i18n ("Append this plot"));
diff --git a/rkward/windows/rkworkplace.cpp b/rkward/windows/rkworkplace.cpp
index 3d5918a..9b7fc76 100644
--- a/rkward/windows/rkworkplace.cpp
+++ b/rkward/windows/rkworkplace.cpp
@@ -881,7 +881,7 @@ RKMDIWindowHistoryWidget* RKMDIWindowHistory::getSwitcher (QAction* prev_action,
 	if (switcher) return switcher;
 
 	switcher = new RKMDIWindowHistoryWidget ();
-	connect (switcher, SIGNAL (destroyed(QObject*)), this, SLOT (switcherDestroyed()));
+	connect (switcher, &RKMDIWindowHistoryWidget::destroyed, this, &RKMDIWindowHistory::switcherDestroyed);
 	switcher->addAction (prev_action);
 	switcher->addAction (next_action);
 	switcher->update (recent_windows);
diff --git a/rkward/windows/rkworkplaceview.cpp b/rkward/windows/rkworkplaceview.cpp
index fce1c81..cb275fc 100644
--- a/rkward/windows/rkworkplaceview.cpp
+++ b/rkward/windows/rkworkplaceview.cpp
@@ -45,12 +45,12 @@ RKWorkplaceView::RKWorkplaceView (QWidget *parent) : KTabWidget (parent) {
 	// close button(s)
 	QToolButton* close_button = new QToolButton (this);
 	close_button->setIcon (KIcon ("tab-close"));
-	connect (close_button, SIGNAL (clicked()), this, SLOT (closeCurrentPage()));
+	connect (close_button, &QToolButton::clicked, this, &RKWorkplaceView::closeCurrentPage);
 	close_button->adjustSize ();
 	setCornerWidget (close_button, Qt::TopRightCorner);
 
 	setTabsClosable (true);
-	connect (this, SIGNAL (tabCloseRequested(int)), this, SLOT (closePage(int)));
+	connect (this, &RKWorkplaceView::tabCloseRequested, this, static_cast<void (RKWorkplaceView::*)(int)>(&RKWorkplaceView::closePage));
 
 	setMovable (true);
 
@@ -59,7 +59,7 @@ RKWorkplaceView::RKWorkplaceView (QWidget *parent) : KTabWidget (parent) {
 
 	KAcceleratorManager::setNoAccel (tabBar ());	// TODO: This is a WORKAROUND for a bug in kdelibs where tabs named "a0.txt", "a1.txt", etc. will steal the Alt+0/1... shortcuts
 	setTabBarHidden (true);		// initially
-	connect (this, SIGNAL (currentChanged(int)), this, SLOT (currentPageChanged(int)));
+	connect (this, &RKWorkplaceView::currentChanged, this, &RKWorkplaceView::currentPageChanged);
 }
 
 RKWorkplaceView::~RKWorkplaceView () {
diff --git a/rkward/windows/robjectbrowser.cpp b/rkward/windows/robjectbrowser.cpp
index de672f9..3b51dda 100644
--- a/rkward/windows/robjectbrowser.cpp
+++ b/rkward/windows/robjectbrowser.cpp
@@ -136,14 +136,14 @@ RObjectBrowserInternal::RObjectBrowserInternal (QWidget *parent) : QWidget (pare
 	QAction* sep = list_view->contextMenu ()->insertSeparator (list_view->contextMenu ()->actions ().value (0));
 	list_view->contextMenu ()->insertActions (sep, actions);
 
-	connect (list_view, SIGNAL (aboutToShowContextMenu(RObject*,bool*)), this, SLOT (contextMenuCallback(RObject*,bool*)));
+	connect (list_view, &RKObjectListView::aboutToShowContextMenu, this, &RObjectBrowserInternal::contextMenuCallback);
 	
-	connect (list_view, SIGNAL (doubleClicked(QModelIndex)), this, SLOT (doubleClicked(QModelIndex)));
+	connect (list_view, &RKObjectListView::doubleClicked, this, &RObjectBrowserInternal::doubleClicked);
 	
 	resize (minimumSizeHint ().expandedTo (QSize (400, 480)));
 
 	list_view->initialize ();
-	connect (update_button, SIGNAL (clicked()), this, SLOT (updateButtonClicked()));
+	connect (update_button, &QPushButton::clicked, this, &RObjectBrowserInternal::updateButtonClicked);
 }
 
 RObjectBrowserInternal::~RObjectBrowserInternal () {



More information about the rkward-tracker mailing list