PyQt5 在每个选项卡旁边添加添加和删除小部件按钮

我想在 QTabWidget 的选项卡中添加按钮。

我的第一直觉是尝试获取每个选项卡的位置,然后在选项卡顶部添加按钮,但我不知道如何获取选项卡的位置!只有整个选项卡小部件。

b

我环顾四周,现在我认为我应该做的是制作一个自定义 TabBar 类,我可以在每个选项卡上放置按钮,就像标准 Qt 关闭按钮一样。

任何人都可以向我发送正确的方向吗?


白衣染霜花
浏览 506回答 1
1回答

拉莫斯之舞

好的,所以我发现了如何让它像我想要的那样工作。这实际上很简单,我制作了一个具有水平布局和两个按钮的 QWidget 类,并将其传递给 setTabButton 函数。对于任何有兴趣的人,请参阅下面的代码。import sysfrom PyQt5 import QtWidgetsfrom PyQt5.QtWidgets import QApplication, QMainWindowclass TabExample(QMainWindow):    def __init__(self):        super(TabExample, self).__init__()        self.setWindowTitle("Tab example")        # Create widgets        self.tab_widget = QtWidgets.QTabWidget()        self.setCentralWidget(self.tab_widget)        # Label's to fill widget        self.label1 = QtWidgets.QLabel("Tab 1")        self.label2 = QtWidgets.QLabel("Tab 2")        # Adding tab's        self.tab_widget.addTab(self.label1, "Tab 1")        self.tab_widget.addTab(self.label2, "Tab 2")        # Tab button's        self.right = self.tab_widget.tabBar().RightSide        self.tab_widget.tabBar().setTabButton(0, self.right, TabButtonWidget())        self.tab_widget.tabBar().setTabButton(1, self.right, TabButtonWidget())        # Tab settings        self.tab_widget.tabBar().setMovable(True)        self.show()class TabButtonWidget(QtWidgets.QWidget):    def __init__(self):        super(TabButtonWidget, self).__init__()        # Create button's        self.button_add = QtWidgets.QPushButton("+")        self.button_remove = QtWidgets.QPushButton("-")        # Set button size        self.button_add.setFixedSize(16, 16)        self.button_remove.setFixedSize(16, 16)        # Create layout        self.layout = QtWidgets.QVBoxLayout()        self.layout.setSpacing(0)        self.layout.setContentsMargins(0, 0, 0, 0)        # Add button's to layout        self.layout.addWidget(self.button_add)        self.layout.addWidget(self.button_remove)        # Use layout in widget        self.setLayout(self.layout)if __name__ == "__main__":    app = QApplication(sys.argv)    gui = TabExample()    sys.exit(app.exec_())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python