【QT笔记】QTabWidget中设置某个tab页显示或隐藏

m_frameList为QVector<QWidge *>
QTabWidget插入表页

for (int i = 0; i < 20; i++)
	{
		QWidget * m_frame = new QWidget();
		m_framList.push_back(m_frame);
		QLabel *m_label = new QLabel(m_frame);
		m_label ->setText("ssss");
		m_label ->setGeometry(1, 1, 400, 20);
		//插入表页
		ui.tabWidget->insertTab(i,m_frame,QString::number(i));
	}

QTabWidget显示

for (int i = 0; i < m_framList.size(); i++)
	{
		ui.tabWidget->insertTab(i, m_framList.at(i), QString::number(i));
	}

QTabWidget隐藏

//removeTab需要从大到小remove
for (int i = m_framList.size(); i >0 ; i--)
	{
		QWidget * m_frame = new QWidget();
		ui.tabWidget->removeTab(i);
	}
如果您想在 QTabWidget 某个 tab 时保持表头不变,可以通过设置 QTabWidget 的 `setTabBar()` 方法来实现。具体地说,您可以继承 QTabBar 类并重载它的 `paintEvent()` 方法来实现自定义的表头绘制逻辑。然后,将自定义的 QTabBar 对象设置QTabWidget 的标签栏。 以下是一个示例代码: ```python from PySide2.QtWidgets import QApplication, QTabWidget, QWidget, QVBoxLayout, QTabBar from PySide2.QtGui import QPainter, QColor from PySide2.QtCore import Qt class CustomTabBar(QTabBar): def paintEvent(self, event): painter = QPainter(self) painter.setPen(Qt.NoPen) painter.setBrush(QColor(255, 255, 255)) painter.drawRect(self.rect()) for i in range(self.count()): option = QStyleOptionTab() self.initStyleOption(option, i) if self.currentIndex() == i: option.state |= QStyle.State_Selected self.style().drawControl(QStyle.CE_TabBarTabShape, option, painter, self) class MyWidget(QWidget): def __init__(self): super().__init__() self.tab_widget = QTabWidget(self) self.tab_bar = CustomTabBar(self.tab_widget) self.tab_widget.setTabBar(self.tab_bar) self.tab_widget.addTab(QWidget(), "Tab 1") self.tab_widget.addTab(QWidget(), "Tab 2") self.tab_widget.addTab(QWidget(), "Tab 3") layout = QVBoxLayout(self) layout.addWidget(self.tab_widget) if __name__ == "__main__": app = QApplication([]) widget = MyWidget() widget.show() app.exec_() ``` 在这个例子,我们创建了一个自定义的 `CustomTabBar` 类,它继承自 QTabBar。我们重载了 `paintEvent()` 方法来绘制我们自己的表头。在 `paintEvent()` ,我们首先用白色填充整个标签栏的区域,然后绘制每个标签。在绘制当前的标签时,我们将 `option.state` 设置为 `QStyle.State_Selected`,这样它就会被高亮显示。 然后,在 `MyWidget` ,我们创建了一个 `QTabWidget` 和一个自定义的 `CustomTabBar` 对象,并将它们关联起来。最后,我们向 `QTabWidget` 添加了三个标签,并将 `QTabWidget` 放在了一个垂直布局。 注意,这个例子使用了 PySide2 库来编写 Qt 应用程序。如果您使用的是 PyQt5,代码会稍微有一些不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值