Qt TabWidgetに以前に追加されたタブを非表示にします

StackOverflow https://stackoverflow.com/questions/207881

  •  03-07-2019
  •  | 
  •  

質問

複数のタブが追加された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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top