diff '--color=auto' -Nur a/liblxqt-config-cursor/selectwnd.cpp b/liblxqt-config-cursor/selectwnd.cpp
--- a/liblxqt-config-cursor/selectwnd.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/liblxqt-config-cursor/selectwnd.cpp	2025-11-06 06:44:30.260881953 +0000
@@ -75,7 +75,7 @@
     ui->cursorSizeSpinBox->setValue(getDefaultCursorSize());
 
 
-    connect(ui->cursorSizeSpinBox, &QSpinBox::valueChanged, this, &SelectWnd::cursorSizeChanged);
+    connect(ui->cursorSizeSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &SelectWnd::cursorSizeChanged);
 
     // Disable the install button if we can't install new themes to ~/.icons,
     // or Xcursor isn't set up to look for cursor themes there
diff '--color=auto' -Nur a/lxqt-config-appearance/fontsconfig.cpp b/lxqt-config-appearance/fontsconfig.cpp
--- a/lxqt-config-appearance/fontsconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-appearance/fontsconfig.cpp	2025-11-06 06:44:30.261096125 +0000
@@ -52,14 +52,14 @@
 
     initControls();
 
-    connect(ui->fontName, &QComboBox::activated, this, &FontsConfig::settingsChanged);
-    connect(ui->fontStyle, &QComboBox::activated, this, &FontsConfig::settingsChanged);
-    connect(ui->fontSize, &QSpinBox::valueChanged, this, &FontsConfig::settingsChanged);
+    connect(ui->fontName, QOverload<int>::of(&QComboBox::activated), this, &FontsConfig::settingsChanged);
+    connect(ui->fontStyle, QOverload<int>::of(&QComboBox::activated), this, &FontsConfig::settingsChanged);
+    connect(ui->fontSize, QOverload<int>::of(&QSpinBox::valueChanged), this, &FontsConfig::settingsChanged);
     connect(ui->antialias, &QAbstractButton::clicked, this, &FontsConfig::settingsChanged);
-    connect(ui->subpixel, &QComboBox::activated, this, &FontsConfig::settingsChanged);
+    connect(ui->subpixel, QOverload<int>::of(&QComboBox::activated), this, &FontsConfig::settingsChanged);
     connect(ui->hinting, &QAbstractButton::clicked, this, &FontsConfig::settingsChanged);
-    connect(ui->hintStyle, &QComboBox::activated, this, &FontsConfig::settingsChanged);
-    connect(ui->dpi, &QSpinBox::valueChanged, this, &FontsConfig::settingsChanged);
+    connect(ui->hintStyle, QOverload<int>::of(&QComboBox::activated), this, &FontsConfig::settingsChanged);
+    connect(ui->dpi, QOverload<int>::of(&QSpinBox::valueChanged), this, &FontsConfig::settingsChanged);
     connect(ui->autohint, &QAbstractButton::clicked, this, &FontsConfig::settingsChanged);
 }
 
diff '--color=auto' -Nur a/lxqt-config-appearance/gtkconfig.cpp b/lxqt-config-appearance/gtkconfig.cpp
--- a/lxqt-config-appearance/gtkconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-appearance/gtkconfig.cpp	2025-11-06 06:44:30.261247288 +0000
@@ -39,8 +39,8 @@
 
     connect(ui->advancedOptionsGroupBox, &QGroupBox::toggled, this, &GTKConfig::showAdvancedOptions);
     connect(ui->advancedOptionsGroupBox, &QGroupBox::clicked, this, &GTKConfig::settingsChanged);
-    connect(ui->gtk2ComboBox, &QComboBox::activated, this, &GTKConfig::settingsChanged);
-    connect(ui->gtk3ComboBox, &QComboBox::activated, this, &GTKConfig::settingsChanged);
+    connect(ui->gtk2ComboBox, QOverload<int>::of(&QComboBox::activated), this, &GTKConfig::settingsChanged);
+    connect(ui->gtk3ComboBox, QOverload<int>::of(&QComboBox::activated), this, &GTKConfig::settingsChanged);
 }
 
 GTKConfig::~GTKConfig()
diff '--color=auto' -Nur a/lxqt-config-appearance/styleconfig.cpp b/lxqt-config-appearance/styleconfig.cpp
--- a/lxqt-config-appearance/styleconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-appearance/styleconfig.cpp	2025-11-06 06:44:30.261466139 +0000
@@ -52,9 +52,9 @@
 
     initControls();
 
-    connect(ui->qtComboBox, &QComboBox::activated, this, &StyleConfig::settingsChanged);
-    connect(ui->toolButtonStyle, &QComboBox::activated, this, &StyleConfig::settingsChanged);
-    connect(ui->toolBarIconSize, &QComboBox::activated, this, &StyleConfig::settingsChanged);
+    connect(ui->qtComboBox, QOverload<int>::of(&QComboBox::activated), this, &StyleConfig::settingsChanged);
+    connect(ui->toolButtonStyle, QOverload<int>::of(&QComboBox::activated), this, &StyleConfig::settingsChanged);
+    connect(ui->toolBarIconSize, QOverload<int>::of(&QComboBox::activated), this, &StyleConfig::settingsChanged);
     connect(ui->singleClickActivate, &QAbstractButton::clicked, this, &StyleConfig::settingsChanged);
 
     connect(ui->winColorLabel, &ColorLabel::colorChanged, this, &StyleConfig::settingsChanged);
diff '--color=auto' -Nur a/lxqt-config-input/keyboardconfig.cpp b/lxqt-config-input/keyboardconfig.cpp
--- a/lxqt-config-input/keyboardconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-input/keyboardconfig.cpp	2025-11-06 06:44:30.261678447 +0000
@@ -59,7 +59,7 @@
   // set_range_stops(ui.keyboardInterval, 10);
   connect(ui.keyboardInterval, &QAbstractSlider::valueChanged, this, &KeyboardConfig::settingsChanged);
   connect(ui.keyboardBeep, &QAbstractButton::clicked, this, &KeyboardConfig::settingsChanged);
-  connect(ui.cursorFlashTime, &QSpinBox::valueChanged, this, &KeyboardConfig::settingsChanged);
+  connect(ui.cursorFlashTime, QOverload<int>::of(&QSpinBox::valueChanged), this, &KeyboardConfig::settingsChanged);
   connect(ui.keyboardNumLock, &QAbstractButton::clicked, this, &KeyboardConfig::settingsChanged);
 
   if (QGuiApplication::platformName() == QLatin1String("wayland"))
diff '--color=auto' -Nur a/lxqt-config-input/keyboardlayoutconfig.cpp b/lxqt-config-input/keyboardlayoutconfig.cpp
--- a/lxqt-config-input/keyboardlayoutconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-input/keyboardlayoutconfig.cpp	2025-11-06 06:44:30.261834099 +0000
@@ -40,11 +40,11 @@
   connect(ui.removeLayout, &QAbstractButton::clicked, this, &KeyboardLayoutConfig::onRemoveLayout);
   connect(ui.moveUp, &QAbstractButton::clicked, this, &KeyboardLayoutConfig::onMoveUp);
   connect(ui.moveDown, &QAbstractButton::clicked, this, &KeyboardLayoutConfig::onMoveDown);
-  connect(ui.keyboardModel, &QComboBox::activated, [this](int /*index*/) {
+  connect(ui.keyboardModel, QOverload<int>::of(&QComboBox::activated), [this](int /*index*/) {
     applyConfig_ = true;
     Q_EMIT settingsChanged();
   });
-  connect(ui.switchKey, &QComboBox::activated, [this](int /*index*/) {
+  connect(ui.switchKey, QOverload<int>::of(&QComboBox::activated), [this](int /*index*/) {
     applyConfig_ = true;
     Q_EMIT settingsChanged();
   });
diff '--color=auto' -Nur a/lxqt-config-input/mouseconfig.cpp b/lxqt-config-input/mouseconfig.cpp
--- a/lxqt-config-input/mouseconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-input/mouseconfig.cpp	2025-11-06 06:44:30.261993518 +0000
@@ -55,8 +55,8 @@
   initControls();
 
   connect(ui.mouseLeftHanded, &QAbstractButton::clicked, this, &MouseConfig::settingsChanged);
-  connect(ui.doubleClickInterval, &QSpinBox::valueChanged, this, &MouseConfig::settingsChanged);
-  connect(ui.wheelScrollLines, &QSpinBox::valueChanged, this, &MouseConfig::settingsChanged);
+  connect(ui.doubleClickInterval, QOverload<int>::of(&QSpinBox::valueChanged), this, &MouseConfig::settingsChanged);
+  connect(ui.wheelScrollLines, QOverload<int>::of(&QSpinBox::valueChanged), this, &MouseConfig::settingsChanged);
   connect(ui.singleClick, &QAbstractButton::clicked, this, &MouseConfig::settingsChanged);
 
   if (QGuiApplication::platformName() == QLatin1String("wayland"))
diff '--color=auto' -Nur a/lxqt-config-input/touchpadconfig.cpp b/lxqt-config-input/touchpadconfig.cpp
--- a/lxqt-config-input/touchpadconfig.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-input/touchpadconfig.cpp	2025-11-06 06:44:30.262164027 +0000
@@ -47,12 +47,12 @@
 
     initControls();
 
-    connect(ui.devicesComboBox, &QComboBox::currentIndexChanged, this,
-            [this] (int /*index*/) { initControls(); }); // update GUI on device change
+    connect(ui.devicesComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
+            this, [this] (int/* index*/) { initControls(); }); // update GUI on device change
     connect(ui.tappingEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
     connect(ui.naturalScrollingEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
     connect(ui.tapToDragEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
-    connect(ui.accelSpeedDoubleSpinBox, &QDoubleSpinBox::valueChanged, this, &TouchpadConfig::settingsChanged);
+    connect(ui.accelSpeedDoubleSpinBox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &TouchpadConfig::settingsChanged);
     connect(ui.noScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
     connect(ui.twoFingerScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
     connect(ui.edgeScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
diff '--color=auto' -Nur a/lxqt-config-input/touchpadconfig.cpp.orig b/lxqt-config-input/touchpadconfig.cpp.orig
--- a/lxqt-config-input/touchpadconfig.cpp.orig	1970-01-01 01:00:00.000000000 +0100
+++ b/lxqt-config-input/touchpadconfig.cpp.orig	2025-11-05 11:47:23.000000000 +0000
@@ -0,0 +1,239 @@
+/*
+    Copyright (C) 2016-2018 Chih-Hsuan Yen <yan12125@gmail.com>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+#include "touchpadconfig.h"
+#include "touchpaddevice.h"
+
+#include <cmath>
+
+#include <QDebug>
+#include <QFile>
+#include <QString>
+#include <QUrl>
+
+#include <XdgDirs>
+
+#include <LXQt/AutostartEntry>
+#include <LXQt/Settings>
+
+using namespace Qt::Literals::StringLiterals;
+
+TouchpadConfig::TouchpadConfig(LXQt::Settings* _settings, QWidget* parent):
+    QWidget(parent),
+    settings(_settings)
+{
+    ui.setupUi(this);
+
+    devices = TouchpadDevice::enumerate_from_udev();
+    for (const TouchpadDevice& device : std::as_const(devices))
+    {
+        ui.devicesComboBox->addItem(device.name());
+    }
+
+    initControls();
+
+    connect(ui.devicesComboBox, &QComboBox::currentIndexChanged, this,
+            [this] (int /*index*/) { initControls(); }); // update GUI on device change
+    connect(ui.tappingEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.naturalScrollingEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.tapToDragEnabledCheckBox, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.accelSpeedDoubleSpinBox, &QDoubleSpinBox::valueChanged, this, &TouchpadConfig::settingsChanged);
+    connect(ui.noScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.twoFingerScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.edgeScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+    connect(ui.buttonScrollingRadioButton, &QAbstractButton::clicked, this, &TouchpadConfig::settingsChanged);
+}
+
+TouchpadConfig::~TouchpadConfig()
+{
+}
+
+void TouchpadConfig::initFeatureControl(QCheckBox* control, int featureEnabled)
+{
+    if (featureEnabled >= 0)
+    {
+        control->setEnabled(true);
+        control->setCheckState(featureEnabled ? Qt::Checked : Qt::Unchecked);
+    }
+    else
+    {
+        control->setEnabled(false);
+    }
+}
+
+void TouchpadConfig::initControls()
+{
+    int curDevice = ui.devicesComboBox->currentIndex();
+    if (curDevice < 0) {
+        return;
+    }
+
+    const TouchpadDevice& device = devices[curDevice];
+    initFeatureControl(ui.tappingEnabledCheckBox, device.tappingEnabled());
+    initFeatureControl(ui.naturalScrollingEnabledCheckBox, device.naturalScrollingEnabled());
+    initFeatureControl(ui.tapToDragEnabledCheckBox, device.tapToDragEnabled());
+
+    auto ok = device.xinputDriverSupported();
+    if (!ok) {
+      ui.deviceInfoLabel->setText(
+            tr(
+              "LXQt only supports \"libinput\" as xinput driver.\n"
+              "(current value: %1)\n"
+              "\n"
+              "If this is intended, please configure xinput manually.\n"
+              "Otherwise you can get rid of this message by changing xinput driver to \"libinput\".\n")
+            .arg(device.xinputDriver()));
+      ui.deviceInfoLabel->setStyleSheet(QStringLiteral("background-color: #f88; border-color: #f33; border-size: 1px"));
+    };
+    ui.deviceInfoLabel->setVisible(!ok);
+    ui.deviceInfoLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+
+    float accelSpeed = device.accelSpeed();
+    if (!std::isnan(accelSpeed)) {
+        ui.accelSpeedDoubleSpinBox->setEnabled(true);
+        // prevent setAccelSpeed() from being called because the device may have changed
+        ui.accelSpeedDoubleSpinBox->blockSignals(true);
+        ui.accelSpeedDoubleSpinBox->setValue(accelSpeed);
+        ui.accelSpeedDoubleSpinBox->blockSignals(false);
+    } else {
+        ui.accelSpeedDoubleSpinBox->setEnabled(false);
+    }
+
+    int scrollMethodsAvailable = device.scrollMethodsAvailable();
+    ui.twoFingerScrollingRadioButton->setEnabled(scrollMethodsAvailable & TWO_FINGER);
+    ui.edgeScrollingRadioButton->setEnabled(scrollMethodsAvailable & EDGE);
+    ui.buttonScrollingRadioButton->setEnabled(scrollMethodsAvailable & BUTTON);
+
+    ScrollingMethod scrollingMethodEnabled = device.scrollingMethodEnabled();
+    if (scrollingMethodEnabled == TWO_FINGER)
+    {
+        ui.twoFingerScrollingRadioButton->setChecked(true);
+    }
+    else if (scrollingMethodEnabled == EDGE)
+    {
+        ui.edgeScrollingRadioButton->setChecked(true);
+    }
+    else if (scrollingMethodEnabled == BUTTON)
+    {
+        ui.buttonScrollingRadioButton->setChecked(true);
+    }
+    else
+    {
+        ui.noScrollingRadioButton->setChecked(true);
+    }
+}
+
+void TouchpadConfig::accept()
+{
+    for (const TouchpadDevice& device : std::as_const(devices))
+    {
+        device.saveSettings(settings);
+    }
+
+    LXQt::AutostartEntry autoStart;
+    XdgDesktopFile desktopFile;
+
+    const QStringList dirs = XdgDirs::dataDirs();
+    auto it = dirs.cbegin();
+    for ( ;it != dirs.cend(); ++it) {
+        const QString fn = *it + "/applications/lxqt-config-touchpad-autostart.desktop"_L1;
+        if (QFile::exists(fn))
+            if (desktopFile.load(fn)) {
+                autoStart.setFile(desktopFile);
+                autoStart.commit();
+                break;
+            }
+        }
+        if (it == dirs.cend()) {
+            qWarning() << " TouchpadConfig::accept(): LXQt Config Touchpad autostart file not found";
+        }
+    autoStart.setFile(desktopFile);
+    autoStart.commit();
+}
+
+void TouchpadConfig::reset()
+{
+    for (const TouchpadDevice& device : std::as_const(devices))
+    {
+        device.setTappingEnabled(device.oldTappingEnabled());
+        device.setNaturalScrollingEnabled(device.oldNaturalScrollingEnabled());
+        device.setTapToDragEnabled(device.oldTapToDragEnabled());
+        device.setAccelSpeed(device.oldAccelSpeed());
+        device.setScrollingMethodEnabled(device.oldScrollingMethodEnabled());
+    }
+    initControls();
+    accept();
+}
+
+void TouchpadConfig::applyConfig()
+{
+    int curDevice = ui.devicesComboBox->currentIndex();
+    if (curDevice < 0) {
+        return;
+    }
+
+    bool acceptSetting = false;
+    TouchpadDevice& device = devices[curDevice];
+
+    bool enable = ui.tappingEnabledCheckBox->checkState() == Qt::Checked;
+    if (enable != (device.tappingEnabled() > 0))
+    {
+        device.setTappingEnabled(enable);
+        acceptSetting = true;
+    }
+
+    enable = ui.naturalScrollingEnabledCheckBox->checkState() == Qt::Checked;
+    if (enable != (device.naturalScrollingEnabled() > 0))
+    {
+        device.setNaturalScrollingEnabled(enable);
+        acceptSetting = true;
+    }
+
+    enable = ui.tapToDragEnabledCheckBox->checkState() == Qt::Checked;
+    if (enable != (device.tapToDragEnabled() > 0))
+    {
+        device.setTapToDragEnabled(enable);
+        acceptSetting = true;
+    }
+
+    float accelSpeed = static_cast<float>(ui.accelSpeedDoubleSpinBox->value());
+    if (accelSpeed != device.accelSpeed())
+    {
+        device.setAccelSpeed(accelSpeed);
+        acceptSetting = true;
+    }
+
+    // these radio buttons are auto-exclusive
+    ScrollingMethod m = NONE;
+    if (ui.noScrollingRadioButton->isChecked())
+        m = NONE;
+    else if (ui.twoFingerScrollingRadioButton->isChecked())
+        m = TWO_FINGER;
+    else if (ui.edgeScrollingRadioButton->isChecked())
+        m = EDGE;
+    else if (ui.buttonScrollingRadioButton->isChecked())
+        m = BUTTON;
+    if (m != device.scrollingMethodEnabled())
+    {
+        device.setScrollingMethodEnabled(m);
+        acceptSetting = true;
+    }
+
+    if (acceptSetting)
+        accept();
+}
diff '--color=auto' -Nur a/lxqt-config-monitor/monitorwidget.cpp b/lxqt-config-monitor/monitorwidget.cpp
--- a/lxqt-config-monitor/monitorwidget.cpp	2025-11-05 11:47:23.000000000 +0000
+++ b/lxqt-config-monitor/monitorwidget.cpp	2025-11-06 06:44:30.262386525 +0000
@@ -100,7 +100,7 @@
             ui.resolutionCombo->setItemData(ui.resolutionCombo->count()-1, font, Qt::FontRole);
         }
     }
-    connect(ui.resolutionCombo, &QComboBox::currentIndexChanged, this, &MonitorWidget::onResolutionChanged);
+    connect(ui.resolutionCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MonitorWidget::onResolutionChanged);
 
     // Select actual mode in list
     if (output->currentMode()) {
@@ -173,11 +173,11 @@
         break;
     }
 
-    connect(ui.enabledCheckbox,  &QCheckBox::toggled,             this, &MonitorWidget::onEnabledChanged);
-    connect(ui.behaviorCombo,    &QComboBox::currentIndexChanged, this, &MonitorWidget::onBehaviorChanged);
-    connect(ui.xPosSpinBox,      &QSpinBox::valueChanged,         this, &MonitorWidget::onPositionChanged);
-    connect(ui.yPosSpinBox,      &QSpinBox::valueChanged,         this, &MonitorWidget::onPositionChanged);
-    connect(ui.orientationCombo, &QComboBox::currentIndexChanged, this, &MonitorWidget::onOrientationChanged);
+    connect(ui.enabledCheckbox,  &QCheckBox::toggled,                                 this, &MonitorWidget::onEnabledChanged);
+    connect(ui.behaviorCombo,    QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MonitorWidget::onBehaviorChanged);
+    connect(ui.xPosSpinBox,      QOverload<int>::of(&QSpinBox::valueChanged),         this, &MonitorWidget::onPositionChanged);
+    connect(ui.yPosSpinBox,      QOverload<int>::of(&QSpinBox::valueChanged),         this, &MonitorWidget::onPositionChanged);
+    connect(ui.orientationCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MonitorWidget::onOrientationChanged);
 
     // Force update behavior visibility
     onBehaviorChanged(ui.behaviorCombo->currentIndex());
@@ -234,7 +234,7 @@
 
 void MonitorWidget::updateRefreshRates()
 {
-    disconnect(ui.rateCombo, &QComboBox::currentIndexChanged, this, &MonitorWidget::onRateChanged);
+    disconnect(ui.rateCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MonitorWidget::onRateChanged);
     ui.rateCombo->clear();
 
     if (output->modes().size() < 0)
@@ -252,7 +252,7 @@
             ui.rateCombo->setCurrentIndex(idx);
     }
 
-    connect(ui.rateCombo, &QComboBox::currentIndexChanged, this, &MonitorWidget::onRateChanged);
+    connect(ui.rateCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &MonitorWidget::onRateChanged);
 }
 
 void MonitorWidget::setOnlyMonitor(bool isOnlyMonitor)
