6

いくつかのタブが追加された Qt TabWidget を含むダイアログがあります。

タブの 1 つを非表示にしたいと思います。

_mytab->hide() 

動作しません。他のコードはタブ内のウィジェットに依存しているため、.ui ファイルからタブとそのすべてのウィジェットを削除したくありません。ただし、タブ コードを生成することは問題ありませんが、生成された uic_mydialog.cpp で ::insertTab を生成することはできません。ui ファイルで隠しプロパティを設定しても機能しません。

私はQt 3.3を使用しています

4

2 に答える 2

10

私は同じ問題に遭遇しました。私は次のアプローチを使用しています。

これがデータです。

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 用に別のリストを作成する必要があります。

しかし、最初の解決策はおそらくうまくいくでしょう。お役に立てれば。

-アルジュン

于 2008-10-16T13:00:29.887 に答える
7

pTabPage を削除しない QTabDialog::r​​emovePage(QWidget* pTabPage) を使用しますが、これはあなたが望むものです。

_myTabDlg->removePage(_mytab);

私はそれを使用していますが、問題なく動作します。

于 2008-10-16T12:53:44.270 に答える