我已经在QtabWidget中创建了选项卡.我的主要目的是隐藏标签并在按下按钮时显示它.我不想每次都删除和添加标签.我想隐藏它并在需要时显示.
我试过这样做:
self.tab.hide()
但这不起作用.这是当前GUI的代码:
MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(680, 425) self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget.setObjectName(_fromUtf8("centralwidget")) self.verticalLayout_3 = QtGui.QVBoxLayout(self.centralwidget) self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) self.tabWidget = QtGui.QTabWidget(self.centralwidget) self.tabWidget.setObjectName(_fromUtf8("tabWidget")) self.tab = QtGui.QWidget() self.tab.setObjectName(_fromUtf8("tab")) self.verticalLayout_4 = QtGui.QVBoxLayout(self.tab) self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4")) self.pushButton_3 = QtGui.QPushButton(self.tab) self.pushButton_3.setObjectName(_fromUtf8("pushButton_3")) self.verticalLayout_4.addWidget(self.pushButton_3) self.tabWidget.addTab(self.tab, _fromUtf8("")) self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName(_fromUtf8("tab_2")) self.verticalLayout_5 = QtGui.QVBoxLayout(self.tab_2) self.verticalLayout_5.setObjectName(_fromUtf8("verticalLayout_5")) self.treeWidget = QtGui.QTreeWidget(self.tab_2) self.treeWidget.setObjectName(_fromUtf8("treeWidget")) self.verticalLayout_5.addWidget(self.treeWidget) self.tabWidget.addTab(self.tab_2, _fromUtf8("")) self.verticalLayout_3.addWidget(self.tabWidget) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 680, 21)) self.menubar.setObjectName(_fromUtf8("menubar")) MainWindow.setMenuBar(self.menubar) self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar.setObjectName(_fromUtf8("statusbar")) MainWindow.setStatusBar(self.statusbar) self.dockWidget = QtGui.QDockWidget(MainWindow) self.dockWidget.setObjectName(_fromUtf8("dockWidget")) self.dockWidgetContents = QtGui.QWidget() self.dockWidgetContents.setObjectName(_fromUtf8("dockWidgetContents")) self.verticalLayout = QtGui.QVBoxLayout(self.dockWidgetContents) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.pushButton = QtGui.QPushButton(self.dockWidgetContents) self.pushButton.setObjectName(_fromUtf8("pushButton")) self.verticalLayout.addWidget(self.pushButton) self.dockWidget.setWidget(self.dockWidgetContents) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget) self.dockWidget_2 = QtGui.QDockWidget(MainWindow) self.dockWidget_2.setObjectName(_fromUtf8("dockWidget_2")) self.dockWidgetContents_2 = QtGui.QWidget() self.dockWidgetContents_2.setObjectName(_fromUtf8("dockWidgetContents_2")) self.verticalLayout_2 = QtGui.QVBoxLayout(self.dockWidgetContents_2) self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) self.pushButton_2 = QtGui.QPushButton(self.dockWidgetContents_2) self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) self.verticalLayout_2.addWidget(self.pushButton_2) self.lineEdit = QtGui.QLineEdit(self.dockWidgetContents_2) self.lineEdit.setObjectName(_fromUtf8("lineEdit")) self.verticalLayout_2.addWidget(self.lineEdit) self.dockWidget_2.setWidget(self.dockWidgetContents_2) MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget_2)
Mel.. 7
没有方便的方法来隐藏选项卡.您有两种解决方法:
使用removeTab
和insertTab
.您需要保留对已删除的选项卡的引用,以便以后能够重新插入它们(以及它们的索引,以便它们重新出现在同一位置).
使用setTabEnabled
启用(=显示)和残疾人(=隐藏)选项卡.禁用选项卡时,它通常显示为灰色,但您可以使用样式表来隐藏选项卡:
self.setTabEnabled(tabIndex,True/False) #enable/disable the tab # set the style sheet self.setStyleSheet("QTabBar::tab::disabled {width: 0; height: 0; margin: 0; padding: 0; border: none;} ")
我测试了第二个选项,并呈现出先前隐藏的标签时,有一个问题:认为没有(甚至称后正常粉刷update
或repaint
).事实证明样式表不会自动更新,它仍然会像禁用它一样绘制标签.每次
调用setStyleSheet
后都会setTabEnabled(index,True)
解决问题.它强制样式表重新计算.
没有方便的方法来隐藏选项卡.您有两种解决方法:
使用removeTab
和insertTab
.您需要保留对已删除的选项卡的引用,以便以后能够重新插入它们(以及它们的索引,以便它们重新出现在同一位置).
使用setTabEnabled
启用(=显示)和残疾人(=隐藏)选项卡.禁用选项卡时,它通常显示为灰色,但您可以使用样式表来隐藏选项卡:
self.setTabEnabled(tabIndex,True/False) #enable/disable the tab # set the style sheet self.setStyleSheet("QTabBar::tab::disabled {width: 0; height: 0; margin: 0; padding: 0; border: none;} ")
我测试了第二个选项,并呈现出先前隐藏的标签时,有一个问题:认为没有(甚至称后正常粉刷update
或repaint
).事实证明样式表不会自动更新,它仍然会像禁用它一样绘制标签.每次
调用setStyleSheet
后都会setTabEnabled(index,True)
解决问题.它强制样式表重新计算.