zhilenkov Asked:2020-03-18 13:04:19 +0800 CST2020-03-18 13:04:19 +0800 CST 2020-03-18 13:04:19 +0800 CST 如何在背景中添加屏幕保护程序 772 如何在后台添加屏幕保护程序?我想在主窗口和对话框的背景中添加 .png 图片。怎么做才对? 向样式表添加了代码。QWidget{ background-image: url("/image/layer.png") no-repeat right bottom; } 背景应该是在后台,这里原来是显示在每个lable和graphicsview上。 qt 2 个回答 Voted Best Answer Sergey Tatarincev 2020-03-18T16:29:29+08:002020-03-18T16:29:29+08:00 编写样式表。图片必须放在资源中 例子: 我必须将背景徽标放在树小部件的右下角。虽然有必要固定位置,以便滚动时背景不会移动。在编辑器中设置样式表: QTreeView{ background: url(:/ico/background) no-repeat right bottom; background-size: cover; background-attachment: fixed; border-bottom-width: 5; border-right-width: 15; } 结果是这样的: 此外。 应该记住,样式是继承给后代的(考虑到对象继承)。因此,在您的示例中,QWidget 的样式将传播给所有后代(因为它们都是 QWidget 的后代)。为避免这种情况,请为特定小部件设置样式,而不是为整个窗口设置样式,或指定特定类:QTreeWidget、QFrame 等,或使用选择器。例如: QWidget[objectName="centralWidget"]{ background-image: url(":/img/bg") no-repeat right bottom; } QWidget[objectName="myFrame"]{ background-color: #ff0000; } QLineEdit{ background-color: #00ff00; } QWidget[enabled="false"]{ background-color: #0000ff; } zhilenkov 2020-03-19T22:56:17+08:002020-03-19T22:56:17+08:00 如果有人需要解决方案: QPixmap bkgnd("./image/layer.png"); bkgnd = bkgnd.scaled(size(), Qt::IgnoreAspectRatio); QPalette p = palette(); p.setBrush(QPalette::Background, bkgnd); setPalette(p);
编写样式表。图片必须放在资源中
例子:
我必须将背景徽标放在树小部件的右下角。虽然有必要固定位置,以便滚动时背景不会移动。在编辑器中设置样式表:
结果是这样的:
此外。
应该记住,样式是继承给后代的(考虑到对象继承)。因此,在您的示例中,QWidget 的样式将传播给所有后代(因为它们都是 QWidget 的后代)。为避免这种情况,请为特定小部件设置样式,而不是为整个窗口设置样式,或指定特定类:QTreeWidget、QFrame 等,或使用选择器。例如:
如果有人需要解决方案: