0

所以我一直在一些网站上寻找关闭标签的函数的代码示例。我将选项卡设置为可关闭(这非常好),但我遇到的问题是,当我关闭选项卡(特别是第二个选项卡以后)时,它会关闭该选项卡之后的每个选项卡。

我的标题:

private slots:
void on_btn_newTab_clicked();
void on_tabWidget_tabCloseRequested(int index);

我的cp:

void MainWindow::on_tabWidget_tabCloseRequested(int index)
{
    connect(ui -> tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTab(int)));
}

void MainWindow::closeTab(int index)
{
    ui -> tabWidget -> removeTab(index);
}

我错过了什么吗?我以为是因为我没有指定索引来关闭特定选项卡,但后来我认为这个插槽的参数是我需要的索引。我错了吗?

4

1 回答 1

0

我不认为连接部分是正确的..

on_tabWidget_tabCloseRequested(int index)你应该调用ui->tabWidget->removeTab(index)不连接信号..

我认为您创建了额外的信号,这就是为什么您在尝试关闭标签后删除所有标签的原因。

编辑:

稍微扩展一下:

我认为,在第一次单击时不会删除任何选项卡,但是您创建一个连接以删除带有on_tabWidget_tabCloseRequested(int index). 在您第二次尝试时,创建一个连接on_tabWidget_tabCloseRequested(int index)并调用closeTab. 第三次尝试创建另一个连接并closeTab使用相同的索引调用两次,因此您单击的选项卡被删除,下一个...

于 2013-12-05T20:24:31.153 回答