0

そこで、タブを閉じる関数のコードの例について、いくつかのサイトについて調べてきました。タブを閉じることができるように設定しました (完全にうまくいきました) が、問題は、タブ (具体的には 2 番目のタブ以降) を閉じると、そのタブ以降のすべてのタブが閉じられることです。

私のヘッダー:

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

何か不足していますか?特定のタブを閉じるためのインデックスを指定していなかったことが原因だと思いましたが、このスロットのパラメーターが必要なインデックスであると考えました。私が間違っている?

4

1 に答える 1

0

私は接続部分が正しいとは思わない..

あなたは信号を接続しないon_tabWidget_tabCloseRequested(int index)で呼び出す必要がui->tabWidget->removeTab(index)あります..

余分なシグナルを作成していると思います。そのため、閉じようとしたタブの後にすべてのタブを削除します。

編集:

少し拡張するには:

最初のクリックではタブは削除されないと思いますが、on_tabWidget_tabCloseRequested(int index). 2 回目の試行で、 との接続を作成してon_tabWidget_tabCloseRequested(int index)を呼び出しますcloseTab。3 回目の試行では、別の接続を作成closeTabし、同じインデックスで 2 回呼び出すため、クリックしたタブが削除され、次のタブが...

于 2013-12-05T20:24:31.153 に答える