QToolbar与QAction和&(&符号)表现得很奇怪

问题描述 投票:0回答:1

根据文档,QAction使用单个&来标记快捷键助记符但是当我在QToolbar上使用它时它不起作用。然后我尝试了&&工作和助记符出现与快捷工作正常和下划线正确显示。但根据文档,&&用于在标签中显示单个&

失败的代码

from PySide.QtGui import *
from PySide.QtCore import *
import sys
#####Custom edited example
class Main(QMainWindow):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.actionNotification = QAction(self)
        self.actionNotification.setCheckable(True)
        self.actionNotification.setChecked(False)
        self.actionNotification.setEnabled(True)
        self.actionNotification.setAutoRepeat(True)
        self.actionNotification.setVisible(True)
        self.actionNotification.setIconVisibleInMenu(False)
        self.actionNotification.setObjectName("actionNotification")
        self.toolBar = QToolBar(self)
        self.toolBar.setLayoutDirection(Qt.RightToLeft)
        self.toolBar.setStyleSheet("")
        self.toolBar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.toolBar.setObjectName("toolBar")
        self.toolBar.addAction(self.actionNotification)
        self.actionNotification.setText("&Notification") #the problem lies here
        self.actionNotification.setToolTip(
            QApplication.translate("MainWindow", "Click to see new notifications", None,
                                   QApplication.UnicodeUTF8))
if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = Main()
    form.show()
    app.exec_()

工作代码

from PySide.QtGui import *
from PySide.QtCore import *
import sys
#####Custom edited example
class Main(QMainWindow):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)
        self.actionNotification = QAction(self)
        self.actionNotification.setCheckable(True)
        self.actionNotification.setChecked(False)
        self.actionNotification.setEnabled(True)
        self.actionNotification.setAutoRepeat(True)
        self.actionNotification.setVisible(True)
        self.actionNotification.setIconVisibleInMenu(False)
        self.actionNotification.setObjectName("actionNotification")
        self.toolBar = QToolBar(self)
        self.toolBar.setLayoutDirection(Qt.RightToLeft)
        self.toolBar.setStyleSheet("")
        self.toolBar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.toolBar.setObjectName("toolBar")
        self.toolBar.addAction(self.actionNotification)
        self.actionNotification.setText("&&Notification") #this works
        self.actionNotification.setToolTip(
            QApplication.translate("MainWindow", "Click to see new notifications", None,
                                   QApplication.UnicodeUTF8))
if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = Main()
    form.show()
    app.exec_()

一个关于IRC的快速问题(那里的人真的很有帮助)证实了这是一个qt问题,因为这是pyqt4中的相同问题,并且QActionQMenu一起正常工作,问题仅存在于QToolBar

我想在这里提出这个问题进行扩展讨论,如果可能的话,要了解它为何如此表现。

tl;博士:关于QToolBar的奇怪行为应该怎么办?我想知道它为什么会这样。

任何帮助或建议都会非常棒

系统:Debian,python2.7,PySide-1.1

python qt pyqt pyside
1个回答
0
投票

要解决此错误,您可以调用QAction.setIconText("&Foo")并且将遵守助记符。

© www.soinside.com 2019 - 2024. All rights reserved.