使用Python 3.2x和PyQT 4.8x:
我初始化了一个操作并分配给一个菜单项:
self.__actionOpen = QtGui.QAction(self.__mw)
self.__actionOpen.setObjectName("actionOpen")
self.__actionOpen.setText("OpenFile")
QtCore.QObject.connect(self.__actionOpen, QtCore.SIGNAL("triggered()"), self.__accessFile)
self.__menuFile.addAction(self.__actionOpen)
Works fine-菜单项有标题“OpenFile”,并调用操作信号/插槽。
我用一个QPushButton尝试过-相同的QAction对象:
self.__buttonFile.addAction(self.__actionOpen)
什么都没有:按钮上没有标题,单击时什么也不会发生。
操作不适用于QButton(addAction调用没有抱怨…)?还是我的代码有问题?也许“trigged()”信号不适合与QPushButton交互的操作?
正如在其他回答中指出的,添加一个操作不会在单击按钮时“运行”该操作,这是按设计的。如果您所追求的是重用或引用QAction的行为,您可以将
QPushButton
的clicked()
信号连接到QAction
的trigger()
:这样,只要单击
self.menuFile
按钮,就会触发self.__actionOpen
操作。您可以创建一个按钮操作:
h文件:
cpp文件:
不能按所需方式将
QAction
分配给QPushButton
。QPushButton
没有重新定义addAction
,因此行为来自QWidget.addAction
,它将操作添加到按钮的上下文菜单中。但是,您可以使用^{} 将操作分配给
QToolButton
,这将更改按钮标题并在单击时触发操作。也可以通过子类化
QPushButton
并添加一个setDefaultAction
方法手动完成,该方法将根据操作(标题、工具提示…)更改按钮中的所有内容,并将相关按钮的信号连接到操作的插槽。相关问题 更多 >
编程相关推荐