Python PyQt4:如何/何时从QTabWidget的子类发出自定义信号?

Python PyQt4:如何/何时从QTabWidget的子类发出自定义信号?,python,pyqt,pyqt4,Python,Pyqt,Pyqt4,我有一个带有QTabWidget的UI,其最后一个选项卡允许用户添加一个新选项卡,如Firefox: 但是我不能完全得到我需要的行为。现在,我已经使用了信号currentChanged(int),但正如其名称所述,如果用户在“+”选项卡上单击两次,它将仅第一次发出信号。我希望我自制的addTab方法在每次单击“+”选项卡时启动,而不仅仅是在当前选项卡更改时启动 所以我想创建一个QTableWidget的子类来添加一个自制的信号,例如tabClicked。但我不明白信号是什么时候发出的。这就是我

我有一个带有QTabWidget的UI,其最后一个选项卡允许用户添加一个新选项卡,如Firefox:

但是我不能完全得到我需要的行为。现在,我已经使用了信号
currentChanged(int)
,但正如其名称所述,如果用户在“+”选项卡上单击两次,它将仅第一次发出信号。我希望我自制的
addTab
方法在每次单击“+”选项卡时启动,而不仅仅是在当前选项卡更改时启动

所以我想创建一个QTableWidget的子类来添加一个自制的信号,例如
tabClicked
。但我不明白信号是什么时候发出的。这就是我到目前为止所做的:

from PyQt4 import QtGui
from PyQt4.QtCore import pyqtSignal

class QTableWidgetClickable(QtGui.QTabWidget):
    tabClicked = pyqtSignal(int)

    def __init__(self, parent=None):
        super(QTableWidgetClickable, self).__init__(parent)

    def tabClicked(self):
        print "tab clicked!"
我应该用类似于
self.emit(SIGNAL(“tabClicked(int)”)
的东西发射吗?但是什么时候?我如何让计算机明白我只在单击选项卡时才需要这种行为? 我把事情复杂化了吗

我很喜欢使用信号,但看起来我不太喜欢创建它们:)如果我不够清楚,请询问更多细节


提前多谢

我建议您添加如下
QPushButton

class QTableWidgetClickable(QtGui.QTabWidget):
    tabClicked = pyqtSignal(int)

    def __init__(self, parent=None):
        super(QTableWidgetClickable, self).__init__(parent)

        # add qpushbutton
        self.addButton = QtGui.QPushButton()

        # connect a signal
        self.addButton.clicked.connect(self.tabClicked)

    def tabClicked(self):
        print "tab clicked!"
def tabClicked(self):
    print "tab clicked!"
    some_intiger = 0
    self.tabClicked.emit(some_intiger)
或者你可以发出这样的信号:

class QTableWidgetClickable(QtGui.QTabWidget):
    tabClicked = pyqtSignal(int)

    def __init__(self, parent=None):
        super(QTableWidgetClickable, self).__init__(parent)

        # add qpushbutton
        self.addButton = QtGui.QPushButton()

        # connect a signal
        self.addButton.clicked.connect(self.tabClicked)

    def tabClicked(self):
        print "tab clicked!"
def tabClicked(self):
    print "tab clicked!"
    some_intiger = 0
    self.tabClicked.emit(some_intiger)
然后,您应该将这个发出的信号连接到
\uuuu init\uuuu()


可能的重复是的,确实是重复。谢谢你指出这个页面,我以前自己找不到:)QPushButton就是这样:)非常感谢。我接受这个答案!对于任何阅读本文的人,请参阅我原始问题中关于复制的注释,以了解有关将按钮移动到正确位置的更多提示。