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を使用しています。
メンバー関数 setTabEnabled(int index、bool enable) を使用して、QTabWidgetの個々のタブを有効/無効にすることができます。
コードスニペットに基づくと、次のようになります。
bool result = false;
if (result == false)
{
tabWidget->setTabEnabled(1, false);
}
この方法ではできません。
ページ内のすべての子を反復処理して無効にする必要があります。
このようなもの:
QList<QWidget*> list = parentWidget->findChildren<QWidget*>() ;
foreach( QWidget* w, list ) {
w->setEnabled( false ) ;
}