首页 > 解决方案 > 设计师小部件阴影?

问题描述

我在我的主窗口中添加了一个小部件,我想给它一个类似的节目box-shadow: 3px 3px 25px #111;

我在上面尝试通过转到小部件change stylesheet选项并添加如下代码:

background-color:#fff;
border:4px solid blue;
box-shadow: 0px -3px 5px #a6a6a6;

前两个属性给出了预期的效果,但 box-shadow 不起作用。

如何使用 Python QT Designer 并向小部件添加框阴影?

标签: pythonpyqt5qt-designerqtstylesheets

解决方案


Qt StyleSheet 不是 CSS,但它是一种实现某些功能的技术,其中不包括 box-shadow。如果你想实现类似的东西,那么你应该使用 QGraphicsDropShadowEffect:

import sys

from PyQt5.QtCore import QPoint, Qt
from PyQt5.QtGui import QColor
from PyQt5.QtWidgets import (
    QApplication,
    QGraphicsDropShadowEffect,
    QMainWindow,
    QVBoxLayout,
    QWidget,
)


def main():
    app = QApplication(sys.argv)

    main_window = QMainWindow()

    container = QWidget()
    container.setContentsMargins(3, 3, 3, 3)
    main_window.setCentralWidget(container)

    widget = QWidget()
    widget.setAutoFillBackground(True)

    lay = QVBoxLayout(container)
    lay.addWidget(widget)

    effect = QGraphicsDropShadowEffect(
        offset=QPoint(3, 3), blurRadius=25, color=QColor("#111")
    )
    widget.setGraphicsEffect(effect)

    main_window.resize(640, 480)
    main_window.show()

    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

建议您阅读 Qt Stylesheet 参考资料:


推荐阅读