PyQt中带有drawControl的QSS

时间:2019-01-28 18:30:32

标签: python pyqt

我正在尝试使用this code

来纠正QMenu中的快捷方式。
class MenuProxyStyle(QProxyStyle):
    def drawControl(self, element, option, painter, widget=None):
        shortcut = ""

        if element == QStyle.CE_MenuItem:
            vals = option.text.split("\t")

            if len(vals) == 2:
                text, shortcut = vals
                option.text = text
        super(MenuProxyStyle, self).drawControl(element, option, painter,
                                                widget)
        if shortcut:
            margin = 10 # QStyleHelper::dpiScaled(5)
            self.proxy().drawItemText(painter,
                                      option.rect.adjusted(margin, 0, -margin,
                                                           0),
                                      Qt.AlignRight | Qt.AlignVCenter,
                                      option.palette,
                                      option.state & QStyle.State_Enabled,
                                      shortcut, QPalette.Text)

然后,我仅使用如下所示的此类对菜单中的快捷方式进行右对齐。

self.file_menu = self.menuBar().addMenu(_("&File"))
self._proxy = MenuProxyStyle(self.file_menu.style())
self.file_menu.setStyle(self._proxy)

当未应用qdarkstylesheet时,它可以完美工作,但否则会失败,并且没有错误报告。 element == QStyle.CE_MenuItem: 使用QStyle.CE_MenuItem时元素值永远与QDarkStyle值不一致 当element14的值为QStyle.CE_MenuItem,但在QDS中报告错误,并且元素值永远不会为14。

0 个答案:

没有答案