【问题标题】:QTabWidget corner QToolButton widget disappearingQTabWidget 角落 QToolButton 小部件消失
【发布时间】:2013-08-11 06:20:00
【问题描述】:

我有一个带有动态添加和删除选项卡的 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);
}

【问题讨论】:

  • 你有没有在删除最后一个标签后测试 ui->tabWidget->cornerWidget() 看它是否已被移除(== 0)?
  • 是的,当 ui->tabWidget->count() == 0 时运行 qDebug() 表明它仍然存在。使用此测试更新了代码。

标签: c++ qt


【解决方案1】:

我已经解决了这个问题。您需要为 both QToolButtonQTabBar 修复最小高度。

到目前为止,我已经让这段代码在 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多