QT的QTabWidget如何添加控件,比如一个关闭按钮

13 篇文章 2 订阅

https://forum.qt.io/topic/22312/adding-button-to-qtabwidget-tabs

 上面链接有详细介绍。


如果要每个tab增加按钮,用SetTabButton();如果对整个tab增加一个按钮,用SetCornerWidget()


下面做一个增加Close button的例子


//mainwindows.h  QToolButton * m_tabClosebutton;

    m_tabClosebutton = new QToolButton(this);
    m_tabClosebutton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DockWidgetCloseButton));

    ui->tabWidget->setCornerWidget(m_tabClosebutton);


效果如下


  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过继承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中删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值