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

Bor*_*kov 2 user-interface qt 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()                               
Run Code Online (Sandbox Code Playgroud)

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

ekh*_*oro 5

您需要调用setTabsClosable(True)tab-widget,而不是它的tab-bar:

    self.notebook.setTabsClosable(True)
Run Code Online (Sandbox Code Playgroud)

(PS:close_handler方法也缺少一个self参数).