web-dev-qa-db-ja.com

QTabWidgetの1つのタブを無効にするにはどうすればよいですか?

TabWidgetというQTabWidgetがあります。 「基本」、「詳細」、「現在の構造」の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を使用しています。

12
Joey Kleingers

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

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

bool result = false;
if (result == false)
{
  tabWidget->setTabEnabled(1, false);
}
24
Daniel Hedberg

この方法ではできません。

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

このようなもの:

QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
   w->setEnabled( false ) ;
}
1
HappyCactus