Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QApplication>
- #include <QWidget>
- #include <QPushButton>
- #include <QCheckBox>
- #include <QVBoxLayout>
- #include <QStyleHints>
- #define DARK_MODE Qt::CheckState::Checked
- #define LIGHT_MODE Qt::CheckState::Unchecked
- #define BUTTONS_ENABLED Qt::CheckState::Checked
- #define BUTTONS_DISABLED Qt::CheckState::Unchecked
- QPushButton *button1;
- QPushButton *button2;
- void toggleButtonActivation(Qt::CheckState state)
- {
- // If the state is checked, disable the buttons
- if (state == Qt::CheckState::Checked)
- {
- button1->setEnabled(true);
- button2->setEnabled(true);
- }
- else
- {
- button1->setEnabled(false);
- button2->setEnabled(false);
- }
- }
- void darkModeEnable(Qt::CheckState state)
- {
- QStyleHints *styleHints = QGuiApplication::styleHints();
- if (state == Qt::CheckState::Checked)
- {
- styleHints->setColorScheme(Qt::ColorScheme::Dark);
- }
- else
- {
- styleHints->setColorScheme(Qt::ColorScheme::Light);
- }
- }
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- // Here is the issue. If the system starts with light mode, it isn't much of a problem.
- // However, if the system starts with dark mode, the text on the buttons (if disabled) isn't visible anymore when switching to light mode.
- darkModeEnable(LIGHT_MODE); // Mode during start
- QWidget window;
- window.resize(320, 240);
- QCheckBox * checkBoxEnableButtons = new QCheckBox("Enable Buttons", &window);
- button1 = new QPushButton("Button 1", &window);
- button2 = new QPushButton("Button 2", &window);
- QCheckBox *checkBoxDarkMode = new QCheckBox("Dark Mode", &window);
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(checkBoxEnableButtons);
- layout->addWidget(button1);
- layout->addWidget(button2);
- layout->addWidget(checkBoxDarkMode);
- window.setLayout(layout);
- toggleButtonActivation(BUTTONS_DISABLED);
- checkBoxEnableButtons->setCheckState(BUTTONS_DISABLED);
- QObject::connect(checkBoxEnableButtons, &QCheckBox::checkStateChanged, &toggleButtonActivation);
- QObject::connect(checkBoxDarkMode, &QCheckBox::checkStateChanged, &darkModeEnable);
- window.show();
- return a.exec();
- }
Advertisement
Add Comment
Please, Sign In to add comment