创建暗模式主要涉及修改 QPalette 的颜色方案,可以通过以下代码实现:
// 1. 在 main 函数中设置 QApp 的 palette 颜色方案
#include
#include
#include
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 设置暗模式颜色方案
QPalette darkPalette;
QColor darkColor = QColor(45, 45, 45);
QColor disabledColor = QColor(127, 127, 127);
darkPalette.setColor(QPalette::Window, darkColor);
darkPalette.setColor(QPalette::WindowText, Qt::white);
darkPalette.setColor(QPalette::Base, QColor(18, 18, 18));
darkPalette.setColor(QPalette::AlternateBase, darkColor);
darkPalette.setColor(QPalette::ToolTipBase, Qt::white);
darkPalette.setColor(QPalette::ToolTipText, Qt::white);
darkPalette.setColor(QPalette::Text, Qt::white);
darkPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledColor);
darkPalette.setColor(QPalette::Button, darkColor);
darkPalette.setColor(QPalette::ButtonText, Qt::white);
darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledColor);
darkPalette.setColor(QPalette::BrightText, Qt::red);
darkPalette.setColor(QPalette::Link, QColor(42, 130, 218));
darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218));
darkPalette.setColor(QPalette::Disabled, QPalette::Highlight, disabledColor);
app.setPalette(darkPalette);
// 设置应用风格为被选中的主题风格
QString styleSheet = QApplication::styleSheet();
if (styleSheet.contains("Fusion")) {
QPalette palette;
palette.setColor(QPalette::Window, darkColor);
palette.setColor(QPalette::WindowText, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::WindowText, disabledColor);
palette.setColor(QPalette::Base, QColor(18, 18, 18));
palette.setColor(QPalette::AlternateBase, darkColor);
palette.setColor(QPalette::ToolTipBase, Qt::white);
palette.setColor(QPalette::ToolTipText, Qt::white);
palette.setColor(QPalette::Text, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::WindowText, disabledColor);
palette.setColor(QPalette::Button, darkColor);
palette.setColor(QPalette::ButtonText, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::ButtonText, disabledColor);