diff --git a/settingsdialog/optionpage.cpp b/settingsdialog/optionpage.cpp index 383247b..bdd8eab 100644 --- a/settingsdialog/optionpage.cpp +++ b/settingsdialog/optionpage.cpp @@ -1,11 +1,14 @@ #include "./optionpage.h" #include +#include #include #include #include #include +#include + namespace QtUtilities { /*! @@ -81,12 +84,26 @@ bool OptionPage::matches(const QString &searchKeyWord) m_keywords << groupBox->title(); m_keywordsInitialized = true; } - for (const QString &keyword : m_keywords) + for (const QString &keyword : std::as_const(m_keywords)) if (keyword.contains(searchKeyWord, Qt::CaseInsensitive)) return true; return false; } +/*! + * \brief Emits the paletteChanged() signal. + */ +bool OptionPageWidget::event(QEvent *event) +{ + switch (event->type()) { + case QEvent::PaletteChange: + emit paletteChanged(); + break; + default:; + } + return QWidget::event(event); +} + /*! * \fn OptionPage::apply() * \brief Applies altered settings. diff --git a/settingsdialog/optionpage.h b/settingsdialog/optionpage.h index 39c8b10..99a64c0 100644 --- a/settingsdialog/optionpage.h +++ b/settingsdialog/optionpage.h @@ -12,6 +12,24 @@ namespace QtUtilities { class SettingsDialog; +class QT_UTILITIES_EXPORT OptionPageWidget : public QWidget { + Q_OBJECT + +public: + explicit OptionPageWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); + +Q_SIGNALS: + void paletteChanged(); + +protected: + bool event(QEvent *) override; +}; + +inline OptionPageWidget::OptionPageWidget(QWidget *parent, Qt::WindowFlags f) + : QWidget(parent, f) +{ +} + class QT_UTILITIES_EXPORT OptionPage { friend class SettingsDialog; @@ -125,7 +143,7 @@ template UiFileBasedOptionPage::~UiFileBasedOptionPage( */ template QWidget *UiFileBasedOptionPage::setupWidget() { - QWidget *widget = new QWidget(); + QWidget *widget = new OptionPageWidget(); if (!m_ui) { m_ui.reset(new UiClass); }