14

QTabWidget呼び出された tabWidgetがあります。「Basic」、「Advanced」、「Current Structure」の 3 つのタブがあります。タブはその順序でウィジェットに表示されます。

resultブール値がfalseのときはいつでも「詳細」タブを無効にしたい。このコードと同じくらい簡単だと思いました:

bool result = false;
if (result == false)
{
  tabWidget->widget(1)->setDisabled(true);
}

残念ながら、このコードはタブを無効にしません。チェックしても有効なままです。

tabWidget->tabBar()->isTabEnabled(1);  // This returns true

タブが無効にならないのはなぜですか? それを行う別の方法はありますか?

Qt 5.4.0 を使用しています。

4

4 に答える 4

31

メンバー関数setTabEnabled(int index, bool enable)を使用して QTabWidget の個々のタブを有効/無効にすることができます。

コード スニペットに基づくと、次のようになります。

bool result = false;
if (result == false)
{
  tabWidget->setTabEnabled(1, false);
}
于 2015-04-17T20:22:59.957 に答える
0

できません、この方法ではありません。

ページ内のすべての子を反復処理して無効にする必要があります。

このようなもの:

QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
   w->setEnabled( false ) ;
}
于 2015-04-17T19:49:00.893 に答える
-3

タブのレイアウトを無効にすることができます。

bool result = false;
if (result == false)
{
  tabWidget->widget(1)->layout()->setDisabled(true);
}
于 2015-04-17T20:24:12.947 に答える