// ============================================================================
//  qt_qss_styling —— 教学补充示例（非 wiki 生成，手工维护）
//  用途：方案书「C++方向 Day2」要求的 QSS 界面美化，仓库 p03/ 原有 wiki 抓取内容
//        未覆盖这一点，故补一个最小示例。
//  配套文档：docs/teaching/examples/qss_styling/README.md
//  离屏验证：QT_QPA_PLATFORM=offscreen tools/run_qt.sh qt_qss_styling（自动退出）
// ============================================================================

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QTimer>

class StyledPanel : public QWidget {
    Q_OBJECT
public:
    explicit StyledPanel(QWidget* parent = nullptr) : QWidget(parent) {
        auto* title = new QLabel(QStringLiteral("QSS 样式演示"), this);
        title->setObjectName("title");

        auto* okBtn = new QPushButton(QStringLiteral("确定"), this);
        okBtn->setObjectName("okButton");

        auto* cancelBtn = new QPushButton(QStringLiteral("取消"), this);
        cancelBtn->setObjectName("cancelButton");

        auto* layout = new QVBoxLayout(this);
        layout->addWidget(title);
        layout->addWidget(okBtn);
        layout->addWidget(cancelBtn);

        // 整个窗口一份样式表：按 objectName 选择器精确命中控件，
        // 也可以只用类型选择器（QPushButton { ... }）一次性套所有按钮。
        setStyleSheet(
            "QWidget { background-color: #f4f6f8; }"
            "QLabel#title { font-size: 18px; font-weight: bold; color: #2b6cb0; padding: 6px; }"
            "QPushButton { border-radius: 6px; padding: 6px 14px; color: white; }"
            "QPushButton#okButton { background-color: #2f855a; }"
            "QPushButton#okButton:hover { background-color: #276749; }"
            "QPushButton#cancelButton { background-color: #a0522d; }"
            "QPushButton#cancelButton:pressed { background-color: #7b3f22; }"
        );
    }
};

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);
    StyledPanel panel;
    panel.resize(240, 160);
    panel.show();
    // 仅在离屏自动化验证时（QT_QPA_PLATFORM=offscreen）200ms 后自动退出；
    // 正常运行（有显示环境）窗口保持打开，不自动退出。
    if (qgetenv("QT_QPA_PLATFORM") == "offscreen") {
        QTimer::singleShot(200, &app, &QApplication::quit);
    }
    return app.exec();
}

#include "qt_qss_styling.moc"
