我有一个带动态添加和删除标签的QTabWidget。我还将QToolButton设置为角落小部件,以便处理其clicked()
信号上的添加事件。
虽然添加工作完全正常,从窗口小部件中删除所有选项卡会导致按钮消失。我已经尝试使用样式表来创建一个宽度为0的隐形第一个标签,但这种方法让我失望。可能是因为我在所有选项卡上都有setTabsClosable(true)
,这为关闭按钮留出了空间。
当没有标签时,当QTabBar将其高度折叠为0时,我还认为按钮正在消失。我尝试tabBar()->setMinimumHeight(30);
,但这种解决方法也没有用。有什么想法吗?
这里我的代码示例再现了问题:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QToolButton"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tabWidget->setTabsClosable(true);
ui->tabWidget->tabBar()->setMinimumHeight(30);
QToolButton *btn = new QToolButton(ui->tabWidget);
btn->setText("Add new");
btn->setCursor(Qt::ArrowCursor);
btn->setAutoRaise(true);
ui->tabWidget->setCornerWidget(btn, Qt::TopLeftCorner);
qDebug() << ui->tabWidget->cornerWidget(Qt::TopLeftCorner);
connect(ui->tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
//SLOT
void MainWindow::closeTab(int index)
{
ui->tabWidget->removeTab(index);
if(ui->tabWidget->count() == 0)
qDebug() << ui->tabWidget->cornerWidget(Qt::TopLeftCorner);
}
答案 0 :(得分:5)
我已经解决了这个问题。您需要确定 QToolButton
和QTabBar
的最小高度。
到目前为止,我已经在python中使用了这段代码:
def initialise()
# Initialise your Tab Widget however you need
self.tabCloseRequested.connect(self.removeTab)
def removeTab(self,index):
h = self.cornerWidget().height()
self.removeTab(index)
self.update()
if self.count() == 0:
self.cornerWidget().setMinimumHeight(h)
self.setMinimumHeight(h)