我正在尝试使用QLabel.addAction()方法将QAction对象添加到QLabel对象,但它似乎不起作用。是不应该工作还是我做错了什么?
我正在尝试使用QStackedWidget制作手风琴。
为此,我需要一个章节标题,当用户按下该标题时,该标题将隐藏或显示标题的部分。我可以使用mouseReleasedEvent,但我更喜欢正确的QAction toggle()实现。也许我可以使用除QLabel以外的其他东西?
答案 0 :(得分:2)
addAction
的{{1}}功能用于提供上下文菜单,并不直接与在标签上单击鼠标时触发的操作相关。
因此,您必须使用某种mousexxxevent。
如果您更喜欢信号,这也很容易:
QWidget
或者,如果您想要一个动作,请按照以下方式进行:
from PySide.QtGui import *
from PySide.QtCore import *
class ClickableLabel(QLabel):
"""
A Label that emits a signal when clicked.
"""
clicked = Signal()
def __init__(self, *args):
super().__init__(*args)
def mousePressEvent(self, event):
self.clicked.emit()
# example
app = QApplication([])
window = QWidget()
layout = QVBoxLayout(window)
labelA = ClickableLabel('Click on me for more.')
layout.addWidget(labelA)
labelB = QLabel('Here I am.')
layout.addWidget(labelB)
labelB.hide()
labelA.clicked.connect(labelB.show)
window.show()
app.exec_()
示例是Python 3.X表示法和PySide,但是转换为Python 2.X或PyQt可能非常简单。