关于Qt中QTabWidget每个页面关闭按钮

如果想要让QTabWidget,每个页面都有关闭按钮,对QTabWidget设置它是否显示关闭按钮:
ui.tabWidget->setTabsClosable(true);//这样每页都会有关闭按钮

如果不想要自带的关闭按钮,可以自定义关闭按钮:
((QTabBar*)(ui.tabWidget->tabBar()))->setTabButton(ui.tabWidget->indexof(QWidget*), QTabBar::RightSide, 自定义的关闭按钮)
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以通过继承QTabWidget并重写tabBar的paintEvent和mousePressEvent方法,来实现在每个Tab选项卡增加一个关闭按钮,并且点击该关闭按钮后可以关闭当前Tab页面。 下面是一个简单的示例代码: ```python from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QTabBar, QTabWidget, QWidget, QPushButton class CloseableTabWidget(QTabWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.tabBar().setTabButton(0, QTabBar.RightSide, None) # 将第一个Tab关闭按钮禁用 def tabInserted(self, index): super().tabInserted(index) close_button = QPushButton('×', self.tabBar()) close_button.setObjectName('tab_close_button') close_button.clicked.connect(lambda: self.close_tab(index)) self.tabBar().setTabButton(index, QTabBar.RightSide, close_button) def close_tab(self, index): widget_to_remove = self.widget(index) self.removeTab(index) widget_to_remove.setParent(None) widget_to_remove.deleteLater() class Example(QWidget): def __init__(self): super().__init__() self.init_ui() def init_ui(self): self.setGeometry(300, 300, 400, 300) tab_widget = CloseableTabWidget() tab_widget.addTab(QWidget(), 'Tab 1') tab_widget.addTab(QWidget(), 'Tab 2') tab_widget.addTab(QWidget(), 'Tab 3') layout = QVBoxLayout(self) layout.addWidget(tab_widget) if __name__ == '__main__': import sys from PyQt5.QtWidgets import QApplication, QVBoxLayout app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_()) ``` 在上述代码,我们继承了QTabWidget,并重写了tabInserted方法,在每个Tab选项卡增加一个关闭按钮。在关闭按钮被点击时,我们调用了自定义的close_tab方法,将对应的Tab页面QTabWidget删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pailugou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值