QSS QMenu 有无图标设置不同的缩进
时间: 2024-03-24 15:37:39 浏览: 94
可以通过设置QSS样式来实现QMenu不同缩进的图标设置,具体实现方法如下:
```
QMenu::item {
padding: 2px 20px 2px 30px; /* 设置左侧缩进为30px,右侧缩进为20px */
}
QMenu::icon:checked {
image: url(:/images/checked.png); /* 设置选中状态的图标 */
}
QMenu::icon:unchecked {
image: url(:/images/unchecked.png); /* 设置未选中状态的图标 */
}
```
在上述QSS样式中,我们可以通过设置`padding`属性来调整QMenu的缩进。同时,我们可以使用`QMenu::icon:checked`和`QMenu::icon:unchecked`伪状态来分别设置选中和未选中状态下的图标。您可以根据实际需求自定义图标的路径和样式。
相关问题
QMenu 有无图标时设置不同的缩进
可以通过设置QSS样式来实现有无图标时QMenu不同缩进的设置,具体实现方法如下:
```
QMenu::item {
padding: 2px 20px 2px 10px; /* 设置左侧有图标时的缩进为10px,右侧缩进为20px */
}
QMenu::item:!has-icon {
padding: 2px 20px 2px 30px; /* 设置左侧无图标时的缩进为30px,右侧缩进为20px */
}
```
在上述QSS样式中,我们使用了`!has-icon`伪状态来判断QMenu是否有图标。如果没有图标,则使用第二个样式来设置缩进。您可以根据实际需求自定义缩进值。
QMenu QSS 有图标和无图标时让文字对齐
在 QMenu 中,如果设置了图标,那么文字会默认垂直居中对齐,但是如果没有设置图标,那么文字会默认顶部对齐。这种差异导致了在 QMenu 中设置了图标和不设置图标时,无法通过一套 QSS 样式实现文字居中对齐。
不过,我们可以利用 QMenu 的子控件 QAbstractItemView 来实现统一的对齐方式。具体来说,可以在 QSS 样式中设置 QAbstractItemView 的对齐方式,然后将 QMenu 的子控件设置为 QAbstractItemView。
以下是一个例子,演示了如何在设置了图标和不设置图标时,让 QMenu 中的文字都居中对齐:
```python
menu = QMenu()
# 设置 QAbstractItemView 的对齐方式
menu.setStyleSheet("QAbstractItemView { padding: 5px; alignment: center; }")
# 添加带图标的 QAction
action1 = QAction(QIcon("icon.png"), "Action with Icon", menu)
menu.addAction(action1)
# 添加不带图标的 QAction
action2 = QAction("Action without Icon", menu)
menu.addAction(action2)
# 将 QMenu 的子控件设置为 QAbstractItemView
menu.view().setUniformItemSizes(True)
```
在上面的例子中,我们通过设置 QAbstractItemView 的 alignment 属性为 center,来实现子控件居中对齐。然后,通过设置 QMenu 的子控件为 QAbstractItemView,来让 QMenu 中所有子控件都继承 QAbstractItemView 的对齐方式。最后,通过设置 QMenu 的 uniformItemSizes 属性为 True,来让 QAbstractItemView 中的所有子控件都具有相同的大小。
这样,在 QMenu 中设置了图标和不设置图标时,就都可以实现文字居中对齐了。
阅读全文