2015-04-17 29 views
6

QTabWidget tabWidget adında bir sahibim. Üç sekmesi vardır: "Temel", "Gelişmiş" ve "Geçerli Yapı". Sekmeler, widget'ta bu sırayla görüntülenir.QTabWidget'te bir sekmeyi nasıl devre dışı bırakırım?

Boole result yanlış olduğunda "Gelişmiş" sekmesini devre dışı bırakmak istiyorum.

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

Neden sekme yapmaz:, ben bunu kontrol bile aktif kalır

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

Maalesef bu kod sekmesini devre dışı bırakmaz: Ben bu kodun kadar basit olacağını düşündüm devre dışı bırakılsın mı? Bunu yapmanın başka bir yolu var mı?

Qt 5.4.0 kullanıyorum.

cevap

17

Sen üyesi işlevini setTabEnabled(int index, bool enable) kullanarak bir QTabWidget bireysel sekmeleri etkinleştirmek/devre dışı bırakabilir.

kod pasajınıza dayanarak, şu şekilde görünecektir:

bool result = false; 
if (result == false) 
{ 
    tabWidget->setTabEnabled(1, false); 
} 
+2

Ya da daha özlü: 'tabWidget-> setTabEnabled (1, sonuç);' – TonyK

1

Bu şekilde olamazsınız.

Sayfadaki tüm çocuklarda yinelemeli ve bunları devre dışı bırakmalısınız. Böyle

şey:

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

İhtiyacım olan budur. Sekme içeriğinin değişmesini engeller, ancak sekmenin görünürlüğünü korur. –

0

Sen sekme düzenini devre dışı olabilir.

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