質問
複数のタブが追加されたQt TabWidgetを含むダイアログがあります。
いずれかのタブを非表示にします。
_mytab->hide()
機能しません。他のコードはタブ内のウィジェットに依存しているため、タブとそのすべてのウィジェットを.uiファイルから削除したいだけではありません。ただし、タブコードを生成しても問題ありませんが、生成されたuic_mydialog.cppで:: insertTabを生成することはできません。 UIファイルで非表示のプロパティを設定しても機能しません。
Qt 3.3を使用しています
解決
pTabPageを削除しないQTabDialog :: removePage(QWidget * pTabPage)を使用します。これは必要なものです。
_myTabDlg->removePage(_mytab);
使用していますが、正常に動作します!
他のヒント
同じ問題が発生しました。私は次のアプローチを使用しています。
これがデータです。
genTabはQTabWidgetの名前です
tabXは、削除するタブの名前です。
(これはタブウィジェットの2番目のタブです。したがって、このタブを参照するインデックスとして「1」を使用します)
削除および追加するコードは以下のとおりです。
ui.genTab->removeTab(1); // removes the tab at the index 1 which is the second tab from left
ui.genTab->insertTab(1, ui.tabX, "<Name of TabX>"); // The tab is added back.
ここで、設計時に静的にタブを追加した場合、これを行うのは簡単です。タブにオブジェクト名が関連付けられているため、ui.tabXを使用して参照できるためです。あなたの言うことから、あなたの場合、タブは確かに設計時に静的に追加されます。
ただし、タブを動的に追加する場合は、おそらくタブをリストに保持してから、deletedTabsの別のリストを作成する必要があります。
ただし、最初の解決策が最も効果的です。 これがお役に立てば幸いです。
-Arjun