PyQt:将QTabWidget.tabClos​​eRequested连接到插槽的正确方法

时间:2014-02-08 00:06:37

标签: qt user-interface pyqt

我有一个带有QTabWidget的简单示例PyQt应用程序。我无法将QTabWidget的tabClos​​eRequested信号连接到插槽,以便正确关闭选项卡:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Application(object):
    def __init__(self):
        app = QApplication(sys.argv)

        self.window = QMainWindow()

        self.notebook = QTabWidget()
        self.notebook.tabBar().setTabsClosable(True)
        self.notebook.tabBar().setMovable(True)

        self.notebook.tabCloseRequested.connect(self.close_handler)

        self.window.setCentralWidget(self.notebook)

        page1 = QWidget()
        self.notebook.addTab(page1, "page1")
        page2 = QWidget()
        self.notebook.addTab(page2, "page2")

        self.window.show()
        sys.exit(app.exec_())

    def close_handler(self, index):
        print "close_handler called, index = %s" % index
        self.notebook.removeTab(index)

if __name__ == "__main__":
    app = Application()                               

当我点击关闭按钮时,没有任何反应。甚至不应该调用打印!我做错了什么?

1 个答案:

答案 0 :(得分:5)

您需要在标签小部件上调用setTabsClosable(True),而不是标签栏:

    self.notebook.setTabsClosable(True)

(PS:close_handler方法也缺少self参数。)