// ============================================================================ // 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 #include #include #include #include #include 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(); // 离屏/自动化验证:200ms 后自动退出(GUI 模式下不阻塞) QTimer::singleShot(200, &app, &QApplication::quit); return app.exec(); } #include "qt_qss_styling.moc"