Закрытие вкладок в Qt, закрытие нескольких вкладок одновременно?

Так что я был на некоторых сайтах с примерами кода для функции для закрытия вкладок. Я установил вкладки на закрываемые (что прошло абсолютно нормально), но проблема у меня заключается в том, что когда я закрываю вкладки (в частности, вторая вкладка и далее), она закрывает каждую вкладку после этой.

Мой заголовок:

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

Мой cpp:

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);
}

Я что-то пропустил? Я предположил, что это потому, что я не указал индекс, чтобы закрыть конкретную вкладку, но потом я подумал, что параметром для этого слота был нужный мне индекс. Я ошибся?

1 ответ

Решение

Я не думаю, что подключить часть правильно..

На on_tabWidget_tabCloseRequested(int index) ты должен позвонить ui->tabWidget->removeTab(index) не подключить сигнал..

Я думаю, что вы создаете дополнительные сигналы, и поэтому вы удаляете все вкладки после вкладки, которую вы пытались закрыть.

РЕДАКТИРОВАТЬ:

Чтобы немного расширить:

Я думаю, что при первом нажатии никакие вкладки не удаляются, но вы создаете соединение для удаления вкладки с on_tabWidget_tabCloseRequested(int index), На второй попытки снова, создайте соединение с on_tabWidget_tabCloseRequested(int index) и позвонить closeTab, На третьей попытке вы создаете другое соединение и звоните closeTab дважды с тем же индексом, поэтому вкладка, на которую вы нажали, удаляется, а следующая...

Другие вопросы по тегам