2013-12-05 3 views
0

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

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

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

Мой каст:

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

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

+0

Почему вы даже пытаетесь закрыть вкладку самостоятельно? не QTabWidget уже заботится об этом? – nbilal

+0

Мне пришлось реализовать этот код, чтобы фактически удалить вкладки. Когда вы устанавливаете вкладки в закрываемые, все, что он делает, показывает небольшое количество кликов «x», но не обязательно закрывает вкладку, когда вы нажимаете на нее. –

ответ

0

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

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

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

EDIT:

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

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

+0

Это исправило проблему, спасибо! Кроме того, спасибо за теорию, стоящую за ней, всегда желающую узнать новые вещи! –

Смежные вопросы