Закрытие вкладок в 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
дважды с тем же индексом, поэтому вкладка, на которую вы нажали, удаляется, а следующая...