如何解决宽度、高度和边距在 PySide6 的 QT 样式表中不起作用
所以我在样式表中有一个名为 main.qss
的 Qt StyleSheet 我试图设置宽度和高度它不起作用它只是保持不变。 Margins 也会发生同样的情况。
这里是 QSS:
QFrame#mainFrame {
background-color: #282C34;
}
QFrame#menuFrame {
background-color: #21252B;
}
QPushButton.menuButton {
background-color: #21252B;
padding-left: 12px;
padding-top: 1px;
padding-bottom: 1px;
border: 0;
font-family: "Times New Roman";
font-size: 20pt;
color: #FFFFFF;
width: 300pt; <-- Problem here
height: 15px; <-- Problem here
}
QPushButton.menuButton:hover {
background-color: #282C34;
}
QPushButton.menuButton:pressed {
background-color: #BD93F9;
}
这是我的 QPushButton:
self.menu_toggle_button = QtWidgets.QPushButton(self.menu_frame)
self.menu_toggle_button.setIcon(QtGui.QPixmap("menu_icons/menu.png"))
self.menu_toggle_button.setText(" Hide")
self.menu_toggle_button.setObjectName("menuToggleButton")
self.menu_toggle_button.setProperty("class","menuButton")
self.menu_toggle_button.setIconSize(QtCore.QSize(20,20))
那我做错了什么?
我知道这是可行的,因为在 Qt 样式表参考中,可以在这里找到:https://doc.qt.io/qtforpython-6/overviews/stylesheet-reference.html?highlight=stylesheet,它说 QPushButton 支持宽度、高度和边距。
解决方法
您的样式表不起作用有两个原因:
-
width
(和height
)属性通常不适用于小部件,而仅适用于子控件,如 explained in the docs:
警告:除非另有说明,否则此属性在小部件上设置时无效。如果您想要一个固定宽度的小部件,请将 min-width 和 max-width 设置为相同的值。
- “点”分隔符在 python 中不起作用,但在 css 中起作用:它是一个 class selector:
.QPushButton
匹配 QPushButton 的实例,但不匹配其子类。
如果要匹配 objectName
属性,则需要 ID 选择器:
QPushButton#menuButton {...}
考虑到虽然 Qt 样式表支持这些属性,但通常最好将这些设置留给布局管理器并直接使用小部件功能(setFixedSize()
、setFixedWidth()
、setFixedHeight()
) .
最后,边距不起作用,因为您使用了填充。 Qt 也对 Box Model 使用与 CSS 相同的概念:
因此,您设置的内边距位于按钮的边框和内容(图标和/或文本,即 QStyle {{1} } 子元素)。您正在寻找的是边距。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。